import { IAudioTrack, IDashURLSource, IHLSSource, IInternalTextTrack, IVideoTrack, VideoCodec } from '../../player/types';
import { IProviderSubscriptionInfo, ProviderState } from './lib/types';
import { CommonInit, Representation, Stream } from '../../providers/utils/parsers/types';
import { IProvider, IProviderParams } from '../../providers/types';
import { IObservableVideo } from '../../providers/utils/HTMLVideoElement/observable';
import { TrackHistory } from '../../utils/autoSelectTrack';
import { IStateMachine } from '../../utils/StateMachine/types';
import { ISubscription, ITracer, Milliseconds } from '@vkontakte/videoplayer-shared';
import { Player } from './lib/player';
import { Scene3D } from '../../utils/3d/Scene3D';
import DroppedFramesManager from '../../providers/utils/HTMLVideoElement/DroppedFramesManager';
import TextTrackManager from '../../providers/utils/HTMLVideoElement/TextTrackManager';
import StallsManager from '../../providers/utils/StallsManager';
import { ElementSizeManager } from './lib/ElementSizeManager';
type IParams = IProviderParams<IDashURLSource> & {
    sourceHls?: IHLSSource;
    forceVideoCodec?: VideoCodec;
};
export default abstract class BaseDashProvider implements IProvider {
    scene3D: Scene3D | undefined;
    protected subscription: ISubscription;
    protected videoState: IStateMachine<ProviderState>;
    protected video: HTMLVideoElement;
    protected observableVideo: IObservableVideo | null;
    protected player: Player;
    protected params: IParams;
    protected tracer: ITracer;
    protected textTracksManager: TextTrackManager;
    protected droppedFramesManager: DroppedFramesManager;
    protected stallsManager: StallsManager;
    protected elementSizeManager: ElementSizeManager;
    protected videoTracksMap: Map<IVideoTrack, {
        stream: Stream;
        representation: Representation;
    }>;
    protected audioTracksMap: Map<IAudioTrack, {
        stream: Stream;
        representation: Representation;
    }>;
    protected textTracksMap: Map<IInternalTextTrack, {
        stream: Stream;
        representation: Representation;
    }>;
    protected videoStreamsMap: Map<Stream, IVideoTrack[]>;
    protected audioStreamsMap: Map<Stream, IAudioTrack[]>;
    protected videoTrackSwitchHistory: TrackHistory<IVideoTrack>;
    protected audioTrackSwitchHistory: TrackHistory<import("../../player/types").IBaseTrack>;
    private readonly selectedRepresentations;
    constructor(params: IParams);
    protected abstract seek(position: Milliseconds, forcePrecise: boolean): void;
    protected getProviderSubscriptionInfo(): IProviderSubscriptionInfo;
    protected subscribe(): void;
    protected selectVideoAudioRepresentations(): [Representation, Representation | undefined] | undefined;
    protected prepare(manifestOffset?: number): void;
    protected syncPlayback: () => undefined;
    protected init3DScene: (init: CommonInit) => void;
    protected destroy3DScene: () => void;
    protected playIfAllowed(): void;
    destroy(): void;
}
export {};
