///
import { ArrayCamera } from "../../cameras/ArrayCamera.js";
import { PerspectiveCamera } from "../../cameras/PerspectiveCamera.js";
import { EventDispatcher } from "../../core/EventDispatcher.js";
import { Vector4 } from "../../math/Vector4.js";
import { Mesh } from "../../objects/Mesh.js";
import { Texture } from "../../textures/Texture.js";
import { WebGLRenderer } from "../WebGLRenderer.js";
import { XRGripSpace, XRHandSpace, XRTargetRaySpace } from "./WebXRController.js";
export type WebXRCamera = PerspectiveCamera & { viewport: Vector4 };
export type WebXRArrayCamera = Omit & { cameras: [WebXRCamera, WebXRCamera] };
export interface WebXRManagerEventMap {
sessionstart: {};
sessionend: {};
planeadded: { data: XRPlane };
planeremoved: { data: XRPlane };
planechanged: { data: XRPlane };
planesdetected: { data: XRPlaneSet };
}
export class WebXRManager extends EventDispatcher {
/**
* @default true
*/
cameraAutoUpdate: boolean;
/**
* @default false
*/
enabled: boolean;
/**
* @default false
*/
isPresenting: boolean;
constructor(renderer: WebGLRenderer, gl: WebGLRenderingContext);
getController: (index: number) => XRTargetRaySpace;
getControllerGrip: (index: number) => XRGripSpace;
getHand: (index: number) => XRHandSpace;
setFramebufferScaleFactor: (value: number) => void;
setReferenceSpaceType: (value: XRReferenceSpaceType) => void;
getReferenceSpace: () => XRReferenceSpace | null;
setReferenceSpace: (value: XRReferenceSpace) => void;
getBaseLayer: () => XRWebGLLayer | XRProjectionLayer;
getBinding: () => XRWebGLBinding;
getFrame: () => XRFrame;
getSession: () => XRSession | null;
setSession: (value: XRSession | null) => Promise;
getEnvironmentBlendMode: () => XREnvironmentBlendMode | undefined;
getDepthTexture: () => Texture | null;
updateCamera: (camera: PerspectiveCamera) => void;
getCamera: () => WebXRArrayCamera;
getFoveation: () => number | undefined;
setFoveation: (value: number) => void;
hasDepthSensing: () => boolean;
getDepthSensingMesh: () => Mesh | null;
setAnimationLoop: (callback: XRFrameRequestCallback | null) => void;
dispose: () => void;
}