UNPKG

iscream-webrtc-sdk

Version:

I-scream WebRTC SDK for browser - LiveKit based real-time communication with teacher/student roles

94 lines (93 loc) 3.64 kB
import type { IScreamConfig, ConnectOptions, ParticipantInfo, VideoQualityPreset, AudioQualityPreset, RoomStatus, TokenResponse, AuthResponse, DataMessage, MediaState, ConnectionInfo, DebugInfo } from './types'; export type { IScreamConfig, ConnectOptions, ParticipantInfo, VideoQualityPreset, AudioQualityPreset, RoomStatus, TokenResponse, AuthResponse, DataMessage, MediaState, ConnectionInfo, DebugInfo }; export declare class IScreamWebRTC { private config; private room; private isConnected; private isConnecting; private eventListeners; private authToken; private tokenExpiry; private iceServers; private participants; private localParticipant; private currentPresenter; private userRole; private roomName; private canPublishMedia; private isScreenSharing; private currentVideoQuality; private currentAudioQuality; private adaptiveStreamEnabled; private selectedAudioInputId; private selectedAudioOutputId; private reconnectAttempts; private maxReconnectAttempts; private reconnectDelay; private presenterManager; private mediaController; constructor(config: IScreamConfig); on(event: string, handler: Function): void; off(event: string, handler: Function): void; private emit; private authenticate; private getToken; private getRoomInfoFromServer; private preValidateRoom; private cleanupGhostParticipantsBeforeJoin; connect(roomConfig: ConnectOptions): Promise<void>; private setupLocalParticipant; private setup2NStructure; private syncExistingParticipants; private setupRoomEvents; private handleParticipantJoined; private handleParticipantLeft; private handleTrackSubscribed; private handleTrackUnsubscribed; private handleLocalTrackPublished; private handleDataReceived; private handleParticipantMetadataChanged; private disableMediaForStudent; canPublishMediaStream(): boolean; enableVideo(enabled: boolean): Promise<boolean>; enableAudio(enabled: boolean): Promise<boolean>; toggleCamera(): Promise<boolean>; toggleMicrophone(): Promise<boolean>; startScreenShare(): Promise<boolean>; stopScreenShare(): Promise<void>; isScreenShareActive(): boolean; setVideoQuality(quality: string): Promise<void>; setAudioQuality(quality: string): Promise<void>; switchAudioInput(deviceId: string): Promise<void>; switchAudioOutput(deviceId: string): Promise<void>; getMediaDevices(): Promise<MediaDeviceInfo[]>; getMediaState(): MediaState; setMediaState(state: { camera?: boolean; microphone?: boolean; screenShare?: boolean; }): Promise<any>; disconnect(): Promise<void>; private getParticipantRole; private setupBeforeUnloadHandler; cleanupGhostParticipants(): Promise<{ success: boolean; removed: string[]; }>; getParticipants(): ParticipantInfo[]; setPresenter(participantIdentity: string): Promise<void>; clearPresenter(): Promise<string | null>; getCurrentPresenter(): string | null; sendMessage(message: string): Promise<void>; getParticipantsByRole(role: 'teacher' | 'student'): ParticipantInfo[]; getRemoteParticipants(): ParticipantInfo[]; getConnectionInfo(): ConnectionInfo; getDebugInfo(): DebugInfo; getRoomName(): string | null; getUserRole(): 'teacher' | 'student' | null; getLocalParticipant(): ParticipantInfo | null; isConnectionActive(): boolean; private attachLocalVideoTrack; private attachRemoteVideoTrack; } export default IScreamWebRTC;