import { PerspectiveCamera } from "three";
import ObjectManager from "../ObjectManager";
import pillShape from "../PhysicsObjectManager/cannon/shapes/pillShape";
import ICameraBase, { MouseControl } from "../../../interface/ICameraBase";
import { Point3d } from "@lincode/math";
import { Reactive } from "@lincode/reactivity";
import MeshItem from "../MeshItem";
export default abstract class CameraBase<T extends PerspectiveCamera> extends ObjectManager implements ICameraBase {
    protected camera: T;
    protected _physicsShape: typeof pillShape;
    protected midObject3d: import("three").Object3D<import("three").Event>;
    constructor(camera: T);
    lookAt(target: MeshItem | Point3d): void;
    lookAt(x: number, y: number | undefined, z: number): void;
    get fov(): number;
    set fov(val: number);
    get zoom(): number;
    set zoom(val: number);
    get near(): number;
    set near(val: number);
    get far(): number;
    set far(val: number);
    get active(): boolean;
    set active(val: boolean);
    get transition(): number | boolean | undefined;
    set transition(val: number | boolean | undefined);
    get bokeh(): any;
    set bokeh(val: any);
    get bokehFocus(): any;
    set bokehFocus(val: any);
    get bokehMaxBlur(): any;
    set bokehMaxBlur(val: any);
    get bokehAperture(): any;
    set bokehAperture(val: any);
    protected getRay(): import("three").Ray;
    append(object: MeshItem): void;
    attach(object: MeshItem): void;
    get width(): number;
    set width(val: number);
    get height(): number;
    set height(val: number);
    get depth(): number;
    set depth(val: number);
    protected orbitMode?: boolean;
    private _gyrate;
    private gyrateHandle?;
    gyrate(movementX: number, movementY: number, noDamping?: boolean): void;
    private static updateAngle;
    protected updateAngle(): 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);
    enableDamping: boolean;
    protected mouseControlState: Reactive<MouseControl>;
    private mouseControlInit?;
    get mouseControl(): MouseControl;
    set mouseControl(val: MouseControl);
    private _gyroControl?;
    get gyroControl(): boolean;
    set gyroControl(val: boolean);
}
