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