using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Model.IO
{
    public interface IIsoMounter : IDisposable
    {
        /// 
        /// Mounts the specified iso path.
        /// 
        /// The iso path.
        /// The cancellation token.
        /// IsoMount.
        /// isoPath
        /// Unable to create mount.
        Task Mount(string isoPath, CancellationToken cancellationToken);
        /// 
        /// Determines whether this instance can mount the specified path.
        /// 
        /// The path.
        /// true if this instance can mount the specified path; otherwise, false.
        bool CanMount(string path);
        /// 
        /// Gets a value indicating whether [requires installation].
        /// 
        /// true if [requires installation]; otherwise, false.
        bool RequiresInstallation { get; }
        /// 
        /// Gets a value indicating whether this instance is installed.
        /// 
        /// true if this instance is installed; otherwise, false.
        bool IsInstalled { get; }
        /// 
        /// Installs this instance.
        /// 
        /// Task.
        Task Install(CancellationToken cancellationToken);
        /// 
        /// Gets the name.
        /// 
        /// The name.
        string Name { get; }
    }
}