export interface AudioParamLike { value: number; } export interface AudioNodeLike { connect(destination: AudioNodeLike): void; } export interface BiquadFilterNodeLike extends AudioNodeLike { frequency: AudioParamLike; Q: AudioParamLike; type: string; } export interface GainNodeLike extends AudioNodeLike { gain: AudioParamLike; } export interface DynamicsCompressorNodeLike extends AudioNodeLike { } export interface ConvolverNodeLike extends AudioNodeLike { buffer: AudioBufferLike | null; normalize: boolean; } export interface AudioBufferLike { readonly duration: number; } export interface AudioBufferSourceNodeLike extends AudioNodeLike { buffer: AudioBufferLike | null; loop: boolean; playbackRate: AudioParamLike; onended: (() => void) | null; start(when?: number, offset?: number, duration?: number): void; stop(when?: number): void; } export interface PannerNodeLike extends AudioNodeLike { positionX: AudioParamLike; positionY: AudioParamLike; positionZ: AudioParamLike; refDistance?: number; maxDistance?: number; rolloffFactor?: number; distanceModel?: string; } export interface AudioDestinationNodeLike extends AudioNodeLike { } export interface AudioContextLike { readonly destination: AudioDestinationNodeLike; readonly currentTime: number; state: 'suspended' | 'running' | 'closed'; resume(): Promise; suspend(): Promise; createGain(): GainNodeLike; createDynamicsCompressor(): DynamicsCompressorNodeLike; createBufferSource(): AudioBufferSourceNodeLike; createPanner?(): PannerNodeLike; createBiquadFilter?(): BiquadFilterNodeLike; createConvolver?(): ConvolverNodeLike; decodeAudioData?(data: ArrayBuffer): Promise; } export type AudioContextFactory = () => AudioContextLike; export interface AudioGraph { context: AudioContextLike; master: GainNodeLike; compressor: DynamicsCompressorNodeLike; filter?: BiquadFilterNodeLike; reverb?: ReverbNode; } export interface ReverbNode { convolver: ConvolverNodeLike; input: GainNodeLike; output: GainNodeLike; } export declare class AudioContextController { private readonly factory; private context?; constructor(factory: AudioContextFactory); getContext(): AudioContextLike; resume(): Promise; getState(): AudioContextLike['state']; } export declare function createAudioGraph(controller: AudioContextController): AudioGraph; //# sourceMappingURL=context.d.ts.map