import { vertexvis } from '@vertexvis/frame-streaming-protos';
import { BoundingBox, Vector3 } from '@vertexvis/geometry';
export type FrameCameraType = 'perspective' | 'orthographic';
export interface PerspectiveFrameCamera {
    position: Vector3.Vector3;
    lookAt: Vector3.Vector3;
    up: Vector3.Vector3;
    fovY?: number;
}
export interface OrthographicFrameCamera {
    viewVector: Vector3.Vector3;
    lookAt: Vector3.Vector3;
    up: Vector3.Vector3;
    fovHeight: number;
    rotationPoint?: Vector3.Vector3;
}
export type FrameCamera = PerspectiveFrameCamera | OrthographicFrameCamera;
export declare function isValidFrameCamera(camera: Partial<FrameCamera>): boolean;
export declare function isPerspectiveFrameCamera(camera: Partial<FrameCamera>): camera is PerspectiveFrameCamera;
export declare function isOrthographicFrameCamera(camera: Partial<FrameCamera>): camera is OrthographicFrameCamera;
export declare function withPositionAndViewVector(camera: FrameCamera): FrameCamera & {
    position: Vector3.Vector3;
    viewVector: Vector3.Vector3;
};
export declare function createPerspective(data?: Partial<PerspectiveFrameCamera>): PerspectiveFrameCamera;
export declare function createOrthographic(data?: Partial<OrthographicFrameCamera>): OrthographicFrameCamera;
export declare function toOrthographic(data: PerspectiveFrameCamera, boundingBox: BoundingBox.BoundingBox): OrthographicFrameCamera;
export declare function toPerspective(data: OrthographicFrameCamera, fovY?: number): PerspectiveFrameCamera;
export declare function toProtobuf(camera: Partial<FrameCamera>): vertexvis.protobuf.stream.ICamera;
