/// import { Camera, RootState } from "@react-three/fiber"; import { Object3D } from "three"; import { StoreApi } from "zustand"; export type XRImageTrackingScore = "untrackable" | "trackable"; export type XRImageTrackingState = "tracked" | "emulated"; export type XRImageTrackingResult = { readonly imageSpace: XRSpace; initialPose?: XRPose; readonly index: number; readonly trackingState: XRImageTrackingState; readonly measuredWidthInMeters: number; }; export type XRTrackedImageInit = { image: ImageBitmap; widthInMeters: number; }; export type XRInputSourceMap = Map; export type TrackedImagesMap = Map; export type ExtendedXRSessionMode = XRState["mode"]; export type ExtendedXRPlane = XRPlane & { semanticLabel?: string; initialPose?: XRPose; }; export type ExtendedXRMesh = XRMesh & { semanticLabel?: string; initialPose?: XRPose; }; export type XRState = ({ mode: XRSessionMode; session: XRSession; inputSources: XRInputSourceMap; initialCamera: Camera; layers: Array<{ index: number; layer: XRLayer; }>; trackedImages: TrackedImagesMap; requestedTrackedImages?: ReadonlyArray; trackedPlanes: ReadonlyArray; trackedMeshes: ReadonlyArray; visibilityState: XRVisibilityState; } | { mode: "none"; session?: undefined; inputSources?: undefined; initialCamera?: undefined; layers?: undefined; trackedImages?: undefined; requestedTrackedImages?: undefined; trackedPlanes?: undefined; trackedMeshes?: undefined; visibilityState?: undefined; }) & { store?: StoreApi; onNextFrameCallbacks: Set<(state: RootState, delta: number, frame: XRFrame | undefined) => void>; }; export type GrabbableEventListener = (inputSourceId: number, target: Object3D) => void; /** * allow to subscribe to the current xr state * allows to retrieve the current state via useXR.getState() */ export declare const useXR: import("zustand").UseBoundStore & { onFrame: (state: RootState, delta: number, frame: XRFrame | undefined) => void; setStore(store: StoreApi): void; addLayer(index: number, layer: XRLayer): void; removeLayer(layer: XRLayer): void; onVisibilityStateChanged(e: XRSessionEvent): void; onXRInputSourcesChanged(e: XRInputSourceChangeEvent): void; onXREnd(e: XRSessionEvent): void; setSession(session: XRSession, mode: XRSessionMode, requestedTrackedImages?: ReadonlyArray): Promise; }>>;