import { PublishAnalyticPayload, SubscribeAnalyticPayload } from './stats/interfaces'; import { AdditionalAnalyticsProperties } from './AdditionalAnalyticsProperties'; import AnalyticsEvent from './AnalyticsEvent'; import { IAnalyticsPropertiesProvider } from './IAnalyticsPropertiesProvider'; import { HMSException } from '../error/HMSException'; import { DeviceMap, SelectedDevices } from '../interfaces'; import { HMSRemoteVideoTrack } from '../media//tracks/HMSRemoteVideoTrack'; import { HMSTrackSettings } from '../media/settings/HMSTrackSettings'; export default class AnalyticsEventFactory { private static KEY_REQUESTED_AT; private static KEY_RESPONDED_AT; static connect(error?: Error, additionalProperties?: AdditionalAnalyticsProperties, requestedAt?: Date, respondedAt?: Date, endpoint?: string): AnalyticsEvent; static disconnect(error?: Error, additionalProperties?: AdditionalAnalyticsProperties): AnalyticsEvent; static preview({ error, ...props }: { error?: Error; time?: number; init_response_time?: number; ws_connect_time?: number; on_policy_change_time?: number; local_audio_track_time?: number; local_video_track_time?: number; }): AnalyticsEvent; static join({ error, ...props }: { error?: Error; is_preview_called?: boolean; start?: Date; end?: Date; time?: number; init_response_time?: number; ws_connect_time?: number; on_policy_change_time?: number; local_audio_track_time?: number; local_video_track_time?: number; retries_join?: number; }): AnalyticsEvent; static publish({ devices, settings, error }: { devices?: DeviceMap; settings?: HMSTrackSettings; error?: Error; }): AnalyticsEvent; static hlsPlayerError(error: HMSException): AnalyticsEvent; static subscribeFail(error: Error): AnalyticsEvent; static leave(): AnalyticsEvent; static autoplayError(): AnalyticsEvent; static audioPlaybackError(error: HMSException): AnalyticsEvent; static deviceChange({ selection, type, devices, error, }: { selection: Partial; type?: 'change' | 'list' | 'audioInput' | 'audioOutput' | 'video'; devices: DeviceMap; error?: Error; }): AnalyticsEvent; static performance(stats: IAnalyticsPropertiesProvider): AnalyticsEvent; static rtcStats(stats: IAnalyticsPropertiesProvider): AnalyticsEvent; static rtcStatsFailed(error: HMSException): AnalyticsEvent; /** * TODO: remove once everything is switched to server side degradation, this * event can be handled on server side as well. */ static degradationStats(track: HMSRemoteVideoTrack, isDegraded: boolean): AnalyticsEvent; static audioDetectionFail(error: Error, device?: MediaDeviceInfo): AnalyticsEvent; static previewNetworkQuality(properties: { downLink?: string; score?: number; error?: string; }): AnalyticsEvent; static publishStats(properties: PublishAnalyticPayload): AnalyticsEvent; static subscribeStats(properties: SubscribeAnalyticPayload): AnalyticsEvent; private static eventNameFor; private static getPropertiesWithError; private static getErrorProperties; }