import { Camera, Vector3 } from 'three';
import { TypedCameraControlsEventNode } from './_BaseCameraControls';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { CameraControlsNodeType } from '../../poly/NodeContext';
import { OrbitControls } from '../../../modules/core/controls/OrbitControls';
export { OrbitControls };
export declare enum MouseControl {
    ROTATE = "rotate",
    PAN = "pan",
    DOLLY = "dolly"
}
export declare const MOUSE_CONTROLS: MouseControl[];
declare class CameraOrbitEventParamsConfig extends NodeParamsConfig {
    main: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param enable/disable */
    enabled: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param toggle on to allow pan */
    allowPan: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param toggle on to allow rotate */
    allowRotate: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param toggle on to allow zoom */
    allowZoom: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param zoom speed */
    zoomSpeed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param zoom to cursor */
    zoomToCursor: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param toggle on to have damping */
    tdamping: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param damping value */
    damping: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param toggle on to have the pan in screen space */
    screenSpacePanning: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param rotation speed */
    rotateSpeed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    limits: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param smallest distance the camera can go to the target (perspective cameras only) */
    minDistance: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param max distance the camera can go away the target (perspective cameras only) */
    maxDistance: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param min zoom (orthographic cameras only) */
    minZoom: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param max zoom (orthographic cameras only) */
    maxZoom: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param toggle on to limit the azimuth (up-down) angle */
    limitAzimuthAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param azimuth angle range */
    azimuthAngleRange: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
    /** @param polar (left-right) angle range */
    polarAngleRange: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR2>;
    /** @param clamp position */
    clampPosition: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param min position */
    positionMin: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
    /** @param max position */
    positionMax: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
    controls: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    /** @param leftMouseButton */
    leftMouseButton: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param leftMouseButton */
    middleMouseButton: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param leftMouseButton */
    rightMouseButton: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param 1 finger touch */
    oneFingerTouch: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param 2 fingers touch */
    twoFingersTouch: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    misc: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    updateTargetEndMoveEnd: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param target position. This is updated automatically as the camera is controlled by user events */
    target: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
}
export declare class CameraOrbitControlsEventNode extends TypedCameraControlsEventNode<CameraOrbitEventParamsConfig> {
    paramsConfig: CameraOrbitEventParamsConfig;
    static type(): CameraControlsNodeType;
    endEventName(): string;
    initializeNode(): void;
    private _controlsByElementId;
    private _firstControls;
    protected _createControls(camera: Camera, element: HTMLElement): OrbitControls;
    createControlsInstance(camera: Camera, element: HTMLElement): Promise<OrbitControls>;
    protected _bind_listeners_to_controls_instance(controls: OrbitControls): void;
    setupControls(controls: OrbitControls): void;
    private _set_azimuth_angle;
    updateRequired(): boolean;
    private _on_controls_end;
    static PARAM_CALLBACK_updateTarget(node: CameraOrbitControlsEventNode): void;
    private _updateTarget;
    target(target: Vector3): void;
    setTarget(newTarget: Vector3): void;
    disposeControlsForHtmlElementId(html_element_id: string): void;
    private _updateCache;
}
