import { PerspectiveCamera } from "three";
import ObjectManager from "../ObjectManager";
import ICameraBase, { MouseControl } from "../../../interface/ICameraBase";
import { Reactive } from "@lincode/reactivity";
import MeshAppendable from "../MeshAppendable";
import { Point3dType } from "../../../utils/isPoint";
export default abstract class CameraBase<T extends PerspectiveCamera = PerspectiveCamera> extends ObjectManager implements ICameraBase {
    $camera: T;
    midObject3d: import("three").Object3D<import("three").Event>;
    constructor($camera: T);
    protected disposeNode(): void;
    lookAt(target: MeshAppendable | Point3dType): void;
    lookAt(x: number, y: number | undefined, z: number): void;
    private _fov;
    get fov(): number;
    set fov(val: number);
    private _zoom;
    get zoom(): number;
    set zoom(val: number);
    private _active?;
    get active(): boolean;
    set active(val: boolean);
    get transition(): boolean;
    set transition(val: boolean);
    protected getRay(): import("three").Ray;
    protected orbitMode?: boolean;
    private _gyrate;
    gyrate(movementX: number, movementY: number): void;
    private _minPolarAngle;
    get minPolarAngle(): number;
    set minPolarAngle(val: number);
    private _maxPolarAngle;
    get maxPolarAngle(): number;
    set maxPolarAngle(val: number);
    private _minAzimuthAngle;
    get minAzimuthAngle(): number;
    set minAzimuthAngle(val: number);
    private _maxAzimuthAngle;
    get maxAzimuthAngle(): number;
    set maxAzimuthAngle(val: number);
    setPolarAngle(angle: number): void;
    setAzimuthAngle(angle: number): void;
    private _polarAngle?;
    get polarAngle(): number | undefined;
    set polarAngle(val: number | undefined);
    private _azimuthAngle?;
    get azimuthAngle(): number | undefined;
    set azimuthAngle(val: number | undefined);
    inertia: boolean;
    protected mouseControlState: Reactive<MouseControl>;
    private mouseControlInit?;
    get mouseControl(): MouseControl;
    set mouseControl(val: MouseControl);
}
