import typing

import java.io
import java.lang
import java.net
import java.nio.channels
import java.nio.file
import java.nio.file.attribute
import java.util
import java.util.concurrent

class FileSystemProvider(java.lang.Object):
    def __init__(self) -> None: ...
    def checkAccess(self, arg1: java.nio.file.Path, /, *arg2: java.nio.file.AccessMode) -> None: ...
    def copy(self, arg1: java.nio.file.Path, arg2: java.nio.file.Path, /, *arg3: java.nio.file.CopyOption) -> None: ...
    def createDirectory(self, arg1: java.nio.file.Path, /, *arg2: java.nio.file.attribute.FileAttribute[java.lang.Object]) -> None: ...
    def createLink(self, link: java.nio.file.Path, existing: java.nio.file.Path, /) -> None: ...
    def createSymbolicLink(self, link: java.nio.file.Path, target: java.nio.file.Path, /, *attrs: java.nio.file.attribute.FileAttribute[java.lang.Object]) -> None: ...
    def delete(self, arg1: java.nio.file.Path, /) -> None: ...
    def deleteIfExists(self, path: java.nio.file.Path, /) -> bool: ...
    _getFileAttributeView__V = typing.TypeVar('_getFileAttributeView__V')  # <V>
    def getFileAttributeView(self, arg1: java.nio.file.Path, arg2: typing.Type[_getFileAttributeView__V], /, *arg3: java.nio.file.LinkOption) -> _getFileAttributeView__V: ...
    def getFileStore(self, arg1: java.nio.file.Path, /) -> java.nio.file.FileStore: ...
    def getFileSystem(self, arg1: java.net.URI, /) -> java.nio.file.FileSystem: ...
    def getPath(self, arg1: java.net.URI, /) -> java.nio.file.Path: ...
    def getScheme(self) -> str: ...
    @staticmethod
    def installedProviders() -> java.util.List[FileSystemProvider]: ...
    def isHidden(self, arg1: java.nio.file.Path, /) -> bool: ...
    def isSameFile(self, arg1: java.nio.file.Path, arg2: java.nio.file.Path, /) -> bool: ...
    def move(self, arg1: java.nio.file.Path, arg2: java.nio.file.Path, /, *arg3: java.nio.file.CopyOption) -> None: ...
    def newAsynchronousFileChannel(self, path: java.nio.file.Path, options: java.util.Set[java.nio.file.OpenOption], executor: java.util.concurrent.ExecutorService, /, *attrs: java.nio.file.attribute.FileAttribute[java.lang.Object]) -> java.nio.channels.AsynchronousFileChannel: ...
    def newByteChannel(self, arg1: java.nio.file.Path, arg2: java.util.Set[java.nio.file.OpenOption], /, *arg3: java.nio.file.attribute.FileAttribute[java.lang.Object]) -> java.nio.channels.SeekableByteChannel: ...
    def newDirectoryStream(self, arg1: java.nio.file.Path, arg2: java.nio.file.DirectoryStream.Filter[java.nio.file.Path], /) -> java.nio.file.DirectoryStream[java.nio.file.Path]: ...
    def newFileChannel(self, path: java.nio.file.Path, options: java.util.Set[java.nio.file.OpenOption], /, *attrs: java.nio.file.attribute.FileAttribute[java.lang.Object]) -> java.nio.channels.FileChannel: ...
    @typing.overload
    def newFileSystem(self, arg1: java.net.URI, arg2: java.util.Map[java.lang.String, java.lang.Object], /) -> java.nio.file.FileSystem: ...
    @typing.overload
    def newFileSystem(self, path: java.nio.file.Path, env: java.util.Map[java.lang.String, java.lang.Object], /) -> java.nio.file.FileSystem: ...
    def newInputStream(self, path: java.nio.file.Path, /, *options: java.nio.file.OpenOption) -> java.io.InputStream: ...
    def newOutputStream(self, path: java.nio.file.Path, /, *options: java.nio.file.OpenOption) -> java.io.OutputStream: ...
    _readAttributes_0__A = typing.TypeVar('_readAttributes_0__A')  # <A>
    @typing.overload
    def readAttributes(self, arg1: java.nio.file.Path, arg2: typing.Type[_readAttributes_0__A], /, *arg3: java.nio.file.LinkOption) -> _readAttributes_0__A: ...
    @typing.overload
    def readAttributes(self, arg1: java.nio.file.Path, arg2: str | java.lang.String, /, *arg3: java.nio.file.LinkOption) -> java.util.Map[java.lang.String, java.lang.Object]: ...
    def readSymbolicLink(self, link: java.nio.file.Path, /) -> java.nio.file.Path: ...
    def setAttribute(self, arg1: java.nio.file.Path, arg2: str | java.lang.String, arg3: java.lang.Object | int | bool | float | str, /, *arg4: java.nio.file.LinkOption) -> None: ...

class FileTypeDetector(java.lang.Object):
    def __init__(self) -> None: ...
    def probeContentType(self, arg1: java.nio.file.Path, /) -> str: ...
