import { Observable } from '@legendapp/state'; import { DeepMaybeObservable } from '@usels/core'; import { MaybeEventTarget } from '../../types.mjs'; interface UseDropZoneOptions { dataTypes?: string[] | ((types: readonly string[]) => boolean); checkValidity?: (items: DataTransferItemList) => boolean; onDrop?: (files: File[] | null, event: DragEvent) => void; onEnter?: (files: File[] | null, event: DragEvent) => void; onLeave?: (files: File[] | null, event: DragEvent) => void; onOver?: (files: File[] | null, event: DragEvent) => void; multiple?: boolean; preventDefaultForUnhandled?: boolean; } interface UseDropZoneReturn { files$: Observable; isOverDropZone$: Observable; } /** * Framework-agnostic file drop zone. * * Registers `dragenter` / `dragleave` / `dragover` / `drop` listeners on the * target via `createEventListener`, tracks drag-over state, and validates file * types before accepting drops. Must be called inside a `useScope` factory. */ declare function createDropZone(target: MaybeEventTarget, options?: DeepMaybeObservable): UseDropZoneReturn; export { type UseDropZoneOptions, type UseDropZoneReturn, createDropZone };