using MediaBrowser.Common;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
using MediaBrowser.Model.Net;
using System.Threading;
namespace MediaBrowser.Controller
{
    /// 
    /// Interface IServerApplicationHost
    /// 
    public interface IServerApplicationHost : IApplicationHost
    {
        event EventHandler HasUpdateAvailableChanged;
        /// 
        /// Gets the system info.
        /// 
        /// SystemInfo.
        Task GetSystemInfo(CancellationToken cancellationToken);
        Task GetPublicSystemInfo(CancellationToken cancellationToken);
        bool CanLaunchWebBrowser { get; }
        /// 
        /// Gets the HTTP server port.
        /// 
        /// The HTTP server port.
        int HttpPort { get; }
        /// 
        /// Gets the HTTPS port.
        /// 
        /// The HTTPS port.
        int HttpsPort { get; }
        /// 
        /// Gets a value indicating whether [supports HTTPS].
        /// 
        /// true if [supports HTTPS]; otherwise, false.
        bool EnableHttps { get; }
        /// 
        /// Gets a value indicating whether this instance has update available.
        /// 
        /// true if this instance has update available; otherwise, false.
        bool HasUpdateAvailable { get; }
        /// 
        /// Gets the name of the friendly.
        /// 
        /// The name of the friendly.
        string FriendlyName { get; }
        /// 
        /// Gets the local ip address.
        /// 
        /// The local ip address.
        Task> GetLocalIpAddresses(CancellationToken cancellationToken);
        /// 
        /// Gets the local API URL.
        /// 
        /// The local API URL.
        Task GetLocalApiUrl(CancellationToken cancellationToken);
        /// 
        /// Gets the local API URL.
        /// 
        /// The host.
        /// System.String.
        string GetLocalApiUrl(string host);
        /// 
        /// Gets the local API URL.
        /// 
        string GetLocalApiUrl(IpAddressInfo address);
        void LaunchUrl(string url);
        void EnableLoopback(string appName);
        string PackageRuntime { get; }
        WakeOnLanInfo[] GetWakeOnLanInfo();
        string ExpandVirtualPath(string path);
        string ReverseVirtualPath(string path);
    }
}