import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
import type { TreeDragState, TreeNodeData } from './Tree';
export type TreeAllowDrop = (payload: TreeDragDropPayload) => boolean;
interface UseTreeNodeDragDropInput {
    nodeValue: string;
    hasChildren: boolean;
    isExpanded: boolean;
    data: TreeNodeData[];
    onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
    dragStateRef: React.RefObject<TreeDragState>;
    allowDrop: TreeAllowDrop | undefined;
    withDragHandle: boolean | undefined;
}
export interface TreeDragHandleProps {
    onMouseDown: (event: React.MouseEvent) => void;
}
export declare function useTreeNodeDragDrop({ nodeValue, hasChildren, isExpanded, data, onDragDrop, dragStateRef, allowDrop, withDragHandle, }: UseTreeNodeDragDropInput): {
    readonly elementProps: {};
    readonly dragHandleProps: undefined;
} | {
    elementProps: {
        draggable: boolean;
        onDragStart: (event: React.DragEvent) => void;
        onDragOver: (event: React.DragEvent) => void;
        onDragLeave: (event: React.DragEvent) => void;
        onDrop: (event: React.DragEvent) => void;
        onDragEnd: (event: React.DragEvent) => void;
    };
    dragHandleProps: TreeDragHandleProps | undefined;
};
export {};
