import { EventDispatcher, MOUSE, Object3D, OrthographicCamera, TOUCH, Vector3, Vector3Like } from 'three/webgpu';
import { DIVEPerspectiveCamera, DIVETicker, BoundingBox } from '../../../index.ts';
import { OrbitControllerState } from '../types/index.ts';
export type OrbitControllerSettings = {
    enableDamping?: boolean;
    dampingFactor?: number;
    enabled?: boolean;
    target?: Vector3;
    minDistance?: number;
    maxDistance?: number;
    minZoom?: number;
    maxZoom?: number;
    minPolarAngle?: number;
    maxPolarAngle?: number;
    minAzimuthAngle?: number;
    maxAzimuthAngle?: number;
    enableZoom?: boolean;
    zoomSpeed?: number;
    enableRotate?: boolean;
    rotateSpeed?: number;
    enablePan?: boolean;
    panSpeed?: number;
    screenSpacePanning?: boolean;
    keyPanSpeed?: number;
    autoRotate?: boolean;
    autoRotateSpeed?: number;
    keys?: {
        LEFT: string;
        UP: string;
        RIGHT: string;
        BOTTOM: string;
    };
    mouseButtons?: {
        LEFT: MOUSE;
        MIDDLE: MOUSE;
        RIGHT: MOUSE;
    };
    touches?: {
        ONE: TOUCH;
        TWO: TOUCH;
    };
};
export declare const OrbitControllerDefaultSettings: Required<OrbitControllerSettings>;
type EventMap = {
    dispose: {
        type: 'dispose';
    };
    change: {
        type: 'change';
    };
    start: {
        type: 'start';
    };
    end: {
        type: 'end';
    };
};
export declare class OrbitController extends EventDispatcher<EventMap> implements DIVETicker {
    static readonly DEFAULT_ZOOM_FACTOR = 1;
    object: DIVEPerspectiveCamera | OrthographicCamera;
    get domElement(): HTMLCanvasElement;
    domElements: HTMLCanvasElement[];
    enabled: boolean;
    target: Vector3;
    minDistance: number;
    maxDistance: number;
    minZoom: number;
    maxZoom: number;
    minPolarAngle: number;
    maxPolarAngle: number;
    minAzimuthAngle: number;
    maxAzimuthAngle: number;
    enableDamping: boolean;
    dampingFactor: number;
    enableZoom: boolean;
    zoomSpeed: number;
    enableRotate: boolean;
    rotateSpeed: number;
    enablePan: boolean;
    panSpeed: number;
    screenSpacePanning: boolean;
    keyPanSpeed: number;
    autoRotate: boolean;
    autoRotateSpeed: number;
    keys: {
        LEFT: string;
        UP: string;
        RIGHT: string;
        BOTTOM: string;
    };
    mouseButtons: {
        LEFT: MOUSE;
        MIDDLE: MOUSE;
        RIGHT: MOUSE;
    };
    touches: {
        ONE: TOUCH;
        TWO: TOUCH;
    };
    target0: Vector3;
    position0: Vector3;
    zoom0: number;
    uuid: string;
    private state;
    private readonly EPS;
    private readonly spherical;
    private readonly sphericalDelta;
    private scale;
    private readonly panOffset;
    private zoomChanged;
    private readonly rotateStart;
    private readonly rotateEnd;
    private readonly rotateDelta;
    private readonly panStart;
    private readonly panEnd;
    private readonly panDelta;
    private readonly dollyStart;
    private readonly dollyEnd;
    private readonly dollyDelta;
    private readonly pointers;
    private readonly pointerPositions;
    private readonly offset;
    private readonly quat;
    private readonly quatInverse;
    private readonly lastPosition;
    private readonly lastQuaternion;
    private readonly lastTarget;
    constructor(camera: DIVEPerspectiveCamera | OrthographicCamera, domElements: HTMLCanvasElement | HTMLCanvasElement[], settings?: OrbitControllerSettings);
    tick(): void;
    getPolarAngle(): number;
    getAzimuthalAngle(): number;
    getDistance(): number;
    saveState(): void;
    reset(): void;
    update(): boolean;
    dispose(): void;
    addDomElements(...domElements: HTMLCanvasElement[]): void;
    removeDomElements(...domElements: HTMLCanvasElement[]): void;
    setDomElements(...domElements: HTMLCanvasElement[]): void;
    computeEncompassingView(bb: BoundingBox, padding?: number): {
        position: Vector3Like;
        target: Vector3Like;
    };
    focusObject(object: Object3D, padding?: number): void;
    zoomIn(by?: number): void;
    zoomOut(by?: number): void;
    getState(): OrbitControllerState;
    setState(state: OrbitControllerState): void;
    private addEventListeners;
    private removeEventListeners;
    private getAutoRotationAngle;
    private getZoomScale;
    private rotateLeft;
    private rotateUp;
    private panLeft;
    private panUp;
    private pan;
    private dollyIn;
    private dollyOut;
    private handleMouseDownRotate;
    private handleMouseDownDolly;
    private handleMouseDownPan;
    private handleMouseMoveRotate;
    private handleMouseMoveDolly;
    private handleMouseMovePan;
    private handleMouseWheel;
    private handleKeyDown;
    private handleTouchStartRotate;
    private handleTouchStartPan;
    private handleTouchStartDolly;
    private handleTouchStartDollyPan;
    private handleTouchStartDollyRotate;
    private handleTouchMoveRotate;
    private handleTouchMovePan;
    private handleTouchMoveDolly;
    private handleTouchMoveDollyPan;
    private handleTouchMoveDollyRotate;
    private onMouseDown;
    private onMouseMove;
    private onMouseWheel;
    private onKeyDown;
    private onTouchStart;
    private onTouchMove;
    private onPointerDown;
    private onPointerMove;
    private onPointerUp;
    private onPointerCancel;
    private onContextMenu;
    private addPointer;
    private removePointer;
    private trackPointer;
    private getSecondPointer;
    private isTrackingPointer;
}
export {};
