import { AudioSampleSink, InputAudioTrack, InputTrack, InputVideoTrack, VideoSampleSink } from 'mediabunny';
import { MediaSample, SampleBuffer } from '../SampleBuffer';
interface BufferedSeekingInputOptions {
    videoBufferSize?: number;
    audioBufferSize?: number;
    /**
     * Timeline offset in milliseconds to map user timeline to media timeline.
     * Applied during seeking to handle media that doesn't start at 0ms.
     */
    startTimeOffsetMs?: number;
}
export declare class NoSample extends RangeError {
}
export declare class ConcurrentSeekError extends RangeError {
}
export declare class BufferedSeekingInput {
    #private;
    private input;
    private trackIterators;
    private trackBuffers;
    private options;
    private trackIteratorCreationPromises;
    private trackSeekPromises;
    /**
     * Timeline offset in milliseconds to map user timeline to media timeline.
     * Applied during seeking to handle media that doesn't start at 0ms.
     */
    private readonly startTimeOffsetMs;
    constructor(arrayBuffer: ArrayBuffer, options?: BufferedSeekingInputOptions);
    getBufferSize(trackId: number): number;
    getBufferContents(trackId: number): readonly MediaSample[];
    getBufferTimestamps(trackId: number): number[];
    clearBuffer(trackId: number): void;
    computeDuration(): Promise<number>;
    getTrack(trackId: number): Promise<InputTrack>;
    getAudioTrack(trackId: number): Promise<InputAudioTrack>;
    getVideoTrack(trackId: number): Promise<InputVideoTrack>;
    getFirstVideoTrack(): Promise<InputVideoTrack | undefined>;
    getFirstAudioTrack(): Promise<InputAudioTrack | undefined>;
    getTrackIterator(track: InputTrack): AsyncIterator<MediaSample, any, undefined>;
    createTrackSampleSink(track: InputTrack): AudioSampleSink | VideoSampleSink;
    createTrackIterator(track: InputTrack): AsyncGenerator<import('mediabunny').VideoSample, void, unknown> | AsyncGenerator<import('mediabunny').AudioSample, void, unknown>;
    createTrackBuffer(track: InputTrack): SampleBuffer;
    getTrackBuffer(track: InputTrack): SampleBuffer;
    seek(trackId: number, timeMs: number): Promise<MediaSample | undefined>;
    private resetIterator;
    private seekSafe;
}
export {};
