import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export interface FileDropzoneFile {
    id: string;
    file: File;
    /** Upload progress 0–100. */
    progress?: number;
    /** Lifecycle status. */
    status?: "queued" | "uploading" | "done" | "error";
    /** Per-file error message. */
    error?: string;
    /** Optional preview URL (auto-generated for images if not provided). */
    previewUrl?: string;
}
export interface FileDropzoneProps extends Omit<ComponentPropsWithoutRef<"div">, "onDrop" | "onDragOver" | "onDragEnter" | "onDragLeave" | "title" | "children"> {
    /** Trigger when files are dropped or selected. */
    onFiles?: (files: File[]) => void;
    /** Managed list of files to show inline. */
    files?: FileDropzoneFile[];
    /** Remove a file from the managed list. */
    onRemove?: (id: string) => void;
    /** Retry a failed file. */
    onRetry?: (id: string) => void;
    /** Allowed file types — same syntax as `<input accept>`. */
    accept?: string;
    /** Allow multiple file selection. */
    multiple?: boolean;
    /** Maximum file size in bytes. */
    maxSize?: number;
    /** Maximum total files. */
    maxFiles?: number;
    /** Disabled state. */
    disabled?: boolean;
    /** Title shown in the empty state. */
    title?: ReactNode;
    /** Subtitle/hint shown below title. */
    hint?: ReactNode;
    /** Custom icon. */
    icon?: ReactNode;
    /** Show "Browse files" button. */
    showBrowse?: boolean;
    /** Accept clipboard paste (Cmd+V) when the dropzone is focused. */
    pasteEnabled?: boolean;
    /** Compact variant. */
    compact?: boolean;
    className?: string;
}
export declare const FileDropzone: import("react").ForwardRefExoticComponent<FileDropzoneProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=FileDropzone.d.ts.map