import { Vector2 } from 'three';
import EventEmitter from '../EventEmitter.js';
export declare enum InputEvent {
    PointerDown = "pointer-down",
    PointerUp = "pointer-up",
    PointerMove = "pointer-move",
    PointerCancel = "pointer-cancel",
    Wheel = "wheel",
    Click = "click",
    DoubleClick = "double-click",
    KeyUp = "key-up"
}
export interface InputEventPayload {
    [InputEvent.PointerDown]: Vector2 & {
        event: PointerEvent;
    };
    [InputEvent.PointerUp]: Vector2 & {
        event: PointerEvent;
    };
    [InputEvent.PointerMove]: Vector2 & {
        event: PointerEvent;
    };
    [InputEvent.PointerCancel]: void;
    [InputEvent.Wheel]: WheelEvent;
    [InputEvent.Click]: Vector2 & {
        event: PointerEvent;
        multiSelect: boolean;
    };
    [InputEvent.DoubleClick]: Vector2 & {
        event: PointerEvent;
        multiSelect: boolean;
    };
    [InputEvent.KeyUp]: KeyboardEvent;
}
export default class Input extends EventEmitter {
    private static readonly MAX_DOUBLE_CLICK_TIMING;
    private static readonly MIN_CLICK_TIMING;
    private tapTimeout;
    private lastTap;
    private lastClick;
    private touchLocation;
    private container;
    constructor(container: HTMLElement);
    on<T extends InputEvent>(eventType: T, listener: (arg: InputEventPayload[T]) => void): void;
    _getNormalisedClickPosition(e: MouseEvent | Touch): Vector2;
    dispose(): void;
}
