import { mat4, vec3 } from "gl-matrix"; import { Synth } from "../synth"; export interface CameraProps { near?: number; far?: number; up?: vec3; projectionMatrix?: mat4; viewMatrix?: mat4; inverseViewMatrix?: mat4; position?: vec3; target?: vec3; } export interface PerspectiveCameraProps extends CameraProps { fov: number; aspect: number; } export interface OrthographicCameraProps extends CameraProps { left: number; right: number; top: number; bottom: number; zoom: number; } export interface ControlsProps { element: HTMLElement; camera: Camera; minDistance?: number; maxDistance?: number; sensitivity?: { zoom?: number; rotate?: number; } | number; maxPolarAngle?: number; screenSpacePanning?: boolean; } export declare class Camera { synth: Synth; type: "perspective" | "orthographic"; control?: Controls; _position: vec3; _target: vec3; _up: vec3; props: K; initialProps: K; viewMatrix: mat4; projectionMatrix: mat4; readonly uniforms: { projectionMatrix: mat4; viewMatrix: mat4; }; constructor(synth: Synth, type: "perspective" | "orthographic", p: Partial, controlTo?: HTMLElement); perspective(props: PerspectiveCameraProps, controlTo?: HTMLElement): this; orthographic(props: OrthographicCameraProps): this; static isPerspective(camera: Camera): camera is Camera; updateMatrix(): this; reset(): this; resize(width: number, height: number): void; position(position: vec3): this; target(target: vec3): this; move(position: vec3): this; rotate(target: vec3): this; update(): void; zoom(): number; screenPanning(enabled?: boolean): this; dispose(): this; activate(): this; } declare class Controls { element: HTMLElement; camera: Camera; dragging: boolean; sensitivity: { zoom: number; rotate: number; }; minDistance: number; maxDistance: number; maxPolarAngle: number; screenSpacePanning: boolean; spherical: { distance: number; polar: number; azimuth: number; }; truckDistance: number; pedestalDistance: number; constructor(options: ControlsProps); activate(): void; reset(): void; update(): void; onWheel(event: WheelEvent): void; onDragStart(event: MouseEvent): void; onMove(event: PointerEvent): void; onDragEnd(event: MouseEvent): void; adjustSphericalCoordinates(deltaX: number, deltaY: number, deltaZoom: number): void; pan(deltaX: number, deltaY: number): void; dispose(): void; } export {};