#nullable disable
#pragma warning disable CS1591
using System;
using System.Runtime.InteropServices;
using MediaBrowser.Model.Updates;
namespace MediaBrowser.Model.System
{
    /// 
    /// Enum describing the location of the FFmpeg tool.
    /// 
    public enum FFmpegLocation
    {
        /// No path to FFmpeg found.
        NotFound,
        /// Path supplied via command line using switch --ffmpeg.
        SetByArgument,
        /// User has supplied path via Transcoding UI page.
        Custom,
        /// FFmpeg tool found on system $PATH.
        System
    };
    /// 
    /// Class SystemInfo.
    /// 
    public class SystemInfo : PublicSystemInfo
    {
        /// 
        /// Gets or sets the display name of the operating system.
        /// 
        /// The display name of the operating system.
        public string OperatingSystemDisplayName { get; set; }
        /// 
        /// Get or sets the package name.
        /// 
        /// The value of the '-package' command line argument.
        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 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; }
        public bool CanLaunchWebBrowser { get; set; }
        /// 
        /// Gets or sets the program data path.
        /// 
        /// The program data path.
        public string ProgramDataPath { get; set; }
        /// 
        /// Gets or sets the web UI resources path.
        /// 
        /// The web UI resources path.
        public string WebPath { 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 transcode path.
        /// 
        /// The transcode path.
        public string TranscodingTempPath { 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; }
        public FFmpegLocation EncoderLocation { get; set; }
        public Architecture SystemArchitecture { get; set; }
        /// 
        /// Initializes a new instance of the  class.
        /// 
        public SystemInfo()
        {
            CompletedInstallations = Array.Empty();
        }
    }
}