import { type Ref } from 'vue';
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
import type { TreeDragState, TreeNodeData } from './Tree';
export type TreeAllowDrop = (payload: TreeDragDropPayload) => boolean;
export interface TreeDragHandleProps {
    onMousedown: (event: MouseEvent) => void;
}
interface Input {
    nodeValue: string;
    hasChildren: () => boolean;
    isExpanded: () => boolean;
    data: () => TreeNodeData[];
    onDragDrop?: (payload: TreeDragDropPayload) => void;
    dragState: Ref<TreeDragState>;
    allowDrop?: TreeAllowDrop;
    withDragHandle?: boolean;
}
export declare function useTreeNodeDragDrop(input: Input): {
    getElementProps: () => {};
    dragHandleProps: undefined;
} | {
    getElementProps: () => {
        draggable: boolean;
        onDragstart: (event: DragEvent) => void;
        onDragover: (event: DragEvent) => void;
        onDragleave: (event: DragEvent) => void;
        onDrop: (event: DragEvent) => void;
        onDragend: (event: DragEvent) => void;
    };
    dragHandleProps: {
        onMousedown: () => void;
    } | undefined;
};
export {};
