import IDisposable from '../../lang/IDisposable';
import { Second } from '../../units/Units';
import ReadOnlySubject from '../../rx/ReadOnlySubject';
import IsoBmffSegment from '../decode/bitstream/container/isobmff/segment/IsoBmffSegment';
import { TrackWriterWriteStatus } from '../decode/track/TrackWriterWriteStatus';
export type IsoBmffPlayerOptions = {
    audioMimeType?: string;
    videoMimeType?: string;
    targetPlayoutBufferDuration?: Second;
};
export declare enum IsoBmffPlayerState {
    Initializing = 0,
    Initialized = 1,
    Buffering = 2,
    Playing = 3,
    Paused = 4,
    Failed = 5,
    Stopped = 6
}
export default class IsoBmffPlayer implements IDisposable {
    private readonly _logger;
    private readonly _state;
    private readonly _readOnlyState;
    private readonly _audioMimeType;
    private readonly _videoMimeType;
    private readonly _mediaElement;
    private readonly _mseDecoder;
    private readonly _audioTrackFeeder;
    private readonly _videoTrackFeeder;
    private readonly _playbackMonitor;
    private readonly _disposables;
    constructor(mediaElement: HTMLMediaElement, options?: IsoBmffPlayerOptions);
    get state(): ReadOnlySubject<IsoBmffPlayerState>;
    get bufferedLength(): Second;
    appendAudioSegment(segment: IsoBmffSegment): Promise<TrackWriterWriteStatus>;
    appendVideoSegment(segment: IsoBmffSegment): Promise<TrackWriterWriteStatus>;
    reset(): void;
    dispose(): void;
    private handleMseDecoderError;
    private handleMseDecoderInitializing;
    private handleMseDecoderDecoding;
    private onMseDecoderStatus;
    private resetTrackFeeders;
    private dropSegment;
    private feedInitializationSegment;
    private feedSegment;
    private updatePlaybackSettings;
    private enforceCurrentTimeInBufferedRange;
    private triggerMediaElementPlay;
}
