import { Object3D, PerspectiveCamera, Vector3 } from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import { ModelControls } from './utils/ModelControls';
import IPointOfView from './interfaces/point-of-view.interface';
import { CameraConstraints } from '../../../trillion-common/src/objects/camera-constraints.object';
export type IControls = {
    minDistance: number;
    maxDistance: number;
    maxAzimuthAngle: number;
    minAzimuthAngle: number;
    maxPolarAngle: number;
    minPolarAngle: number;
};
export interface ICameraController {
    setPointOfView: (pointOfView: IPointOfView, defaultCameraConstraints: CameraConstraints, isFreeMoveCameraModeEnabled: boolean, noAnimation?: boolean) => void;
    getDistance: () => number;
    fitToScreen: (model: Object3D) => void;
    getFitToScreenPosition: (model: Object3D, curPos: Vector3) => Vector3;
    addOnStart: (callback: () => void) => void;
    removeOnStart: (callback: () => void) => void;
    destroy: () => void;
    start: () => void;
    stop: () => void;
    update: () => void;
}
export declare function CameraController(camera: PerspectiveCamera, controls: ModelControls | OrbitControls): ICameraController;
