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
TypeScript
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;