import { ExactVideoQuality, IObservable, IValueSubject, Milliseconds, Kbps, Seconds } from '@vkontakte/videoplayer-shared';
import { IVideoTrack } from '../../player/types';
import { ITuningConfig } from '../../utils/tuningConfig';
interface IConnectData {
    videoLastDataObtainedTimestamp$: IValueSubject<Milliseconds>;
    throughput$: IValueSubject<number>;
    rtt$: IValueSubject<Milliseconds>;
    isBuffering$: IObservable<boolean>;
    isSeeked$: IObservable<boolean>;
    looped$: IObservable<Seconds>;
    playing$: IObservable<undefined>;
    currentStallDuration$: IValueSubject<Milliseconds>;
    tuning: ITuningConfig['stallsManager'];
    abrParams: ITuningConfig['autoTrackSelection'];
    duration: Seconds;
}
declare class StallsManager {
    private currentStallDuration$;
    private videoLastDataObtainedTimestamp$;
    private throughput$;
    private rtt$;
    private tuning;
    private abrParams;
    private duration;
    private isSeeked$;
    private isBuffering$;
    private maxQualityLimit;
    private lastUniqueVideoTrackSelected;
    private currentStallsCount;
    private sumStallsDuration;
    private lastStallDuration;
    private providerStartWatchingTimestamp;
    private lastUniqueVideoTrackSelectedTimestamp;
    private predictedThroughputWithoutData;
    private qualityRestrictionTimer;
    private subscription;
    severeStallOccurred$: IValueSubject<boolean>;
    init(data: IConnectData): void;
    get videoMaxQualityLimit(): ExactVideoQuality | undefined;
    get predictedThroughput(): Kbps;
    get abrTuningParams(): ITuningConfig['autoTrackSelection'];
    set lastVideoTrackSelected(lastUniqueVideoTrackSelected: IVideoTrack);
    destroy(): void;
    private resetStoredAbrParamsIfNeeded;
    private updateStoredAbrParams;
    private calculateOptimalAbrParams;
    private getStoredData;
    private setStoredData;
    private removeStoredData;
    private addStallInfoToHistory;
    private updateStallData;
    private subscribe;
}
export default StallsManager;
