import { IInternalTextTrack } from '../../player/types';
import { IValueSubject, Milliseconds, IError, ISubject } from '@vkontakte/videoplayer-shared';
import { HLSManifestData } from '../HlsProvider/manifestDataExtractor';
type FetchManifestData = (url: string, init?: RequestInit) => Promise<HLSManifestData>;
export declare class LiveTextManager {
    private readonly params;
    private readonly subscription;
    private readonly abortControllers;
    /** в случае перемотки будет сохранена актуальная ссылка "наконечника" стрима */
    private prepareUrl;
    private currentTextTrackData;
    availableTextTracks$: IValueSubject<IInternalTextTrack[] | null>;
    getCurrentTime$: IValueSubject<(() => number) | null>;
    error$: ISubject<IError>;
    constructor(liveTime$: IValueSubject<Milliseconds | undefined>, video: HTMLVideoElement, fetchManifestData: FetchManifestData, sourceUrl: string, downloadThreshold: number);
    destroy(): void;
    /**
     * одноименный метод из провайдера, который дергаем на перемотке,
     * чтобы синхронизировать субтитры с видео\аудио дорожками
     */
    prepare(url: string): Promise<void>;
    /** тут, на самом деле, мы получаем ссылку на плейлисты для текстовых треков */
    processTextTracks(textTracks: IInternalTextTrack[], baseUrl: string): Promise<void>;
    /**
     * @todo - пока только с 1 стримом работает
     */
    private parseTextTracks;
    /** парсим плейлист и получаем список треков */
    private parsePlaylist;
    /** забирает значение (value) строки в плейлисте */
    private extractPlaylistRowValue;
    /** обновляет ссылку на текущий сегмент субтитров для UI */
    private processLiveTime;
    /** догружает актуальные сабы */
    private fetchNextManifestData;
    private fetchManifestData;
    private error;
}
export {};
