import { IWaveAudioMeta } from '../audio/WaveAudio';
import { BaseAudioChannel } from './BaseAudioChannel';
import { IAudioChannel } from './IAudioChannel';
export declare class WebAudioChannel extends BaseAudioChannel implements IAudioChannel {
    static maxChannels: number;
    static _channels: Array<WebAudioChannel>;
    static _decodeCache: Record<string, AudioBuffer>;
    static _errorCache: Record<string, any>;
    static _audioCtx: AudioContext;
    static getOfflineContext(channels?: number, samples?: number, rate?: number): OfflineAudioContext;
    static getAudioContext(): AudioContext;
    private _audioCtx;
    private _usingNativePanner;
    private _gainNode;
    private _pannerNode;
    private _source;
    private _currentTime;
    private _volume;
    private _pan;
    private _groupID;
    private _groupVolume;
    private _groupPan;
    private _startTime;
    private _duration;
    private _onEndedDelegate;
    static stopAllSounds(channelGroup?: number): void;
    static setChannelGroupVolume(value: number, channelGroup?: number): void;
    get duration(): number;
    get currentTime(): number;
    get groupID(): number;
    set groupID(value: number);
    get groupVolume(): number;
    set groupVolume(value: number);
    get groupPan(): number;
    set groupPan(value: number);
    get volume(): number;
    set volume(value: number);
    get pan(): number;
    set pan(value: number);
    constructor(groupID?: number, groupVolume?: number, groupPan?: number);
    restart(): boolean;
    play(buffer: ArrayBuffer, offset?: number, loop?: boolean | number, id?: number, meta?: IWaveAudioMeta): void;
    private stopInternally;
    stop(): void;
    private _decodeAndExecute;
    _onDecodeComplete(buffer: AudioBuffer, meta: IWaveAudioMeta): void;
    private executeBuffer;
    _onError(_event: any): void;
    private _onEnded;
    private _disposeSource;
    private removeSilent;
}
//# sourceMappingURL=WebAudioChannel.d.ts.map