using MediaBrowser.Model.Updates;
using ProtoBuf;
using System;
namespace MediaBrowser.Model.Plugins
{
    /// 
    /// This is a serializable stub class that is used by the api to provide information about installed plugins.
    /// 
    [ProtoContract]
    public class PluginInfo
    {
        /// 
        /// Gets or sets the name.
        /// 
        /// The name.
        [ProtoMember(1)]
        public string Name { get; set; }
        /// 
        /// Gets or sets a value indicating whether [download to UI].
        /// 
        /// true if [download to UI]; otherwise, false.
        [ProtoMember(2)]
        public bool DownloadToUI { get; set; }
        /// 
        /// Gets or sets the configuration date last modified.
        /// 
        /// The configuration date last modified.
        [ProtoMember(3)]
        public DateTime ConfigurationDateLastModified { get; set; }
        /// 
        /// Gets or sets the version.
        /// 
        /// The version.
        [ProtoMember(4)]
        public string Version { get; set; }
        /// 
        /// Gets or sets the name of the assembly file.
        /// 
        /// The name of the assembly file.
        [ProtoMember(5)]
        public string AssemblyFileName { get; set; }
        /// 
        /// Gets or sets the name of the configuration file.
        /// 
        /// The name of the configuration file.
        [ProtoMember(6)]
        public string ConfigurationFileName { get; set; }
        /// 
        /// Gets or sets the description.
        /// 
        /// The description.
        [ProtoMember(7)]
        public string Description { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance is core plugin.
        /// 
        /// true if this instance is core plugin; otherwise, false.
        [ProtoMember(8)]
        public bool IsCorePlugin { get; set; }
        /// 
        /// Gets or sets the unique id.
        /// 
        /// The unique id.
        [ProtoMember(9)]
        public Guid UniqueId { get; set; }
        /// 
        /// Whether or not this plug-in should be automatically updated when a
        /// compatible new version is released
        /// 
        /// true if [enable auto update]; otherwise, false.
        [ProtoMember(10)]
        public bool EnableAutoUpdate { get; set; }
        /// 
        /// The classification of updates to which to subscribe.
        /// Options are: Dev, Beta or Release
        /// 
        /// The update class.
        [ProtoMember(11)]
        public PackageVersionClass UpdateClass { get; set; }
        /// 
        /// Gets or sets the minimum required UI version.
        /// 
        /// The minimum required UI version.
        [ProtoMember(12)]
        public string MinimumRequiredUIVersion { get; set; }
    }
}