/** * AudioContextImpl.ts * * Implementation of the HoloScript audio context with support for * buffer sources, oscillators, spatial audio, and effects chains. * * @module audio */ import { IAudioContext, IAudioSourceConfig, IAudioSourceState, IAudioListenerConfig, IAudioGroup, AudioEffect, AudioEventType, AudioEventCallback, IAudioEvent, IAudioSystemConfig, IVector3, IAudioOrientation } from './AudioTypes'; /** * HoloScript audio context implementation */ export declare class AudioContextImpl implements IAudioContext { private _state; private _currentTime; private _masterVolume; private _isMuted; private _previousVolume; private readonly config; private readonly sources; private readonly effects; private readonly groups; private readonly bufferCache; private readonly decodedBuffers; private readonly eventListeners; private listenerPosition; private listenerOrientation; private listenerVelocity; private timeUpdateInterval; constructor(config?: IAudioSystemConfig); initialize(): Promise; suspend(): Promise; resume(): Promise; dispose(): void; get state(): 'suspended' | 'running' | 'closed'; get currentTime(): number; get sampleRate(): number; setMasterVolume(volume: number): void; getMasterVolume(): number; mute(): void; unmute(): void; get isMuted(): boolean; setListenerPosition(position: IVector3): void; setListenerOrientation(orientation: IAudioOrientation): void; setListenerVelocity(velocity: IVector3): void; getListenerConfig(): IAudioListenerConfig; createSource(config: IAudioSourceConfig): Promise; getSource(id: string): IAudioSourceState | undefined; getAllSources(): IAudioSourceState[]; removeSource(id: string): boolean; play(sourceId: string, when?: number): void; stop(sourceId: string): void; pause(sourceId: string): void; resumeSource(sourceId: string): void; setVolume(sourceId: string, volume: number): void; setPitch(sourceId: string, pitch: number): void; setLoop(sourceId: string, loop: boolean, start?: number, end?: number): void; setPosition(sourceId: string, position: IVector3): void; setOrientation(sourceId: string, orientation: IVector3): void; createEffect(config: AudioEffect): string; getEffect(id: string): AudioEffect | undefined; removeEffect(id: string): boolean; connectSourceToEffect(sourceId: string, effectId: string): void; disconnectSourceFromEffect(sourceId: string, effectId: string): void; createGroup(config: IAudioGroup): string; getGroup(id: string): IAudioGroup | undefined; setGroupVolume(groupId: string, volume: number): void; setGroupMuted(groupId: string, muted: boolean): void; setGroupSolo(groupId: string, solo: boolean): void; loadBuffer(url: string): Promise; decodeBuffer(buffer: ArrayBuffer): Promise; getCachedBuffer(url: string): ArrayBuffer | undefined; clearBufferCache(): void; on(event: AudioEventType, callback: AudioEventCallback): void; off(event: AudioEventType, callback: AudioEventCallback): void; emit(event: IAudioEvent): void; getAnalyzerData(sourceId: string): Float32Array | undefined; getFrequencyData(sourceId: string): Uint8Array | undefined; private updatePlayingSources; /** * Calculate spatial audio gain based on distance */ calculateSpatialGain(sourcePosition: IVector3): number; } /** * Create a new audio context */ export declare function createAudioContext(config?: IAudioSystemConfig): IAudioContext; //# sourceMappingURL=AudioContextImpl.d.ts.map