import { MouseEvent } from '../types/interaction';
interface Bounds {
    x: number;
    y: number;
    width: number;
    height: number;
}
export declare class MouseHandler {
    private state;
    private readonly DOUBLE_CLICK_THRESHOLD_MS;
    private readonly DOUBLE_CLICK_DISTANCE_THRESHOLD;
    private readonly DRAG_THRESHOLD;
    static normalizeMouseEvent(rawEvent: any): MouseEvent;
    processMouseEvent(event: MouseEvent): {
        event: MouseEvent;
        isDoubleClick: boolean;
        isDragStart: boolean;
        isDragMove: boolean;
        isDragEnd: boolean;
        dragDistance: number | undefined;
    };
    private handleMouseDown;
    private handleMouseUp;
    private handleMouseMove;
    private handleWheel;
    private calculateDistance;
    static isPointInBounds(point: {
        x: number;
        y: number;
    }, bounds: Bounds): boolean;
    static isMouseEventInBounds(event: MouseEvent, bounds: Bounds): boolean;
    static getRelativePosition(point: {
        x: number;
        y: number;
    }, bounds: Bounds): {
        x: number;
        y: number;
    };
    isDragging(): boolean;
    getCurrentPosition(): {
        x: number;
        y: number;
    };
    getPressedButtons(): string[];
    isButtonPressed(button: string): boolean;
    getDragStart(): {
        x: number;
        y: number;
    } | undefined;
    setHover(elementId: string): void;
    clearHover(): void;
    getHoveredElement(): string | undefined;
    reset(): void;
    static createBounds(x: number, y: number, width: number, height: number): Bounds;
    static expandBounds(bounds: Bounds, margin: number): Bounds;
    static boundsIntersect(bounds1: Bounds, bounds2: Bounds): boolean;
    static getIntersection(bounds1: Bounds, bounds2: Bounds): Bounds | null;
    destroy(): void;
}
export {};
//# sourceMappingURL=mouse-handler.d.ts.map