import type { WebGLRenderer } from 'three'; import type { PlayerState } from '../core/player-state.js'; import type { VzEventEmitter } from '../core/event-emitter.js'; import type { CameraController } from '../renderer/camera-controller.js'; /** * Manages the WebXR session lifecycle. * * When entering XR: * - Requests an immersive-vr session * - Connects it to Three.js via renderer.xr.setSession() * - Three.js swaps to XRSession.requestAnimationFrame and renders per-eye * - Our layer-based stereo (Layer 1=left, Layer 2=right) maps directly * - CameraController is disabled (headset drives camera) * * When exiting XR: * - Three.js reverts to window.requestAnimationFrame * - CameraController is re-enabled */ export declare class XRManager { private renderer; private state; private events; private cameraController; private session; private controllerInput; constructor(renderer: WebGLRenderer, state: PlayerState, events: VzEventEmitter, cameraController: CameraController); /** Check if immersive-vr sessions are supported */ static isSupported(): Promise; /** Request and start an immersive-vr session */ enterXR(): Promise; /** End the current XR session */ exitXR(): Promise; /** Toggle XR on/off */ toggleXR(): Promise; /** Whether an XR session is currently active */ get isActive(): boolean; /** Set handler for controller select (trigger press) */ setSelectHandler(handler: () => void): void; /** Clean up */ dispose(): void; private onSessionEnd; } //# sourceMappingURL=xr-manager.d.ts.map