import { DropzoneOptions, DropzoneState } from './file-dropzone.types'; /** * Headless file dropzone. Wires a hidden file input to a clickable / drag-drop * zone, validates files (size, accepted types, count, optional custom rule), * keeps the accepted set and optionally renders a previews list. Reflects drag * state via `data-state="dragging"`; no visual styling in JS. * * Markup: * ```html *
* *
Drop files or click
* *
* ``` */ export declare class FileDropzone { private readonly root; private readonly input; private readonly zone; private readonly list; private readonly errorEl; private readonly multiple; private readonly maxFiles; private readonly maxSize; private readonly acceptExt; private readonly acceptMime; private readonly validateFn?; private readonly previews; private disabled; private accepted; private errorTimer; private cleanups; constructor(root: HTMLElement, options?: DropzoneOptions); private init; private onInputChange; private onDragOver; private onDragLeave; private onDrop; private onListClick; private reject; private getErrorMessage; private setError; clearError(): void; private matchesAccept; /** Returns true if the file passes every rule; otherwise emits reject. */ private validate; private render; /** Validate and add files to the accepted set, emitting change/reject. */ addFiles(files: FileList | File[]): void; removeAt(index: number): void; /** Remove a file by reference. */ removeFile(file: File): void; clear(): void; openDialog(): void; setDisabled(disabled: boolean): void; private emitChange; get files(): File[]; getState(): DropzoneState; on(event: string, handler: (event: E) => void): () => void; destroy(): void; private formatSize; }