#nullable disable
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
namespace MediaBrowser.Model.IO
{
    /// 
    /// Interface IFileSystem.
    /// 
    public interface IFileSystem
    {
        void AddShortcutHandler(IShortcutHandler handler);
        /// 
        /// Determines whether the specified filename is shortcut.
        /// 
        /// The filename.
        /// true if the specified filename is shortcut; otherwise, false.
        bool IsShortcut(string filename);
        /// 
        /// Resolves the shortcut.
        /// 
        /// The filename.
        /// System.String.
        string ResolveShortcut(string filename);
        /// 
        /// Creates the shortcut.
        /// 
        /// The shortcut path.
        /// The target.
        void CreateShortcut(string shortcutPath, string target);
        string MakeAbsolutePath(string folderPath, string filePath);
        /// 
        /// Returns a  object for the specified file or directory path.
        /// 
        /// A path to a file or directory.
        /// A  object.
        /// If the specified path points to a directory, the returned  object's
        ///  property will be set to true and all other properties will reflect the properties of the directory.
        FileSystemMetadata GetFileSystemInfo(string path);
        /// 
        /// Returns a  object for the specified file path.
        /// 
        /// A path to a file.
        /// A  object.
        /// If the specified path points to a directory, the returned  object's
        ///  property and the  property will both be set to false.
        /// For automatic handling of files and directories, use .
        FileSystemMetadata GetFileInfo(string path);
        /// 
        /// Returns a  object for the specified directory path.
        /// 
        /// A path to a directory.
        /// A  object.
        /// If the specified path points to a file, the returned  object's
        ///  property will be set to true and the  property will be set to false.
        /// For automatic handling of files and directories, use .
        FileSystemMetadata GetDirectoryInfo(string path);
        /// 
        /// Gets the valid filename.
        /// 
        /// The filename.
        /// System.String.
        string GetValidFilename(string filename);
        /// 
        /// Gets the creation time UTC.
        /// 
        /// The information.
        /// DateTime.
        DateTime GetCreationTimeUtc(FileSystemMetadata info);
        /// 
        /// Gets the creation time UTC.
        /// 
        /// The path.
        /// DateTime.
        DateTime GetCreationTimeUtc(string path);
        /// 
        /// Gets the last write time UTC.
        /// 
        /// The information.
        /// DateTime.
        DateTime GetLastWriteTimeUtc(FileSystemMetadata info);
        /// 
        /// Gets the last write time UTC.
        /// 
        /// The path.
        /// DateTime.
        DateTime GetLastWriteTimeUtc(string path);
        /// 
        /// Swaps the files.
        /// 
        /// The file1.
        /// The file2.
        void SwapFiles(string file1, string file2);
        bool AreEqual(string path1, string path2);
        /// 
        /// Determines whether [contains sub path] [the specified parent path].
        /// 
        /// The parent path.
        /// The path.
        /// true if [contains sub path] [the specified parent path]; otherwise, false.
        bool ContainsSubPath(string parentPath, string path);
        /// 
        /// Determines whether [is root path] [the specified path].
        /// 
        /// The path.
        /// true if [is root path] [the specified path]; otherwise, false.
        bool IsRootPath(string path);
        /// 
        /// Normalizes the path.
        /// 
        /// The path.
        /// System.String.
        string NormalizePath(string path);
        /// 
        /// Gets the file name without extension.
        /// 
        /// The information.
        /// System.String.
        string GetFileNameWithoutExtension(FileSystemMetadata info);
        /// 
        /// Determines whether [is path file] [the specified path].
        /// 
        /// The path.
        /// true if [is path file] [the specified path]; otherwise, false.
        bool IsPathFile(string path);
        /// 
        /// Deletes the file.
        /// 
        /// The path.
        void DeleteFile(string path);
        /// 
        /// Gets the directories.
        /// 
        /// The path.
        /// If set to true also searches in subdirectiories.
        /// All found directories.
        IEnumerable GetDirectories(string path, bool recursive = false);
        /// 
        /// Gets the files.
        /// 
        /// The path in which to search.
        /// If set to true also searches in subdirectiories.
        /// All found files.
        IEnumerable GetFiles(string path, bool recursive = false);
        IEnumerable GetFiles(string path, IReadOnlyList extensions, bool enableCaseSensitiveExtensions, bool recursive);
        /// 
        /// Gets the file system entries.
        /// 
        /// The path.
        /// if set to true [recursive].
        /// IEnumerable<FileSystemMetadata>.
        IEnumerable GetFileSystemEntries(string path, bool recursive = false);
        /// 
        /// Gets the directory paths.
        /// 
        /// The path.
        /// if set to true [recursive].
        /// IEnumerable<System.String>.
        IEnumerable GetDirectoryPaths(string path, bool recursive = false);
        /// 
        /// Gets the file paths.
        /// 
        /// The path.
        /// if set to true [recursive].
        /// IEnumerable<System.String>.
        IEnumerable GetFilePaths(string path, bool recursive = false);
        IEnumerable GetFilePaths(string path, string[] extensions, bool enableCaseSensitiveExtensions, bool recursive);
        /// 
        /// Gets the file system entry paths.
        /// 
        /// The path.
        /// if set to true [recursive].
        /// IEnumerable<System.String>.
        IEnumerable GetFileSystemEntryPaths(string path, bool recursive = false);
        void SetHidden(string path, bool isHidden);
        void SetAttributes(string path, bool isHidden, bool readOnly);
        List GetDrives();
    }
}