import { Mesh } from 'three'; import type { PerspectiveCamera, Texture } from 'three'; import type { StereoMode } from '@vizor-vr/shared'; import type { IProjection } from './projection.js'; /** * Flat projection for standard 2D and 3D (SBS/TB) video. * * Behaves like `object-fit: contain` — the plane preserves the video's * native aspect ratio and scales to fit as large as possible within the * viewport. Letterbox / pillarbox bars appear only when the video and * container aspect ratios differ. */ export declare class FlatProjection implements IProjection { private meshes; /** Video aspect ratio (accounts for stereo layout). */ private videoAspect; private stereoMode; createMeshes(texture: Texture, stereoMode: StereoMode): Mesh[]; configureCamera(camera: PerspectiveCamera): void; /** * Scale the plane every frame to fit inside the camera frustum * while preserving the video's native aspect ratio (`object-fit: contain`). * * Also re-reads the video dimensions so the aspect ratio updates if * the source changes (e.g. adaptive streaming resolution switch). */ update(camera: PerspectiveCamera, _time: number): void; dispose(): void; private createPlane; private remapUVs; } //# sourceMappingURL=flat-projection.d.ts.map