import { ClientSample } from './schema/ClientSample'; import { Logger } from "./utils/logger"; import EventEmitter from 'eventemitter3'; import { AddedClientIssue, ClientEvent, ClientIssuePayload, ClientMetaData, ClientMonitorEvents, RaisedClientIssue, ResolvedClientIssue } from './ClientMonitorEvents'; import { PeerConnectionMonitor } from './monitors/PeerConnectionMonitor'; import { AppliedClientMonitorConfig, ClientMonitorConfig, ClientMonitorSourceType } from './ClientMonitorConfig'; import { PartialBy } from './utils/common'; import { Detectors } from './detectors/Detectors'; import { OutboundTrackMonitor } from './monitors/OutboundTrackMonitor'; import { InboundTrackMonitor } from './monitors/InboundTrackMonitor'; import { TrackMonitor } from './monitors/TrackMonitor'; import { ScoreCalculator } from "./scores/ScoreCalculator"; import { ClientEventPayloadProvider } from './sources/ClientEventPayloadProvider'; export type ExtensionStatProvider = () => { type: string; payload?: Record; } | Promise<{ type: string; payload?: Record; }>; export declare class ClientMonitor = Record> extends EventEmitter { static readonly samplingSchemaVersion = "3.2.0"; readonly mappedPeerConnections: Map; readonly detectors: Detectors; readonly clientEventPayloadProvider: ClientEventPayloadProvider; readonly extensionStatsProviders: Set; readonly activeIssues: Map; scoreCalculator: ScoreCalculator; readonly logger: Logger; closed: boolean; lastSampledAt: number; lastCollectingStatsAt: number; cpuPerformanceAlertOn: boolean; sendingAudioBitrate: number; sendingVideoBitrate: number; receivingAudioBitrate: number; receivingVideoBitrate: number; totalAvailableIncomingBitrate: number; totalAvailableOutgoingBitrate: number; avgRttInSec: number; score: number; scoreReasons?: Record; private _browser?; private readonly _sources; private _timer?; private _samplingTick; private _collectingCounter; private _clientEvents; private _clientMetaItems; private _clientIssues; private _extensionStats; durationOfCollectingStatsInMs: number; readonly config: AppliedClientMonitorConfig; attachments?: Record; constructor(config?: Partial>); get clientId(): string | undefined; set clientId(clientId: string | undefined); get callId(): string | undefined; set callId(callId: string | undefined); get appData(): AppData; set appData(appData: AppData); set browser(browser: { name: 'chrome' | 'firefox' | 'safari' | 'edge' | 'opera' | 'unknown'; version: string; } | undefined); set onsamplecreated(listener: (...args: ClientMonitorEvents['sample-created']) => void); set onstatscollected(listener: (...args: ClientMonitorEvents['stats-collected']) => void); set onclientevent(listener: (...args: ClientMonitorEvents['client-event']) => void); set onissue(listener: (...args: ClientMonitorEvents['issue']) => void); get browser(): { name: "chrome" | "firefox" | "safari" | "edge" | "opera" | "unknown"; version: string; } | undefined; close(): void; on(event: K, listener: (...args: ClientMonitorEvents[K]) => void): this; once(event: K, listener: (...args: ClientMonitorEvents[K]) => void): this; off(event: K, listener: (...args: ClientMonitorEvents[K]) => void): this; emit(event: keyof ClientMonitorEvents, ...args: ClientMonitorEvents[typeof event]): boolean; collect(): Promise<[string, RTCStats[]][]>; getPeerConnectionMonitor(peerConnectionId: string): PeerConnectionMonitor | undefined; setScore>(score: number, reasons?: T): void; createSample(): ClientSample | undefined; addPeerConnectionMonitor(peerConnectionMonitor: PeerConnectionMonitor): void; addClientJoinEvent(event?: { payload?: Record; timestamp?: number; }): void; addClientLeftEvent(event?: { payload?: Record; timestamp?: number; }): void; addEvent>(event: PartialBy & { payload?: Payload; }): void; addIssue(input: { type: string; payload?: T; timestamp?: number; }): AddedClientIssue | undefined; raiseIssue(key: string, input: { type: string; payload?: T; timestamp?: number; }): RaisedClientIssue | undefined; resolveIssue(key: string, input: { comment?: string; payload?: T; resolvedAt?: number; }): ResolvedClientIssue | undefined; getActiveIssuesByType(type?: string): RaisedClientIssue[]; isIssueActive(key: string): boolean; private _bufferIssueForSample; addMetaData(metaData: PartialBy): void; addExtensionStats(stats: { type: string; payload?: Record; }): void; addSource(source: unknown, type?: ClientMonitorSourceType): void; removeSource(source: unknown, type?: ClientMonitorSourceType): void; fetchUserAgentData(): any; watchNavigatorMediaDevices(): void; get peerConnections(): PeerConnectionMonitor[]; get codecs(): import(".").CodecMonitor[]; get inboundRtps(): import(".").InboundRtpMonitor[]; get outboundRtps(): import(".").OutboundRtpMonitor[]; get remoteInboundRtps(): import(".").RemoteInboundRtpMonitor[]; get remoteOutboundRtps(): import(".").RemoteOutboundRtpMonitor[]; get mediaSources(): import(".").MediaSourceMonitor[]; get mediaPlayouts(): import(".").MediaPlayoutMonitor[]; get dataChannels(): import(".").DataChannelMonitor[]; get iceCandidatePairs(): import(".").IceCandidatePairMonitor[]; get iceCandidates(): import(".").IceCandidateMonitor[]; get iceTransports(): import(".").IceTransportMonitor[]; get certificates(): import(".").CertificateMonitor[]; get tracks(): TrackMonitor[]; getTrackMonitor(trackId: string): TrackMonitor | undefined; getInboundTrackMonitor(trackId: string): InboundTrackMonitor | undefined; getOutboundTrackMonitor(trackId: string): OutboundTrackMonitor | undefined; setCollectingPeriod(collectingPeriodInMs: number): void; setSamplingPeriod(samplingPeriodInMs: number): void; private _setSamplingTick; }