import type { DragEndEvent, DragMoveEvent, DragStartEvent } from "@dnd-kit/core";
import type { DocumentSection } from "../../types/sections";
export interface SectionDndState {
    activeId: string | null;
    dropTarget: {
        id: string;
        position: "before" | "after";
    } | null;
    mergeTargetId: string | null;
    clearDragState: () => void;
    handleDragStart: (event: DragStartEvent) => void;
    handleDragMove: (event: DragMoveEvent) => void;
    handleDragEnd: (event: DragEndEvent) => void;
}
export interface SectionDndOptions {
    sections: DocumentSection[];
    onReorderSections: (sections: DocumentSection[]) => void;
    onMergeSections?: (sourceId: string, targetId: string) => void;
}
/**
 * Section drag-and-drop state machine.
 *
 * Tracks:
 *   - the actively dragged section id
 *   - the before/after drop indicator over a hovered item
 *   - a merge target id, set after the dragged item hovers the centre 30 %
 *     of another item for 700 ms.
 *
 * The hook is a pure state holder; callers wire its handlers into a
 * `DndContext` and supply reorder/merge callbacks for the commit step.
 */
export declare function useSectionDnd({ sections, onReorderSections, onMergeSections, }: SectionDndOptions): SectionDndState;
