@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
99 lines (98 loc) • 4.17 kB
TypeScript
import { SessionId } from "./WebRtcClientTypes";
import { WebWorker } from "./WebWorkerHelper";
import { Key, TurnCredentials, StreamHandle, RemoteStreamListener } from "../Types";
import { KeyStore } from "./KeyStore";
import { PeerConnectionManager } from "./PeerConnectionsManager";
import { StreamId, StreamRoomId } from "./types/ApiTypes";
import { Jsep } from "../service/WebRtcInterface";
import { SpeakerState } from "./audio/ActiveSpeakerDetector";
import { StateChangeDispatcher } from "../service/EventDispatcher";
import { StreamTrack } from "../service/StreamApi";
export declare class RTCRtpScriptTransform {
constructor(worker: any, options: any);
transform: (frame: any, controller: any) => void;
}
export interface StreamsCallbackInterface {
trickle(sessionId: SessionId, candidate: RTCIceCandidate): Promise<void>;
acceptOffer(sessionId: SessionId, sdp: Jsep): Promise<void>;
}
export interface UserAudioStats {
streamId: number;
rms: number;
active: boolean;
}
export interface WebRtcStateEvents {
connected: {
streamId: StreamId;
};
}
export interface AudioLevelsStats {
levels: SpeakerState[];
}
type AudioLevelFuncCallback = (changes: AudioLevelsStats) => void;
export declare class WebRtcClient {
private assetsDir;
uniqId: string;
private e2eeWorker;
private webWorkerApi;
private configuration;
private keyStore;
private publishStreamHandle;
private peerCredentials;
private remoteStreamsListeners;
private sequenceNumberByRemoteStreamId;
private dataChannelByRemoteStreamId;
private dataChannelCryptor;
private sequenceNumberOfSender;
private peerConnectionsManager;
private streamsApiInterface;
private activeSpeakerDetector;
private audioLevelCallback;
private encByReceiver;
private logger;
private peerConnectionReconfigureQueue;
lastProcessedAnswer: {
[roomId: string]: Jsep;
};
private lastMeasuredLocalRMS;
private eventsDispatcher;
private localAudioLevelMeters;
private bootstrapDataChannel;
constructor(assetsDir: string);
private ensureLocalAudioLevelMeter;
private stopLocalAudioLevelMeter;
setAudioLevelCallback(func: AudioLevelFuncCallback): void;
bindApiInterface(streamsApiInterface: StreamsCallbackInterface): void;
addRemoteStreamListener(listener: RemoteStreamListener): void;
getStreamStateChangeDispatcher(): StateChangeDispatcher;
getConnectionManager(): PeerConnectionManager;
getWebRtcEventDispatcher(): StateChangeDispatcher;
protected getWorker(): Promise<Worker>;
protected initPipeline(receiverTrackId: string, publisherId: number): Promise<void>;
protected getWorkerApi(): Promise<WebWorker>;
protected getPeerConnectionConfiguration(): RTCConfiguration;
setTurnCredentials(turnCredentials: TurnCredentials[]): Promise<void>;
createPeerConnectionWithLocalStream(streamHandle: StreamHandle, streamRoomId: StreamRoomId, stream?: MediaStream, dataTracks?: StreamTrack[]): Promise<RTCPeerConnection>;
removeSenderPeerConnectionOnUnpublish(streamRoomId: StreamRoomId, stream: MediaStream): void;
updatePeerConnectionWithLocalStream(streamRoomId: StreamRoomId, localStream: MediaStream, tracksToAdd: MediaStreamTrack[], tracksToRemove: MediaStreamTrack[]): Promise<RTCPeerConnection>;
encryptDataChannelData(data: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
private createPeerConnectionMultiForRoom;
private startNegotiationMulti;
updateKeys(_streamRoomId: StreamRoomId, keys: Key[]): Promise<void>;
getKeyStore(): KeyStore;
private setupSenderTransform;
private setupReceiverTransform;
private waitUntilConnected;
private teardownReceiver;
private addRemoteTrack;
private callRegisteredListeners;
private callRegisteredListenersForDataChannel;
onSubscriptionUpdated(_room: StreamRoomId, offer: {
sdp: string;
type: string;
}): Promise<void>;
onSubscriptionUpdatedSingle(_room: StreamRoomId, offer: any): Promise<Jsep>;
private reconfigureSingle;
private reconfigureSingleCreateOffer;
}
export {};