UNPKG

@100mslive/hms-video-store

Version:

@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow

81 lines (80 loc) 2.83 kB
import { RTCIceCandidatePair } from '../connection/IConnectionObserver'; import { HMSException, HMSTrack, HMSUpdateListener } from '../internal'; export declare enum ConnectivityState { STARTING = 0, INIT_FETCHED = 1, SIGNAL_CONNECTED = 2, ICE_ESTABLISHED = 3, MEDIA_CAPTURED = 4, MEDIA_PUBLISHED = 5, COMPLETED = 6 } export interface HMSDiagnosticsConnectivityListener extends HMSUpdateListener { onInitSuccess(websocketURL: string): void; onSignallingSuccess(): void; onICESuccess(isPublish: boolean): void; onMediaPublished(track: HMSTrack): void; onICECandidate(candidate: RTCIceCandidate, isPublish: boolean): void; onSelectedICECandidatePairChange(candidatePair: RTCIceCandidatePair, isPublish: boolean): void; } export interface MediaPermissionCheck { audio?: boolean; video?: boolean; } export interface HMSDiagnosticsInterface { requestPermission(check: MediaPermissionCheck): Promise<MediaPermissionCheck>; checkBrowserSupport(): void; startMicCheck(args: { inputDevice?: string; onError?: (error: Error) => void; onStop?: () => void; time?: number; }): Promise<void>; getRecordedAudio(): string | undefined; stopMicCheck(): void; startCameraCheck(inputDevice?: string): Promise<void>; stopCameraCheck(): void; startConnectivityCheck(progress: (state: ConnectivityState) => void, completed: (result: ConnectivityCheckResult) => void, region?: string, /** * Number in milliseconds to stop the connectivity check */ duration?: number): Promise<void>; stopConnectivityCheck(): Promise<void>; } export interface ConnectivityCheckResult { testTimestamp: number; connectivityState?: ConnectivityState; signallingReport?: SignallingReport; mediaServerReport?: MediaServerReport; errors?: Array<HMSException>; } export interface SignallingReport { isConnected: boolean; isInitConnected: boolean; websocketUrl?: string; } export interface MediaServerReport { stats?: DiagnosticsRTCStatsReport; isPublishICEConnected: boolean; isSubscribeICEConnected: boolean; connectionQualityScore?: number; publishIceCandidatesGathered?: Array<RTCIceCandidate>; subscribeIceCandidatesGathered: Array<RTCIceCandidate>; publishICECandidatePairSelected?: RTCIceCandidatePair; subscribeICECandidatePairSelected?: RTCIceCandidatePair; } export interface DiagnosticsRTCStatsReport { combined: DiagnosticsRTCStats; audio: DiagnosticsRTCStats; video: DiagnosticsRTCStats; } export interface DiagnosticsRTCStats { bytesSent: number; bytesReceived: number; packetsReceived: number; packetsLost: number; bitrateSent: number; bitrateReceived: number; roundTripTime: number; jitter: number; }