using StardewModdingAPI.Framework.Models;
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; }
/// Optional metadata about a mod version that SMAPI should assume is compatible or broken, regardless of whether it detects incompatible code.
ModCompatibility Compatibility { get; }
/// The metadata resolution status.
ModMetadataStatus Status { get; }
/// The reason the metadata is invalid, if any.
string Error { get; }
/// The mod instance (if it was loaded).
IMod Mod { 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);
}
}