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; }
/// >Metadata about the mod from SMAPI's internal data (if any).
ModDataRecord DataRecord { 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; }
/// The mod-provided API (if any).
object Api { 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-provided API instance.
/// The mod-provided API.
IModMetadata SetApi(object api);
}
}