import { Extra, GesturesExtra, InteractiveEvent } from '@turbox3d/event-manager';
export declare enum DragStatus {
    Ready = "ready",
    Dragging = "dragging",
    End = "end"
}
/**
 * 当次鼠标事件（down -> move -> up）的处理类型
 */
export declare enum MouseDealType {
    /**
     * 作为一次 Drag 事件处理
     */
    Drag = "drag",
    /**
     * 作为一次 Click 事件处理
     */
    Click = "click",
    /** 多点触控事件 */
    MultiTouch = "multi-touch",
    /** 按压 */
    Press = "press"
}
export default class MaterialDragSystem {
    /** 入参 */
    args: any[];
    /** 事件回调处理 */
    handler: (e: InteractiveEvent, event: PointerEvent | WheelEvent | React.PointerEvent | Touch, extra?: GesturesExtra | Extra) => void;
    maxFPS: number;
    static touchableDevice: boolean;
    /** 渲染器的 canvas 元素 */
    private canvas;
    /** 当前鼠标是否处于按下状态 */
    private isMouseDown;
    private mouseDownInfo?;
    /** 当前的拖拽状态 */
    private dragStatus?;
    /** 当次鼠标事件处理类型 */
    private mouseDealType?;
    /** 坐标轴类型 */
    private coordinateType?;
    /** 缓存事件池，用于多点触控 */
    private eventCache;
    /** 双指间距 */
    private prevDiff;
    /** 初始的间距 */
    private startDiff;
    /** 双指方向 */
    private prevVector;
    /** 初始的方向 */
    private startVector;
    private pressTimer;
    /** 使用 x 还是 y 轴间距作为缩放系数计算因子 */
    private useX?;
    constructor(handler: (e: InteractiveEvent, event: PointerEvent | WheelEvent | React.PointerEvent | Touch, extra?: GesturesExtra | Extra) => void, maxFPS?: number);
    private isMouseMoved;
    dispose(): void;
    registerListener(): void;
    private triggerEvent;
    private addEventCache;
    private removeEventCache;
    private updateEventCache;
    private downHandler;
    onMouseDown: (...args: any[]) => (event: PointerEvent) => void;
    onTouchDown: (...args: any[]) => (event: TouchEvent) => void;
    private moveHandler;
    private onMouseMove;
    private onTouchMove;
    private upHandler;
    private onMouseUp;
    private onTouchUp;
}
