using StardewModdingAPI.Framework.ModData;
using StardewModdingAPI.Framework.ModLoading;
namespace StardewModdingAPI.Framework
{
/// Metadata for a mod.
internal interface IModMetadata
{
/*********
** Accessors
*********/
/// The mod's display name.
string DisplayName { get; }
/// The mod's full directory path.
string DirectoryPath { get; }
/// The mod manifest.
IManifest Manifest { get; }
/// Metadata about the mod from SMAPI's internal data (if any).
ParsedModDataRecord DataRecord { get; }
/// The metadata resolution status.
ModMetadataStatus Status { get; }
/// The reason the metadata is invalid, if any.
string Error { get; }
/// The mod instance (if loaded and is false).
IMod Mod { get; }
/// The content pack instance (if loaded and is true).
IContentPack ContentPack { get; }
/// Writes messages to the console and log file as this mod.
IMonitor Monitor { get; }
/// The mod-provided API (if any).
object Api { get; }
/// Whether the mod is a content pack.
bool IsContentPack { get; }
/*********
** Public methods
*********/
/// Set the mod status.
/// The metadata resolution status.
/// The reason the metadata is invalid, if any.
/// Return the instance for chaining.
IModMetadata SetStatus(ModMetadataStatus status, string error = null);
/// Set the mod instance.
/// The mod instance to set.
IModMetadata SetMod(IMod mod);
/// Set the mod instance.
/// The contentPack instance to set.
/// Writes messages to the console and log file.
IModMetadata SetMod(IContentPack contentPack, IMonitor monitor);
/// Set the mod-provided API instance.
/// The mod-provided API.
IModMetadata SetApi(object api);
/// Whether the mod manifest was loaded (regardless of whether the mod itself was loaded).
bool HasManifest();
/// Whether the mod has at least one update key set.
bool HasUpdateKeys();
}
}