import abc
from System.IO import FileInfo
from System import ValueTuple_6
from System.Collections.Generic import List_1
from System.Diagnostics import Process

class DirectoryOperations(abc.ABC):
    @staticmethod
    def DirectoryCopy(_source: str, _target: str, _recursive: bool) -> None: ...


class FileState(abc.ABC):
    @staticmethod
    def IsInUse(file: FileInfo) -> bool: ...
    @staticmethod
    def WaitFile(file: FileInfo, sleepTime: int = ..., timeout: int = ...) -> None: ...


class FileSystemNavigation(abc.ABC):
    @staticmethod
    def CheckPaths(fullPath: str, relPath: str, invalidPathString: str) -> ValueTuple_6[str, str, bool, bool, bool, bool]: ...
    @staticmethod
    def ExtractNameFromPath(path: str) -> str: ...
    @staticmethod
    def GetRelativePath(fromPath: str, toPath: str) -> str: ...
    @staticmethod
    def GetSubPathContaining(fullPath: str, queryText: str, shortestPath: bool) -> str: ...
    @staticmethod
    def IsContainedIn(fullPathParent: str, fullPathChildFileOrFolder: str, elementsExist: bool = ...) -> bool: ...
    @staticmethod
    def IsFileLocked(file: FileInfo) -> bool: ...
    @staticmethod
    def IsPathFullyQualified(path: str) -> bool: ...
    @staticmethod
    def IsSubdirectoryOf(fullPathParent: str, fullPathChild: str, directoriesExist: bool = ...) -> bool: ...
    @staticmethod
    def ReconstructFullPath(fromPath: str, toPath: str, overlapPossible: bool) -> str: ...
    @staticmethod
    def SanitizePath(path: str) -> str: ...
    @staticmethod
    def SanitizeWritePath(path: str) -> str: ...


class LockTools:
    def __init__(self) -> None: ...
    @staticmethod
    def FindLockers(filename: str) -> List_1[Process]: ...

