import { type AnyDragEvent } from "../../../hooks"; import { type FolderGroup } from "./utils/files"; export type { FolderGroup } from "./utils/files"; /** * Folder-shaped metadata for a directory import, never set unless `allowFolders` is. Both fields * are independently optional, so read them rather than testing the object: a folder import can * arrive with neither. */ export type FolderImport = { /** Top-level subfolder groups, set only when the import has at least one named subfolder. */ folders?: FolderGroup[]; /** * The name of the folder the user picked or dropped, whether its files sit at that folder's root * or inside subfolders. Unset when several folders are dropped at once, since the import then has * no single root folder to name it after. */ rootFolderName?: string; }; export type UseFileUploaderProps = { withCopyPaste?: boolean; disabled?: boolean; allowFolders?: boolean; acceptedFileTypes?: string[]; onDrag?: () => void; onFileChange?: (files: FileList, isShiftPressed?: boolean, isFolder?: boolean, folderImport?: FolderImport) => void | Promise; onCancel?: () => void; }; type WaitForFilesOptions = { multiple?: boolean; accept?: string[]; }; /** * Generic hook for handling file uploads via * - file picker * - drag and drop * - copy paste */ export declare const useFileUploader: ({ withCopyPaste, disabled, allowFolders, acceptedFileTypes, onDrag, onFileChange, onCancel, }: UseFileUploaderProps) => { isDragging: boolean; inputRef: import("react").RefObject; folderInputRef: import("react").RefObject; handleChange: (event: React.ChangeEvent) => void; handleFolderChange: (event: React.ChangeEvent) => void; handleDragEnter: (event: AnyDragEvent) => void; handleDragLeave: (event: AnyDragEvent) => void; handleDragOver: (event: AnyDragEvent) => void; handleDrop: (event: AnyDragEvent) => Promise; openFilePicker: () => void; openFolderPicker: () => void; resetFilePicker: () => void; waitForFiles: ({ multiple, accept, }?: WaitForFilesOptions) => Promise; waitForFile: ({ accept, }?: Pick) => Promise; }; export type FileUploader = ReturnType; //# sourceMappingURL=useFileUploader.d.ts.map