export type AppliedClientMonitorConfig = {
    clientId?: string;
    callId?: string;
    bufferingEventsForSamples?: boolean;
    collectingPeriodInMs: number;
    samplingPeriodInMs?: number;
    integrateNavigatorMediaDevices: boolean | MediaDevices;
    addClientJointEventOnCreated?: boolean;
    addClientLeftEventOnClose?: boolean;
    videoFreezesDetector: {
        disabled?: boolean;
        createIssue?: boolean;
    };
    dryInboundTrackDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        thresholdInMs: number;
    };
    dryOutboundTrackDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        thresholdInMs: number;
    };
    playoutDiscrepancyDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        lowSkewThreshold: number;
        highSkewThreshold: number;
    };
    syntheticSamplesDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        minSynthesizedSamplesDuration: number;
    };
    audioDesyncDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        fractionalCorrectionAlertOnThreshold: number;
        fractionalCorrectionAlertOffThreshold: number;
    };
    congestionDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        sensitivity: 'low' | 'medium' | 'high';
    };
    cpuPerformanceDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        fpsVolatilityThresholds: {
            lowWatermark: number;
            highWatermark: number;
        };
        durationOfCollectingStatsThreshold: {
            lowWatermark: number;
            highWatermark: number;
        };
    };
    longPcConnectionEstablishmentDetector: {
        disabled?: boolean;
        createIssue?: boolean;
        thresholdInMs: number;
    };
    appData?: Record<string, unknown>;
};
export type ClientMonitorConfig = Partial<AppliedClientMonitorConfig>;
export type ClientMonitorSourceType = 'mediasoup-device' | 'RTCPeerConnection' | 'mediasoup-transport';
