/** Owns the host viewport camera and its canvas controls. */ import { ArcRotateCamera } from "@babylonjs/core/Cameras/arcRotateCamera.js"; import { Camera } from "@babylonjs/core/Cameras/camera.js"; import { Vector3, type Matrix } from "@babylonjs/core/Maths/math.vector.js"; import type { Node } from "@babylonjs/core/node.js"; import type { Scene } from "@babylonjs/core/scene.js"; import type { SceneFocusOptions, SceneFocusResult, SceneViewState, ViewportCameraConfig } from "@skenora/contracts"; import { type AnimationPropertyOwners } from "./animation-property-owners.js"; export type CameraView = "front" | "back" | "left" | "right" | "top" | "bottom" | "perspective"; export interface NodeBounds { minimum: Vector3; maximum: Vector3; center: Vector3; radius: number; } export interface ModelViewerControlOptions { zoom?: boolean; orbit?: boolean; verticalOrbit?: boolean; pan?: boolean; } export interface CalculateNodeBoundsOptions { /** Transform mesh-local bounding corners into a requested coordinate space. */ worldToSpace?: Matrix; includeDisabled?: boolean; includeInvisible?: boolean; participation?: import("../projection/node-participation.js").RuntimeNodeParticipation; } export declare class CameraController { #private; readonly owners?: AnimationPropertyOwners | undefined; readonly scene: Scene; readonly camera: ArcRotateCamera; constructor(scene: Scene, canvas: HTMLCanvasElement, config: ViewportCameraConfig, owners?: AnimationPropertyOwners | undefined); apply(config: ViewportCameraConfig): void; frame(nodes: readonly Node[], padding?: number): NodeBounds | null; setView(view: CameraView): void; /** Loaded world bounds, aspect-aware fitting and one owned, cancellable transition. */ focus(nodes: readonly Node[], options?: SceneFocusOptions): Promise; configureModelViewerControls(options?: ModelViewerControlOptions): void; configureDepthRange(bounds: Readonly): void; setEnabled(enabled: boolean): void; suspendControls(): () => void; capture(): ViewportCameraConfig; captureView(): SceneViewState; restoreView(state: SceneViewState): void; cancelFocus(): void; dispose(): void; } export declare function isRuntimeCamera(camera: Camera | null): camera is ArcRotateCamera; export declare function calculateNodeBounds(nodes: readonly Node[], options?: CalculateNodeBoundsOptions): NodeBounds | null; //# sourceMappingURL=camera-controller.d.ts.map