import { Logger } from "./utils/logger"; export type AppliedClientMonitorConfig = Record> = { clientId?: string; callId?: string; bufferingEventsForSamples?: boolean; collectingPeriodInMs: number; samplingPeriodInMs?: number; integrateNavigatorMediaDevices: boolean | MediaDevices; addClientJointEventOnCreated?: boolean; addClientLeftEventOnClose?: boolean; videoFreezesDetector: Record | null; dryInboundTrackDetector: { thresholdInMs: number; } | null; dryOutboundTrackDetector: { thresholdInMs: number; } | null; playoutDiscrepancyDetector: { lowSkewThreshold: number; highSkewThreshold: number; } | null; syntheticSamplesDetector: { createEvent?: boolean; minSynthesizedSamplesDuration: number; } | null; audioDesyncDetector: { fractionalCorrectionAlertOnThreshold: number; fractionalCorrectionAlertOffThreshold: number; } | null; congestionDetector: { sensitivity: 'low' | 'medium' | 'high'; } | null; cpuPerformanceDetector: { fpsVolatilityThresholds: { lowWatermark: number; highWatermark: number; }; durationOfCollectingStatsThreshold: { lowWatermark: number; highWatermark: number; }; } | null; longPcConnectionEstablishmentDetector: { createEvent?: boolean; thresholdInMs: number; } | null; appData: AppData; }; export type ClientMonitorConfig = Record> = Partial> & { logger?: Logger; }; export type ClientMonitorSourceType = 'mediasoup-device' | 'RTCPeerConnection' | 'mediasoup-transport';