/**
 * 拖拽事件处理工具函数
 */
import type { Position, SizePreset, PositionConfig } from './positionUtils';
/**
 * 拖拽状态接口
 */
export interface DragState {
    isDragging: boolean;
    startMouseX: number;
    startMouseY: number;
    startElementX: number;
    startElementY: number;
}
/**
 * 拖拽配置
 */
export interface DragConfig extends PositionConfig {
    moveThreshold: number;
}
/**
 * 拖拽事件回调类型
 */
export interface DragCallbacks {
    onDragStart?: (position: Position) => void;
    onDrag?: (position: Position) => void;
    onDragEnd?: (position: Position, wasDragging: boolean) => void;
    onClick?: () => void;
}
/**
 * 默认拖拽配置
 */
export declare const DEFAULT_DRAG_CONFIG: DragConfig;
/**
 * 创建拖拽状态
 * @returns 初始拖拽状态
 */
export declare function createDragState(): DragState;
/**
 * 检测是否超过移动阈值
 * @param startX 起始X坐标
 * @param startY 起始Y坐标
 * @param currentX 当前X坐标
 * @param currentY 当前Y坐标
 * @param threshold 移动阈值
 * @returns 是否超过阈值
 */
export declare function isMoveBeyondThreshold(startX: number, startY: number, currentX: number, currentY: number, threshold?: number): boolean;
/**
 * 计算拖拽后的位置
 * @param dragState 拖拽状态
 * @param currentMouseX 当前鼠标X坐标
 * @param currentMouseY 当前鼠标Y坐标
 * @param elementSize 元素尺寸
 * @param config 配置
 * @returns 新的位置坐标
 */
export declare function calculateDragPosition(dragState: DragState, currentMouseX: number, currentMouseY: number, elementSize: SizePreset, config?: DragConfig): Position;
/**
 * 拖拽处理器类
 */
export declare class DragHandler {
    private dragState;
    private elementSize;
    private config;
    private callbacks;
    private currentPosition;
    private animationFrameId;
    private pendingPosition;
    constructor(elementSize: SizePreset, callbacks?: DragCallbacks, config?: DragConfig);
    /**
     * 更新当前位置
     * @param position 新位置
     */
    updatePosition(position: Position): void;
    /**
     * 使用 requestAnimationFrame 更新位置
     * @param position 新位置
     */
    private updatePositionWithRAF;
    /**
     * 更新元素尺寸
     * @param size 新尺寸
     */
    updateSize(size: SizePreset): void;
    /**
     * 处理鼠标按下事件
     * @param event 鼠标事件
     */
    handleMouseDown: (event: MouseEvent) => void;
    /**
     * 处理触摸开始事件
     * @param event 触摸事件
     */
    handleTouchStart: (event: TouchEvent) => void;
    /**
     * 处理鼠标移动事件
     * @param event 鼠标事件
     */
    private handleMouseMove;
    /**
     * 处理触摸移动事件
     * @param event 触摸事件
     */
    private handleTouchMove;
    /**
     * 处理鼠标抬起事件
     */
    private handleMouseUp;
    /**
     * 处理触摸结束事件
     */
    private handleTouchEnd;
    /**
     * 清理事件监听器
     */
    destroy(): void;
}
/**
 * 窗口大小变化处理工具
 */
export declare class WindowResizeHandler {
    private callbacks;
    private isListening;
    /**
     * 添加回调函数
     * @param callback 回调函数
     */
    addCallback(callback: () => void): void;
    /**
     * 移除回调函数
     * @param callback 回调函数
     */
    removeCallback(callback: () => void): void;
    /**
     * 开始监听窗口大小变化
     */
    private startListening;
    /**
     * 停止监听窗口大小变化
     */
    private stopListening;
    /**
     * 处理窗口大小变化
     */
    private handleResize;
    /**
     * 销毁处理器
     */
    destroy(): void;
}
/**
 * 防抖处理窗口大小变化
 * @param callback 回调函数
 * @param delay 延迟时间（毫秒）
 * @returns 清理函数
 */
export declare function handleWindowResize(callback: () => void, delay?: number): () => void;
//# sourceMappingURL=dragUtils.d.ts.map