import type { EventPayload } from '@almadar/core';
/** Discriminated payload carried by every drag operation. */
export interface DraggablePayload {
    kind: 'pattern' | 'behavior' | 'tree-node' | 'event-wire';
    data: EventPayload;
}
export interface UseDraggableOptions {
    /** The payload that will be serialised into dataTransfer. */
    payload: DraggablePayload;
    /** When true the element cannot be dragged. */
    disabled?: boolean;
}
export interface UseDraggableResult {
    /** Spread these onto the draggable element. */
    dragProps: {
        draggable: boolean;
        onDragStart: (e: React.DragEvent) => void;
        onDragEnd: (e: React.DragEvent) => void;
        'aria-grabbed': boolean;
    };
    /** True while the element is being dragged. */
    isDragging: boolean;
}
export declare const ALMADAR_DND_MIME = "application/x-almadar-dnd";
export declare function useDraggable({ payload, disabled }: UseDraggableOptions): UseDraggableResult;
