/**
 * Copyright (c) 2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { BehaviorSubject, Subject } from 'rxjs';
import { WebGLContext } from '../../mol-gl/webgl/context.js';
import { Camera } from '../camera.js';
import { PointerHelper } from './pointer-helper.js';
import { InputObserver } from '../../mol-util/input/input-observer.js';
import { StereoCamera } from '../camera/stereo.js';
import { Scene } from '../../mol-gl/scene.js';
import { Canvas3dInteractionHelper } from './interaction-events.js';
import { ParamDefinition as PD } from '../../mol-util/param-definition.js';
import { Binding } from '../../mol-util/binding.js';
export declare const DefaultXRManagerBindings: {
    exit: Binding;
    togglePassthrough: Binding;
    gestureScale: Binding;
};
export declare const DefaultXRManagerAttribs: {
    bindings: {
        exit: Binding;
        togglePassthrough: Binding;
        gestureScale: Binding;
    };
};
export type XRManagerAttribs = typeof DefaultXRManagerAttribs;
export declare const XRManagerParams: {
    minTargetDistance: PD.Numeric;
    disablePostprocessing: PD.BooleanParam;
    resolutionScale: PD.Numeric;
    sceneRadiusInMeters: PD.Numeric;
};
export type XRManagerParams = typeof XRManagerParams;
export type XRManagerProps = PD.Values<XRManagerParams>;
export declare class XRManager {
    private webgl;
    private input;
    private scene;
    private camera;
    private stereoCamera;
    private pointerHelper;
    private interactionHelper;
    private hoverSub;
    private keyUpSub;
    private gestureSub;
    private sessionChangedSub;
    readonly togglePassthrough: Subject<void>;
    readonly sessionChanged: Subject<void>;
    readonly isSupported: BehaviorSubject<boolean>;
    private xrSession;
    get session(): XRSession | undefined;
    private xrRefSpace;
    private scaleFactor;
    private prevScale;
    private prevInput;
    private hit;
    readonly props: XRManagerProps;
    readonly attribs: XRManagerAttribs;
    setProps(props: Partial<XRManagerProps>): void;
    setAttribs(attribs: Partial<XRManagerAttribs>): void;
    private intersect;
    setScaleFactor(factor: number): void;
    resetScale(): void;
    update(xrFrame?: XRFrame): boolean;
    private setSession;
    end(): Promise<void>;
    private checkSupported;
    request(): Promise<void>;
    dispose(): void;
    constructor(webgl: WebGLContext, input: InputObserver, scene: Scene, camera: Camera, stereoCamera: StereoCamera, pointerHelper: PointerHelper, interactionHelper: Canvas3dInteractionHelper, props?: Partial<XRManagerProps>, attribs?: Partial<XRManagerAttribs>);
}
