/** * Consumer client for receiving video streams in RobotHub TransportServer */ import { VideoClientCore } from './core.js'; import type { WebSocketMessage, ClientOptions, WebRTCStats, FrameUpdateCallback, VideoConfigUpdateCallback, StreamStartedCallback, StreamStoppedCallback, RecoveryTriggeredCallback, StatusUpdateCallback, StreamStatsCallback, WebRTCOfferMessage } from './types.js'; export declare class VideoConsumer extends VideoClientCore { private onFrameUpdateCallback; private onVideoConfigUpdateCallback; private onStreamStartedCallback; private onStreamStoppedCallback; private onRecoveryTriggeredCallback; private onStatusUpdateCallback; private onStreamStatsCallback; private iceCandidateQueue; private hasRemoteDescription; constructor(baseUrl: string, options?: ClientOptions); connect(workspaceId: string, roomId: string, participantId?: string): Promise; startReceiving(): Promise; stopReceiving(): Promise; handleWebRTCOffer(message: WebRTCOfferMessage): Promise; private handleWebRTCIce; private processQueuedIceCandidates; createPeerConnection(): RTCPeerConnection; private sendIceCandidateToProducer; private handleStreamStarted; onFrameUpdate(callback: FrameUpdateCallback): void; onVideoConfigUpdate(callback: VideoConfigUpdateCallback): void; onStreamStarted(callback: StreamStartedCallback): void; onStreamStopped(callback: StreamStoppedCallback): void; onRecoveryTriggered(callback: RecoveryTriggeredCallback): void; onStatusUpdate(callback: StatusUpdateCallback): void; onStreamStats(callback: StreamStatsCallback): void; protected handleRoleSpecificMessage(message: WebSocketMessage): void; private handleFrameUpdate; private handleVideoConfigUpdate; private handleStreamStopped; private handleRecoveryTriggered; private handleStatusUpdate; private handleStreamStats; /** * Create a consumer and automatically connect to a room */ static createAndConnect(workspaceId: string, roomId: string, baseUrl: string, participantId?: string): Promise; /** * Get the video element for displaying the remote stream */ attachToVideoElement(videoElement: HTMLVideoElement): void; /** * Get current video statistics */ getVideoStats(): Promise; }