import type { IEventContainer } from "../collection/EventContainer";
import type { IInputEventHandleable } from "./IInputEventHandleable";
/**
 * engine global input event handler
 * do not drive this class
 */
export declare class InputHandler implements IInputEventHandleable {
    private readonly _map;
    private _isDisposed;
    private readonly _renderTargetDom;
    private readonly _onKeyDownEvent;
    private readonly _onKeyUpEvent;
    private readonly _onWheelEvent;
    private readonly _onPointerDownEvent;
    private readonly _onPointerUpEvent;
    private readonly _onPointerEnterEvent;
    private readonly _onPointerLeaveEvent;
    private readonly _onPointerMoveEvent;
    private _touchMoveOccured;
    private _onTouchStartFunc;
    private _lastMouseDownEvent;
    private _lastMouseEnterEvent;
    /**
     * keyboard input map. key is key name, value is pressed or not
     *
     * important: upper case single letter key name is mapped to lower case single letter key name
     * for example, "A" is mapped to "a"
     */
    get map(): ReadonlyMap<string, boolean>;
    /**
     * start engine global input event handling. you can use this when you want focus the game view
     */
    startHandleEvents(): void;
    /**
     * stop engine global input event handling. you can use this when you want blur the game view
     */
    stopHandleEvents(): void;
    private simulateMouseEvent;
    private readonly handleKeyDown;
    private readonly handleKeyUp;
    private readonly handleWheel;
    private readonly handleMouseDown;
    private readonly handleMouseUp;
    private readonly handleMouseEnter;
    private readonly handleMouseLeave;
    private readonly handleMouseMove;
    private readonly handleTouchStart;
    private readonly handleTouchEnd;
    private readonly handleTouchMove;
    private readonly handleTouchCancel;
    /**
     * this event will be invoked when key down event occured
     */
    get onKeyDown(): IEventContainer<(event: KeyboardEvent) => void>;
    /**
     * this event will be invoked when key up event occured
     */
    get onKeyUp(): IEventContainer<(event: KeyboardEvent) => void>;
    /**
     * this event will be invoked when wheel event occured
     */
    get onWheel(): IEventContainer<(event: WheelEvent) => void>;
    /**
     * this event will be invoked when pointer down event occured
     */
    get onPointerDown(): IEventContainer<(event: MouseEvent) => void>;
    /**
     * this event will be invoked when pointer up event occured
     */
    get onPointerUp(): IEventContainer<(event: MouseEvent) => void>;
    /**
     * this event will be invoked when pointer enter event occured
     */
    get onPointerEnter(): IEventContainer<(event: MouseEvent) => void>;
    /**
     * onPointerLeave event
     * this event will be invoked when pointer leave event occured
     */
    get onPointerLeave(): IEventContainer<(event: MouseEvent) => void>;
    /**
     * onPointerMove event
     * this event will be invoked when pointer move event occured
     */
    get onPointerMove(): IEventContainer<(event: MouseEvent) => void>;
}
