import { Extension } from './Extension';
import { SpeckleCameraControls } from '../../objects/SpeckleCameraControls';
import { Box3, OrthographicCamera, PerspectiveCamera } from 'three';
import { CanonicalView, SpeckleView, InlineView, IViewer } from '../../..';
import { ICameraProvider, PolarView } from './Providers';
export declare class CameraController extends Extension implements ICameraProvider {
    get provide(): string;
    protected _renderingCamera: PerspectiveCamera | OrthographicCamera;
    protected perspectiveCamera: PerspectiveCamera;
    protected orthographicCamera: OrthographicCamera;
    protected _controls: SpeckleCameraControls;
    get renderingCamera(): PerspectiveCamera | OrthographicCamera;
    set renderingCamera(value: PerspectiveCamera | OrthographicCamera);
    get enabled(): boolean;
    set enabled(val: boolean);
    get fieldOfView(): number;
    set fieldOfView(value: number);
    get aspect(): number;
    get controls(): SpeckleCameraControls;
    constructor(viewer: IViewer);
    setCameraView(objectIds: string[], transition: boolean, fit?: number): void;
    setCameraView(view: CanonicalView | SpeckleView | InlineView | PolarView, transition: boolean): void;
    setCameraView(bounds: Box3, transition: boolean): void;
    onEarlyUpdate(deltaTime: number): void;
    onResize(): void;
    setPerspectiveCameraOn(): void;
    setOrthoCameraOn(): void;
    toggleCameras(): void;
    protected setupOrthoCamera(): void;
    protected setupPerspectiveCamera(): void;
    disableRotations(): void;
    enableRotations(): void;
    protected setupWASDControls(): void;
    protected zoom(objectIds?: string[], fit?: number, transition?: boolean): void;
    private zoomExtents;
    private zoomToBox;
    private isSpeckleView;
    private isCanonicalView;
    private isInlineView;
    private isPolarView;
    private isBox3;
    protected setView(view: CanonicalView | SpeckleView | InlineView | PolarView, transition?: boolean): void;
    private setViewSpeckle;
    /**
     * Rotates camera to some canonical views
     * @param  {string}  side       Can be any of front, back, up (top), down (bottom), right, left.
     * @param  {Number}  fit        [description]
     * @param  {Boolean} transition [description]
     * @return {[type]}             [description]
     */
    private setViewCanonical;
    private setViewInline;
    private setViewPolar;
}
