import * as THREE from 'three'; type ThreeProjectorToolOptions = { scene: THREE.Scene; renderer: THREE.WebGLRenderer; videoTexture: THREE.VideoTexture; projCamPosition?: [number, number, number]; projCamParams?: { fov?: number; aspect?: number; near?: number; far?: number; }; orientationParams?: { azimuthDeg?: number; elevationDeg?: number; rollDeg?: number; }; depthSize?: number; intensity?: number; opacity?: number; projBias?: number; edgeFeather?: number; cropRect?: [number, number, number, number]; quadCorners?: [ [ number, number ], [ number, number ], [ number, number ], [ number, number ] ]; isShowHelper?: boolean; enableOcclusionCulling?: boolean; showFarPlane?: boolean; }; interface ThreeProjectorTool { addTargetMesh: (mesh: THREE.Mesh) => void; removeTargetMesh: (mesh: THREE.Mesh) => void; update: () => void; dispose: () => void; azimuthDeg: number; elevationDeg: number; rollDeg: number; opacity: number; cropRect: [number, number, number, number]; quadCorners: [ [ number, number ], [ number, number ], [ number, number ], [ number, number ] ]; uniforms: any; overlays: THREE.Mesh[]; targetMeshes: THREE.Mesh[]; projCam: THREE.PerspectiveCamera; camHelper: THREE.CameraHelper | null; orientationParams: { azimuthDeg: number; elevationDeg: number; rollDeg: number; }; enableOcclusionCulling: boolean; showFarPlane: boolean; } declare function createThreeVideoProjector(opts: ThreeProjectorToolOptions): Promise; export { type ThreeProjectorTool, type ThreeProjectorToolOptions, createThreeVideoProjector };