declare global {
    interface XRSystem {
        offerSession?: XRSystem['requestSession'];
    }
}
import type { WebXRManager, Event as ThreeEvent } from 'three';
import type { XRHandModelFactory } from 'three/examples/jsm/webxr/XRHandModelFactory.js';
import type { XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerModelFactory.js';
import { type Snippet } from 'svelte';
interface Props {
    /**
     * Enables foveated rendering. Default is `1`, the three.js default.
     *
     * 0 = no foveation, full resolution
     *
     * 1 = maximum foveation, the edges render at lower resolution
     */
    foveation?: number;
    /**
     * The target framerate for the XRSystem. Smaller rates give more CPU headroom at the cost of responsiveness.
     * Recommended range is `72`-`120`. Default is unset and left to the device.
     * @note If your experience cannot effectively reach the target framerate, it will be subject to frame reprojection
     * which will halve the effective framerate. Choose a conservative estimate that balances responsiveness and
     * headroom based on your experience.
     * @see https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Rendering#refresh_rate_and_frame_rate
     */
    frameRate?: number | undefined;
    /** Type of WebXR reference space to use. Default is `local-floor` */
    referenceSpace?: XRReferenceSpaceType;
    fallback?: Snippet;
    children?: Snippet;
    /** Called as an XRSession is started */
    onsessionstart?: (event: ThreeEvent<'sessionstart', WebXRManager>) => void;
    /** Called after an XRSession is ended */
    onsessionend?: (event: XRSessionEvent) => void;
    /** Optionally provide custom XRHandModelFactory */
    handFactory?: XRHandModelFactory;
    /** Optionally provide custom XRControllerModelFactory */
    controllerFactory?: XRControllerModelFactory;
    /** Called when an XRSession is hidden or unfocused. */
    onvisibilitychange?: (event: XRSessionEvent) => void;
    /** Called when available inputsources change */
    oninputsourceschange?: (event: XRSessionEvent) => void;
    /** Called when the session frame rate changes. */
    onframeratechange?: (event: XRSessionEvent) => void;
    /**
     * Auto-enter a session when the OS grants one without an explicit request
     * (e.g. when the user puts on a headset). Pass `false` to disable, or an
     * array of modes to restrict which modes are eligible.
     * @default true
     */
    enterGrantedSession?: boolean | XRSessionMode[];
    /**
     * Pre-offer a session via `navigator.xr.offerSession` so the browser can
     * show its own entry UI (e.g. Vision Pro). When `true`, offers AR if
     * supported, otherwise VR. Pass a specific mode to restrict. Pass `false`
     * to disable.
     * @default true
     */
    offerSession?: boolean | XRSessionMode;
}
/**
 * `<XR />` is a WebXR manager that configures your scene for XR rendering and interaction.
 *
 * This should be placed within a Threlte `<Canvas />`.
 *
 * ```svelte
 * <XR
 *   foveation={1}
 *   frameRate={90}
 *   referenceSpace='local-floor'
 *   onsessionstart={(event: XREvent<XRManagerEvent>) => {}}
 *   onsessionend={(event: XREvent<XRManagerEvent>) => {}}
 *   onvisibilitychange={(event: XREvent<XRSessionEvent>) => {}}
 *   oninputsourceschange={(event: XREvent<XRSessionEvent>) => {}}
 * />
 * ```
 */
declare const Xr: import("svelte").Component<Props, {}, "">;
type Xr = ReturnType<typeof Xr>;
export default Xr;
