/**
 * 鼠标和键盘控制的封装，主要用于Demo测试。
 * 不可以打包导出，因为有移动端触控的第三方依赖
 */
import type { Composition } from '@galacean/effects';
import type { CameraGestureHandler } from './protocol';
import 'hammerjs';
export declare enum MouseButtonType {
    left = 1,
    middle = 4,
    right = 2
}
export declare enum InputActionType {
    none = 0,
    moveXYPlane = 1,
    moveZAxis = 2,
    rotateCamera = 3,
    rotatePoint = 4
}
export interface InputControllerOptions {
    cameraID: string;
    sceneRadius: number;
    moveSpeed?: number;
    rotateSpeed?: number;
    comp: Composition;
    canvas: HTMLCanvasElement;
}
/**
 * 鼠标和键盘输入控制器
 */
export declare class InputController {
    cameraID: string;
    sceneRadius: number;
    moveSpeed: number;
    rotateSpeed: number;
    comp?: Composition;
    canvas?: HTMLCanvasElement;
    gesture?: CameraGestureHandler;
    hammer?: HammerManager;
    keyDownListener?: (e: KeyboardEvent) => any;
    mouseUpListener?: (e: MouseEvent) => any;
    mouseDownListener?: (e: MouseEvent) => any;
    mouseMoveListener?: (e: MouseEvent) => any;
    mouseLeaveListener?: (e: MouseEvent) => any;
    mouseWheelListener?: (e: WheelEvent) => any;
    isMouseDown: boolean;
    isMoveBegin: boolean;
    currentAction: InputActionType;
    /**
     * 相机控制事件的回调，包括开始、持续和结束三种事件
     */
    private beginEventCallback?;
    private moveEventCallback?;
    private endEventCallback?;
    initial(options: InputControllerOptions): void;
    setBeginEventCallback(cb: (eventName: string) => any): void;
    setMoveEventCallback(cb: (eventName: string) => any): void;
    setEndEventCallback(cb: (eventName: string) => any): void;
    /**
     * 注册鼠标回调事件，只有在PC上才会注册，手机上不会注册
     *
     * @param owner 输入控制器对象
     */
    private registerMouseEvent;
    private registerKeyboardEvent;
    /**
     * 注册触控回调事件，只在手机上才会注册，PC上不会注册
     *
     * @param owner 输入控制器对象
     */
    private registerTouchEvent;
    /**
     * 相机开始事件的回调
     *
     * @param eventName 事件名称
     */
    private launchBeginEventCallback;
    /**
     * 相机持续事件的回调
     *
     * @param eventName 事件名称
     */
    private launchMoveEventCallback;
    /**
     * 相机结束事件的回调
     *
     * @param eventName 事件名称
     */
    private launchEndEventCallback;
    dispose(): void;
    getMouseMoveSpeed(): number;
    getKeyMoveSpeed(): number;
    getRotateSpeed(): number;
    getWheelMoveSpeed(): number;
}
