import type { IPlayOptions } from '../interfaces';
import type { AudioProcessor } from '../pipeline';
import type { WebAudio } from './WebAudio';
import { Observable } from 'modern-idoc';
export declare class WebSound extends Observable {
    protected _audio: WebAudio | null;
    protected _sourceNode: AudioBufferSourceNode | null;
    protected _gain: GainNode | null;
    /** Progress */
    protected _progress: number;
    get progress(): number;
    /** Paused */
    protected _pausedReal: boolean;
    protected _paused: boolean;
    get paused(): boolean;
    set paused(val: boolean);
    /** Volume */
    protected _volume: number;
    get volume(): number;
    set volume(val: number);
    /** PlaybackRate */
    protected _playbackRate: number;
    get playbackRate(): number;
    set playbackRate(val: number);
    /** Loop */
    protected _loop: boolean;
    get loop(): boolean;
    set loop(val: boolean);
    /** Muted */
    protected _muted: boolean;
    get muted(): boolean;
    set muted(val: boolean);
    protected _duration: number;
    protected _end: number;
    protected _elapsed: number;
    protected _lastUpdate: number;
    /** Processors */
    protected _processors: AudioProcessor[];
    init(audio: WebAudio): this;
    protected _now(): number;
    play(options?: IPlayOptions): void;
    protected _stop(): void;
    stop(): void;
    protected _update(force?: boolean): void;
    refresh(): void;
    applyProcessors(): void;
    refreshPaused(): void;
    protected _onComplete: () => void;
    protected _updateListener: () => void;
    protected _enableTicker(enabled: boolean): void;
    destroy(): void;
}
