import type { Audio } from '../Audio';
import { AudioPipeline } from '../pipeline';
import { WebAudioContext } from './WebAudioContext';
import { WebSound } from './WebSound';
export declare class WebAudio extends AudioPipeline {
    parent: Audio;
    /** Source */
    protected _sourceBuffer?: AudioBuffer;
    protected _sourceNode: AudioBufferSourceNode;
    protected _sourceLoad?: Promise<this>;
    /** Nodes */
    gain: GainNode;
    analyser: AnalyserNode;
    get context(): WebAudioContext;
    get isPlayable(): boolean;
    get duration(): number;
    get buffer(): AudioBuffer | null;
    set buffer(val: AudioBuffer | null);
    constructor(parent: Audio);
    load(): Promise<this>;
    protected _loadUrl(url: string): Promise<this>;
    protected _decode(buffer: ArrayBuffer | AudioBuffer): Promise<AudioBuffer>;
    cloneSource(): {
        source: AudioBufferSourceNode;
        gain: GainNode;
    };
    createSound(): WebSound;
}
