import type { Ref } from "vue"; import type { TreeNodeWithChildren } from "./type"; export declare const LONG_PRESS_DELAY = 300; export interface UseDraggingOptions { itemHeight: number; emit: (event: "updateDragState" | "nodeDragDrop", ...args: any[]) => void; getFlattenedItems: () => { id: string; level: number; node: TreeNodeWithChildren; }[]; getContainerRef: () => HTMLElement | null; canDropFn?: (draggedNodeId: string, targetNodeId: string, dragPosition: "before" | "after" | "inside") => boolean; } export declare function useDragging(options: UseDraggingOptions): { isDragging: Ref; draggedNodeId: Ref; dropTargetNodeId: Ref; dropPosition: Ref<"before" | "after" | "inside" | null, "before" | "after" | "inside" | null>; mousePosition: Ref<{ x: number; y: number; }, { x: number; y: number; } | { x: number; y: number; }>; onDragStart: (nodeId: string, event: MouseEvent) => void; cancelDrag: () => void; }; export declare function useNodeDragDetection(onStartDrag: (event: MouseEvent) => void, isDisabled: Ref | (() => boolean)): { onMouseDown: (event: MouseEvent) => void; onMouseMove: () => void; onMouseUp: () => void; };