using System.Collections.Generic;
using Newtonsoft.Json;
using StardewModdingAPI.Framework.Serialisation.SmapiConverters;
namespace StardewModdingAPI.Framework.Models
{
/// A manifest which describes a mod for SMAPI.
internal class Manifest : IManifest
{
/*********
** Accessors
*********/
/// The mod name.
public string Name { get; set; }
/// A brief description of the mod.
public string Description { get; set; }
/// The mod author's name.
public string Author { get; set; }
/// The mod version.
public ISemanticVersion Version { get; set; }
/// The minimum SMAPI version required by this mod, if any.
public ISemanticVersion MinimumApiVersion { get; set; }
/// The name of the DLL in the directory that has the method. Mutually exclusive with .
public string EntryDll { get; set; }
/// The mod which will read this as a content pack. Mutually exclusive with .
[JsonConverter(typeof(ManifestContentPackForConverter))]
public IManifestContentPackFor ContentPackFor { get; set; }
/// The other mods that must be loaded before this mod.
[JsonConverter(typeof(ManifestDependencyArrayConverter))]
public IManifestDependency[] Dependencies { get; set; }
/// The namespaced mod IDs to query for updates (like Nexus:541).
public string[] UpdateKeys { get; set; }
/// The unique mod ID.
public string UniqueID { get; set; }
/// Any manifest fields which didn't match a valid field.
[JsonExtensionData]
public IDictionary ExtraFields { get; set; }
}
}