import type React from 'react';
export interface DragReorderResult<T> {
    /** The reordered items array */
    items: T[];
    /** Index of the item currently being dragged (-1 if not dragging) */
    dragIndex: number;
    /** Index of the drop target (-1 if not over any target) */
    dragOverIndex: number;
    /** Whether a drag is in progress */
    isDragging: boolean;
    /** Props to spread on the drag handle element for a given index */
    getDragHandleProps: (index: number) => {
        onPointerDown: (e: React.PointerEvent) => void;
        style: React.CSSProperties;
        'aria-grabbed': boolean;
        role: string;
    };
    /** Props to spread on each list item for a given index */
    getItemProps: (index: number) => {
        onPointerMove: (e: React.PointerEvent) => void;
        onPointerUp: () => void;
        'aria-dropeffect': string;
        style: React.CSSProperties;
    };
}
export declare function useDragReorder<T>(initialItems: T[], onReorder: (fromIndex: number, toIndex: number, item: T) => void): DragReorderResult<T>;
