import { Logger } from "../Logger";
import { NetworkQualityStatistics } from "./media/NetworkQualityStatistics";
import { SelectedCandidatePair } from "./transport/SelectedCandidatePair";
import { TotalMediaStats } from "../../call/stats/TotalMediaStats";
import { CurrentMediaStats } from "../../call/stats/CurrentMediaStats";
export type NetworkQualityStatisticsCallback = (networkQualityStatistics: NetworkQualityStatistics, currentMediaStats: CurrentMediaStats) => void;
export declare class PeerConnectionMediaMonitor {
    callId: string;
    private name;
    conferenceId: string;
    private pc;
    private isVideo;
    private logger;
    protected static MONITOR_ICE_STATES: Set<string>;
    protected static DEFAULT_MONITOR_SUMMARY_INTERVAL: number;
    protected static DEFAULT_MONITOR_TRACK_INTERVAL: number;
    protected readonly summaryInterval: any;
    protected readonly trackMonitoringInterval: any;
    protected selectedCandidatePair: SelectedCandidatePair;
    protected networkQualityStatisticsListener: NetworkQualityStatisticsCallback;
    private readonly previousConferenceStats;
    constructor(callId: string, name: string, conferenceId: string, pc: RTCPeerConnection, isVideo: boolean, logger: Logger);
    setIsVideo(isVideo: boolean): void;
    stop(): TotalMediaStats;
    onNetworkQualityStatistics(callback: NetworkQualityStatisticsCallback): void;
    protected sendSelectedCandidatePair(rtcStatsReport: RTCStatsReport): void;
    protected sendTotalCallStats(): TotalMediaStats;
    protected sendTrackStats(): void;
    protected sendSummaryStats(): void;
    private sendStatsForTrack;
    private emitNetworkQualityStats;
    private getCurrentMediaStats;
    private sendSummaryStatsForPeerConnection;
    private sendStatsForLabeledTrack;
    private sendExtractedMediaStats;
    private sendExtractedStats;
    private fillAudioStats;
    private fillRemoteAudioStats;
    private fillLocalAudioStats;
}
