export interface AggregatedStats { publisher_aggregate_stats?: PublisherAggregateStats; turn?: TURNAggregatedStats; } export interface CallEvent { category?: string; component?: string; description: string; end_timestamp: number; internal: boolean; issue_tags?: Array; kind: string; severity: number; timestamp: number; type: string; } export interface CallTimeline { events: Array; } export interface Coordinates { latitude: number; longitude: number; } export interface Count { approximate: boolean; value: number; } export interface FPSStats { average_fps: number; tracked: number; } export interface GeolocationResult { accuracy_radius: number; city: string; continent: string; continent_code: string; country: string; country_iso_code: string; latitude: number; longitude: number; subdivision: string; subdivision_iso_code: string; } export interface GetCallStatsResponse { aggregated?: AggregatedStats; average_connection_time?: number; call_duration_seconds: number; call_status: string; call_timeline?: CallTimeline; duration: string; is_truncated_report: boolean; jitter?: TimeStats; latency?: TimeStats; max_freezes_duration_seconds: number; max_participants: number; max_total_quality_limitation_duration_seconds: number; participant_report: Array; publishing_participants: number; quality_score: number; sfu_count: number; sfus: Array; } export interface MediaPubSubHint { audio_published: boolean; audio_subscribed: boolean; video_published: boolean; video_subscribed: boolean; } export interface PublishedTrackInfo { codec_mime_type?: string; duration_seconds?: number; track_type?: string; } export interface PublisherAggregateStats { by_track_type?: { [key: string]: Count }; total?: Count; } export interface SFULocationResponse { coordinates: Coordinates; datacenter: string; id: string; location: Location; } export interface Subsession { ended_at: number; joined_at: number; pub_sub_hint?: MediaPubSubHint; sfu_id: string; } export interface TimeStats { average_seconds: number; max_seconds: number; } export interface TURNAggregatedStats { tcp?: Count; total?: Count; } export interface UserInfoResponse { custom: { [key: string]: any }; id: string; image: string; name: string; roles: Array; } export interface UserSessionStats { average_connection_time?: number; browser?: string; browser_version?: string; current_ip?: string; current_sfu?: string; device_model?: string; device_version?: string; distance_to_sfu_kilometers?: number; fps?: FPSStats; freeze_duration_seconds: number; geolocation?: GeolocationResult; group: string; jitter?: TimeStats; latency?: TimeStats; max_fir_per_second?: number; max_freeze_fraction: number; max_freezes_duration_seconds: number; max_freezes_per_second?: number; max_nack_per_second?: number; max_pli_per_second?: number; max_publishing_video_quality?: VideoQuality; max_receiving_video_quality?: VideoQuality; min_event_ts: number; os?: string; os_version?: string; packet_loss_fraction: number; pub_sub_hints?: MediaPubSubHint; published_tracks?: Array; publisher_jitter?: TimeStats; publisher_latency?: TimeStats; publisher_noise_cancellation_seconds?: number; publisher_packet_loss_fraction: number; publisher_quality_limitation_fraction?: number; publisher_video_quality_limitation_duration_seconds?: { [key: string]: number; }; publishing_audio_codec?: string; publishing_duration_seconds: number; publishing_video_codec?: string; quality_score: number; receiving_audio_codec?: string; receiving_duration_seconds: number; receiving_video_codec?: string; sdk?: string; sdk_version?: string; session_id: string; subscriber_jitter?: TimeStats; subscriber_latency?: TimeStats; subscriber_video_quality_throttled_duration_seconds?: number; subsessions?: Array; timeline?: CallTimeline; total_pixels_in: number; total_pixels_out: number; truncated?: boolean; webrtc_version?: string; } export interface UserStats { feedback?: string; info: UserInfoResponse; min_event_ts: number; rating?: number; session_stats: Array; } export interface VideoQuality { resolution?: { width: number; height: number }; usage_type?: string; }