import { ClientMonitor } from "../ClientMonitor";
import { TrackMonitor } from "../monitors/TrackMonitor";
export type DefaultScoreCalculatorOutboundVideoTrackScoreAppData = {
    lastNScores: number[];
    diffBitrateSquares: number[];
    lastBitrate?: number;
    ewmaBitrate?: number;
};
export type DefaultScoreCalculatorSubtractionReason = 'high-rtt' | 'very-high-rtt' | 'high-packetloss' | 'low-fps' | 'volatile-fps' | 'dropped-video-frames' | 'video-frame-corruptions' | 'high-deviation-from-target-bitrate' | 'cpu-limitation' | 'high-volatile-bitrate';
export type DefaultScoreCalculatorSubtractions = {
    [x in DefaultScoreCalculatorSubtractionReason]?: number;
};
export type DefaultScoreCalculatorOutboundAudioTrackScoreAppData = {
    lastNScores: number[];
};
export type DefaultScoreCalculatorInboundVideoTrackScoreAppData = {
    lastNScores: number[];
    ewmaFps?: number;
};
export type DefaultScoreCalculatorPeerConnectionScoreAppData = {
    lastNScores: number[];
};
export declare class DefaultScoreCalculator {
    private readonly clientMonitor;
    static readonly MAX_SCORE = 5;
    static readonly MIN_SCORE = 0;
    static lastNScoresMaxLength: number;
    static lastNScoresMinLength: number;
    static readonly TARGET_AUDIO_BITRATE = 32000;
    static readonly MIN_AUDIO_BITRATE = 6000;
    private static readonly NORMALIZATION_FACTOR;
    currentReasons: DefaultScoreCalculatorSubtractions;
    totalReasons: DefaultScoreCalculatorSubtractions;
    constructor(clientMonitor: ClientMonitor);
    update(): void;
    encodeScoreReasons<T extends Record<string, number>>(reasons?: T): string;
    _calculateClientMonitorScore(): void;
    private _calculatePeerConnectionStabilityScore;
    _calculateTrackScore(trackMonitor: TrackMonitor): void;
    private _calculateInboundVideoTrackScore;
    private _calculateOutboundVideoTrackScore;
    private _calculateInboundAudioTrackScore;
    private _calculateOutboundAudioTrackScore;
    private _calculateFinalScore;
    private _getRoundedScore;
    private _getTotalSubtraction;
}
