using MediaBrowser.Model.Updates;
using System.Collections.Generic;
namespace MediaBrowser.Model.System
{
    /// 
    /// Class SystemInfo
    /// 
    public class SystemInfo : PublicSystemInfo
    {
        public PackageVersionClass SystemUpdateLevel { get; set; }
        /// 
        /// Gets or sets the display name of the operating system.
        /// 
        /// The display name of the operating system.
        public string OperatingSystemDisplayName { get; set; }
        /// 
        /// Gets or sets the mac address.
        /// 
        /// The mac address.
        public string MacAddress { get; set; }
        public string PackageName { get; set; }
        
        /// 
        /// Gets or sets a value indicating whether this instance has pending restart.
        /// 
        /// true if this instance has pending restart; otherwise, false.
        public bool HasPendingRestart { get; set; }
        public bool IsShuttingDown { get; set; }
        /// 
        /// Gets or sets a value indicating whether [supports library monitor].
        /// 
        /// true if [supports library monitor]; otherwise, false.
        public bool SupportsLibraryMonitor { get; set; }
        /// 
        /// Gets or sets the in progress installations.
        /// 
        /// The in progress installations.
        public InstallationInfo[] InProgressInstallations { get; set; }
        /// 
        /// Gets or sets the web socket port number.
        /// 
        /// The web socket port number.
        public int WebSocketPortNumber { get; set; }
        /// 
        /// Gets or sets the completed installations.
        /// 
        /// The completed installations.
        public InstallationInfo[] CompletedInstallations { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance can self restart.
        /// 
        /// true if this instance can self restart; otherwise, false.
        public bool CanSelfRestart { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance can self update.
        /// 
        /// true if this instance can self update; otherwise, false.
        public bool CanSelfUpdate { get; set; }
        /// 
        /// Gets or sets plugin assemblies that failed to load.
        /// 
        /// The failed assembly loads.
        public string[] FailedPluginAssemblies { get; set; }
        /// 
        /// Gets or sets the program data path.
        /// 
        /// The program data path.
        public string ProgramDataPath { get; set; }
        /// 
        /// Gets or sets the items by name path.
        /// 
        /// The items by name path.
        public string ItemsByNamePath { get; set; }
        /// 
        /// Gets or sets the cache path.
        /// 
        /// The cache path.
        public string CachePath { get; set; }
        /// 
        /// Gets or sets the log path.
        /// 
        /// The log path.
        public string LogPath { get; set; }
        /// 
        /// Gets or sets the internal metadata path.
        /// 
        /// The internal metadata path.
        public string InternalMetadataPath { get; set; }
        /// 
        /// Gets or sets the transcoding temporary path.
        /// 
        /// The transcoding temporary path.
        public string TranscodingTempPath { get; set; }
        /// 
        /// Gets or sets the HTTP server port number.
        /// 
        /// The HTTP server port number.
        public int HttpServerPortNumber { get; set; }
        /// 
        /// Gets or sets a value indicating whether [enable HTTPS].
        /// 
        /// true if [enable HTTPS]; otherwise, false.
        public bool SupportsHttps { get; set; }
        /// 
        /// Gets or sets the HTTPS server port number.
        /// 
        /// The HTTPS server port number.
        public int HttpsPortNumber { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance has update available.
        /// 
        /// true if this instance has update available; otherwise, false.
        public bool HasUpdateAvailable { get; set; }
        /// 
        /// Gets or sets a value indicating whether [supports automatic run at startup].
        /// 
        /// true if [supports automatic run at startup]; otherwise, false.
        public bool SupportsAutoRunAtStartup { get; set; }
        public string EncoderLocationType { get; set; }
        public Architecture SystemArchitecture { get; set; }
        /// 
        /// Initializes a new instance of the  class.
        /// 
        public SystemInfo()
        {
            InProgressInstallations = new InstallationInfo[] { };
            CompletedInstallations = new InstallationInfo[] { };
            FailedPluginAssemblies = new string[] { };
        }
    }
}