import type { Vector3, Vector3Like, Vector3Tuple } from 'three';
interface Context {
    position: Vector3Tuple;
    rotation: number;
    set: (pos?: Vector3Tuple, rot?: number) => void;
    /** Request persistence of the current origin (creates/updates the XR anchor). */
    commit: () => void;
    /** Called once by OriginMarker to wire the commit implementation. */
    registerCommit: (fn: () => void) => void;
    /**
     * Convert a position reported in the composed XR reference space
     * (zUp offset by the current origin) into the zUp frame that
     * `position`/`rotation` are stored in. Writes into `out` and returns it.
     */
    toZUpPos: (out: Vector3, p: Vector3Like) => Vector3;
    /**
     * Rotate a direction from the composed XR reference space into zUp
     * (no translation). Mutates `v` in place and returns it.
     */
    toZUpDir: (v: Vector3) => Vector3;
}
export declare const provideOrigin: () => Context;
export declare const useOrigin: () => Context;
export {};
