import type { DragStartEvent, DragEndEvent, useSensors } from '@dnd-kit/core';
import type { DragType } from './constants';
/**
 * 拖拽结束回调
 * @description id 可能是字符串或数字，保持原始类型
 */
export interface DragEndCallbacks {
    /** 列拖拽结束回调 */
    onColumnDragEnd?: (activeId: string | number, overId: string | number) => void;
    /** 行拖拽结束回调 */
    onRowDragEnd?: (activeId: string | number, overId: string | number) => void;
}
/**
 * useDragAndDrop Hook 返回值类型
 * @description 与 useDragAndDrop.ts 中的实际实现保持一致
 */
export interface UseDragAndDropReturn {
    /** 当前正在拖拽的列 ID */
    activeColumnId: string | null;
    /** 当前正在拖拽的行 ID */
    activeRowId: string | null;
    /** 当前拖拽类型 */
    currentDragType: DragType;
    /** 拖拽类型引用 */
    dragTypeRef: React.MutableRefObject<DragType>;
    /** 设置当前拖拽的列 ID */
    setActiveColumnId: React.Dispatch<React.SetStateAction<string | null>>;
    /** 设置当前拖拽的行 ID */
    setActiveRowId: React.Dispatch<React.SetStateAction<string | null>>;
    /** 设置当前拖拽类型 */
    setCurrentDragType: React.Dispatch<React.SetStateAction<DragType>>;
    /** 拖拽传感器 */
    sensors: ReturnType<typeof useSensors>;
    /** 处理拖拽开始 */
    handleDragStart: (event: DragStartEvent) => void;
    /** 创建拖拽结束处理函数 */
    createDragEndHandler: (callbacks: DragEndCallbacks) => (event: DragEndEvent) => void;
}
/**
 * Modifier 参数类型
 * @description 用于自定义拖拽修饰器
 */
export interface ModifierArgs {
    transform: {
        x: number;
        y: number;
        scaleX: number;
        scaleY: number;
    };
    draggingNodeRect?: DOMRect | null;
}
