interface AudioReaderOptions {
    playbackRate: number;
    contentStartTime: number;
}
interface AudioPreloadContext {
    audioContext: AudioContext;
    audioWorkletNode: AudioWorkletNode;
    audioEl: AudioElement;
}
interface AudioElement {
    audioEl: HTMLAudioElement;
    source: MediaElementAudioSourceNode;
    initializationSuccess: boolean;
}
export declare class MovieAudioReader {
    static audioProcessorLoaded: boolean;
    static processorCodePath: string;
    static maxAudioInputs: number;
    static pauseTimeout: any;
    static availableAudioIndexes: number[];
    static audioContext: AudioPreloadContext;
    static audioElements: {
        [path: string]: AudioElement;
    };
    static audioReaders: MovieAudioReader[];
    static preload(path: string, useNow?: boolean): Promise<{
        audioEl: AudioElement;
        audioContext: AudioContext;
        audioWorkletNode: AudioWorkletNode;
    }>;
    static createAudioElement(path: string): AudioElement;
    static pauseAll(): void;
    static playAll(): void;
    static MakeFromPath(path: string): MovieAudioReader;
    static MakeFromBytes(bytesOffset: number, length: number): MovieAudioReader;
    path: string;
    audioEl: HTMLAudioElement;
    audioContext: AudioContext;
    audioWorkletNode: AudioWorkletNode;
    preloadContext: AudioPreloadContext;
    source: MediaElementAudioSourceNode;
    audioPromise: Promise<MovieAudioReader>;
    contentTime: number;
    released: boolean;
    inputChannelCount: number;
    targetBitDepth: number;
    inputSampleRate: number;
    audioSampleCount: number;
    silenceAudioSampleCount: number;
    maxOutSampleCount: number;
    adjustRange: number;
    audioData: any[];
    lastBufferData: any;
    playbackRate: number;
    paused: boolean;
    audioPaused: boolean;
    audioIndex: number;
    type: number;
    audioContextResume: boolean;
    audioInitializationSuccess: boolean;
    lastPostAudioTime: number;
    private constructor();
    render(): void;
    readNextSample(): {
        bytes: number;
        length: number;
        sampleRate: number;
        channels: number;
        outputSamplesCount: number;
    };
    decodeAudio(): Promise<MovieAudioReader>;
    setOptions(options: AudioReaderOptions): void;
    freeBuffer(): void;
    pause(): Promise<unknown>;
    continue(): Promise<boolean>;
    seekTo(contentTime: number, forceSeek?: boolean): void;
    release(): void;
    private playAudio;
    private pauseAudio;
    private resume;
}
export {};
