import * as THREE from "three";
import type { Mode } from "../application/mode";
interface CameraPose {
    longitude: number;
    latitude: number;
    fov: number;
    distance: number;
    offset: THREE.Vector3;
}
/** Five 相机 */
declare class Camera extends THREE.Camera {
    fov: number;
    aspect: number;
    near: number;
    far: number;
    perspToOrtho: THREE.Vector2;
    resolution: THREE.Vector2;
    pixelRatio: number;
    /** 相机姿态 */
    pose: CameraPose;
    private perspectiveCamera;
    private orthographicCamera;
    autoNearFar: boolean;
    needsRender: boolean;
    refineModel: boolean;
    time: number;
    controllerMode: Mode | null;
    private lastValues;
    constructor(fov: number, aspect?: number, near?: number, far?: number, perspToOrtho?: THREE.Vector2, resolution?: THREE.Vector2, pixelRatio?: number);
    get orthoDistance(): number;
    get zoom(): number;
    get top(): number;
    get bottom(): number;
    get left(): number;
    get right(): number;
    getDirection(target: THREE.Vector3): THREE.Vector3;
    /** 通过相机参数反算姿态 */
    computePose(distance?: number): this;
    /** 设置相机姿态 */
    setFromPose(pose: Partial<CameraPose>): this;
    /** 拷贝相机姿态 */
    copyPose(): CameraPose;
    private computeProjectionMatrix;
    setViewOffset(fullWidth: number, fullHeight: number, x: number, y: number, width: number, height: number): void;
    get view(): {
        enabled: boolean;
        fullWidth: number;
        fullHeight: number;
        offsetX: number;
        offsetY: number;
        width: number;
        height: number;
    } | null;
    clearViewOffset(): void;
    updateProjectionMatrix(): void;
    get perspectiveProjectionMatrix(): THREE.Matrix4;
    get perspectiveProjectionMatrixInverse(): THREE.Matrix4;
    get orthographicProjectionMatrix(): THREE.Matrix4;
    get orthographicProjectionMatrixInverse(): THREE.Matrix4;
    updateTime(time: number): void;
    get isPerspectiveCamera(): boolean;
    get isOrthographicCamera(): boolean;
    copy(source: this, recursive?: boolean): this;
}
export { Camera, CameraPose };
