import { Camera, Euler, EventDispatcher, Vector3 } from 'three';

declare class PointerLockControls extends EventDispatcher {
    domElement: HTMLElement;
    camera: Camera;
    isLocked: boolean;
    minPolarAngle: number;
    maxPolarAngle: number;
    vector: Vector3;
    euler: Euler;
    previousTouch?: Touch;
    onMouseMoveBind: (event: MouseEvent) => void;
    onPointerlockChangeBind: () => void;
    onPointerlockErrorBind: () => void;
    onTouchMoveBind: (e: TouchEvent) => void;
    onTouchEndBind: () => void;
    constructor(camera: Camera, domElement: HTMLElement);
    onTouchMove(e: TouchEvent): void;
    onTouchEnd(): void;
    onMouseMove(event: MouseEvent): void;
    updatePosition(movementX: number, movementY: number, multiplier: number): void;
    onPointerlockChange(): void;
    onPointerlockError(): void;
    connect(): void;
    disconnect(): void;
    dispose(): void;
    getObject(): Camera;
    getDirection(): (v: Vector3) => Vector3;
    moveForward(distance: number): void;
    moveRight(distance: number): void;
    lock(): void;
    unlock(): void;
}
export { PointerLockControls };
