import { DropEvent, DropzoneState, FileWithPath } from 'react-dropzone';

type DataTransferDropEvent = DropEvent & {
    dataTransfer?: DataTransfer | null;
};
type FolderNode<TFileNode = FileNode> = {
    name: string;
    nameId: string;
    pathIds: string[];
    kind: "directory";
    isBranch: true;
    path: string;
    children: (FolderNode<TFileNode> | TFileNode)[];
    handle: FileSystemDirectoryEntry | FileSystemDirectoryHandle;
};
type FolderNodeWithoutHandle<TFileNode = FileNodeWithoutHandle> = Omit<FolderNode<TFileNode>, "handle" | "children"> & {
    children: (FolderNodeWithoutHandle<TFileNode> | TFileNode)[];
};
declare const isFolderNode: <T>(node: FolderNode<T> | FolderNodeWithoutHandle<T> | FileNode | FileNodeWithoutHandle) => node is FolderNodeWithoutHandle<T>;
type FileNode = {
    name: string;
    nameId: string;
    pathIds: string[];
    kind: "file";
    isBranch: false;
    path: string;
    handle: FileSystemFileHandle | FileSystemFileEntry;
};
type FileNodeWithoutHandle = Omit<FileNode, "handle">;
type HierarchyTree = {
    emptyFolders: FolderNode[];
    allFolders: FolderNode[];
    allFiles: FileNode[];
    rootHandle: FileSystemEntry | FileSystemHandle;
    rootFolder: FolderNode | undefined;
    rootFile: FileNode | undefined;
    nameMap: Map<string, string>;
    objectMap: Map<string, FolderNode | FileNode>;
};
type HierarchyDetails<TFileNode = FileNode, TFolderNode = FolderNode> = {
    emptyFolders: TFolderNode[];
    allFolders: TFolderNode[];
    rootFolders: TFolderNode[];
    nameMap: Map<string, string>;
    objectMap: Map<string, TFileNode | TFolderNode>;
    allFiles: TFileNode[];
    rootFiles: TFileNode[];
    rootHandles: (FileSystemEntry | FileSystemHandle)[];
};
type HierarchyDetailsWithoutHandles = Omit<HierarchyDetails<FileNodeWithoutHandle, FolderNodeWithoutHandle>, "rootHandles"> & {
    objectMap: Map<string, FileNodeWithoutHandle | FolderNodeWithoutHandle>;
};
type HierarchyDetailsVariant = HierarchyDetails | HierarchyDetailsWithoutHandles;
type ProbingDropzoneOptions = {
    isFolderSelectionMode?: boolean;
};
type ProbingDropzoneState = DropzoneState & {
    isLoading: boolean;
    hierarchyDetails: HierarchyDetailsVariant;
    getFileList: (filesArray?: readonly FileWithPath[]) => FileList;
};

export { type DataTransferDropEvent as D, type FileNode as F, type HierarchyDetailsWithoutHandles as H, type ProbingDropzoneOptions as P, type FolderNode as a, type HierarchyTree as b, type HierarchyDetails as c, type FileNodeWithoutHandle as d, type FolderNodeWithoutHandle as e, type HierarchyDetailsVariant as f, type ProbingDropzoneState as g, isFolderNode as i };
