import * as THREE from "three"; //#region src/addons/netblocks/src/core/voice/SpatialVoice.d.ts export interface SpatialVoiceOptions { /** Reference distance (m) at which volume is 1.0. */ refDistance?: number; /** Distance model rolloff factor. */ rolloffFactor?: number; /** Maximum distance after which audio attenuation stops decreasing. */ maxDistance?: number; } export declare class SpatialVoice { readonly listener: THREE.AudioListener; private _byPeer; private _primersByPeer; private _opts; /** * @param listener - The shared `THREE.AudioListener` to spatialize against — * typically `xb.core.sound.listener`, which CoreSound has already attached * to the camera. SpatialVoice does NOT take ownership: it never adds or * removes the listener from the scene, so disposing SpatialVoice leaves * CoreSound's audio path untouched. */ constructor(listener: THREE.AudioListener, opts?: SpatialVoiceOptions); /** * Attach a MediaStream to a peer; (re-)creates the PositionalAudio node and * parents it to `parent` (typically the remote user's headPivot). * `muted` is applied before connecting the source, including replacements. */ attach(peerId: string, parent: THREE.Object3D, stream: MediaStream, muted?: boolean): void; /** * Apply an effective mute to an attached peer's own gain only. * Preferences for future streams are owned by NetSession, not this graph. */ setPlaybackMuted(peerId: string, muted: boolean): void; private _validatePlayback; private _setMuted; detach(peerId: string): void; dispose(): void; } //#endregion