import type { IAudioContext } from '../interfaces';
import { AudioPipeline } from '../pipeline';
export declare class WebAudioContext extends AudioPipeline implements IAudioContext {
    /** Singleton */
    protected static _instance?: WebAudioContext;
    static get instance(): WebAudioContext;
    static get audioContext(): AudioContext;
    static get offlineContext(): OfflineAudioContext;
    static setParamValue(param: AudioParam, value: number): void;
    static decode(buffer: ArrayBuffer): Promise<AudioBuffer>;
    /** Context */
    protected _context: AudioContext;
    protected _offlineContext: OfflineAudioContext;
    get audioContext(): AudioContext;
    get offlineContext(): OfflineAudioContext;
    protected _locked: boolean;
    muted: boolean;
    volume: number;
    playbackRate: number;
    /** Paused */
    autoPause: boolean;
    protected _paused: boolean;
    protected _pausedOnBlur: boolean;
    get paused(): boolean;
    set paused(val: boolean);
    /** Nodes */
    protected _compressor: DynamicsCompressorNode;
    protected _analyser: AnalyserNode;
    constructor();
    protected _onFocus(): void;
    protected _onBlur(): void;
    protected _unlock: () => void;
    playEmptySound(): void;
    refresh(): void;
    refreshPaused(): void;
    toggleMute(): boolean;
    togglePause(): boolean;
    decode(buffer: ArrayBuffer): Promise<AudioBuffer>;
    setParamValue(param: AudioParam, value: number): void;
}
