import type { IPlayOptions } from '../interfaces';
import type { AudioProcessor } from '../pipeline';
import type { HTMLAudio } from './HTMLAudio';
import { Observable } from 'modern-idoc';
export declare class HTMLSound extends Observable {
    static readonly PADDING = 0.1;
    protected _source: HTMLAudioElement | null;
    protected _audio: HTMLAudio | null;
    protected _end: number;
    protected _pausedReal: boolean;
    protected _duration: number;
    protected _start: number;
    protected _playing: boolean;
    get progress(): number;
    /** Paused */
    protected _paused: boolean;
    get paused(): boolean;
    set paused(val: boolean);
    /** PlaybackRate */
    protected _playbackRate: number;
    get playbackRate(): number;
    set playbackRate(val: number);
    /** Volume */
    protected _volume: number;
    get volume(): number;
    set volume(val: number);
    /** Loop */
    protected _loop: boolean;
    get loop(): boolean;
    set loop(val: boolean);
    /** Muted */
    protected _muted: boolean;
    get muted(): boolean;
    set muted(val: boolean);
    set(name: 'playbackRate' | 'volume' | 'muted' | 'loop' | 'paused', value: number | boolean): this;
    protected _onPlay(): void;
    protected _onPause(): void;
    init(audio: HTMLAudio): this;
    protected _stop(): void;
    stop(): void;
    get processors(): AudioProcessor[];
    set processors(_val: AudioProcessor[]);
    refresh(): void;
    refreshPaused(): void;
    play(options?: IPlayOptions): void;
    protected _onUpdate: () => void;
    protected _onComplete(): void;
    destroy(): void;
}
