import { BaseSFUWebsocket } from "../base/BaseSFUWebsocket"; import { Participant } from "../models/Participant"; import { ConnectionProtocol } from "../models/WebSocketServerStartRequest"; import { PlainTransportPayload } from "../ServerHandler"; import { MultiSystemEventsBody, SFUMessageType } from "../websocket/EachSocketConnectionHandler"; import { SFUEachRoomUserHandler } from "./SFUEachRoomUserHandler"; import { Consumer } from "mediasoup/node/lib/ConsumerTypes"; import { Producer, Router, Worker } from "mediasoup/node/lib/types"; export interface SFUEachRoomParticipantInterface { participant: Participant; } export interface SFUEachRoomProducer extends SFUEachRoomParticipantInterface { producer: Producer; } export interface SFUEachRoomConsumer extends SFUEachRoomParticipantInterface { consumer: Consumer; } export interface SFUMessageBody { to: string; type: SFUMessageType; message: any; } export interface SFUEachRoomHandlerInterface { getAllProducerForRoom(): SFUEachRoomProducer[]; getProducerById(producerId: string): SFUEachRoomProducer | undefined; getAllConsumerForRoom(): SFUEachRoomConsumer[]; getAllRecvRouterForRoom(): Router[]; getSendRouterForRoom(): Router; addAudioObserverForProducer(audioProducer: Producer): void; onNewProducer(producer: Producer, participant: Participant): void; pipeToRoute(producer: Producer): Promise; getConnectionProtocolType(): ConnectionProtocol; } export declare class SFUEachRoomHandler extends BaseSFUWebsocket implements SFUEachRoomHandlerInterface { private recvRouter; private sendRouter?; private roomId; roomPaticipants: Map; private plainTransportsForBroadCasting; private plainTransportConsumers; private plainTransportPayload?; private workers?; private sendWorkerIndex; private audioObserver?; private audioLevelObserver?; private connectionProtocol; private eachRoomMutliserverHandler?; private redisSubscribtionDetails; private isInitInProgress; private messagesDuringInit; constructor(roomId: string, workers: Worker[], sendWorkerIndex: number, connectionProtocol?: ConnectionProtocol); onInit: () => Promise; private sendVaniEvent; getConnectionProtocolType(): ConnectionProtocol; onMutiRoomMessage: (message: MultiSystemEventsBody) => Promise; onNewMessage(payload: SFUMessageBody, participant: Participant): void; private reloadSFU; private getEachRoomUserFromParticipant; private onGetRTPCapabilities; private setUpForRoomId; private addAudioLevel; private addAudioObserver; private getWorkerIndexForCreatingRouter; getProducerById(producerId: string): SFUEachRoomProducer | undefined; getAllProducerForRoom(): SFUEachRoomProducer[]; getAllConsumerForRoom(): SFUEachRoomConsumer[]; getAllRecvRouterForRoom(): Router[]; getSendRouterForRoom(): Router; pipeToRoute(producer: Producer): Promise; onNewProducer(producer: Producer, participant: Participant): Promise; addAudioObserverForProducer(audioProducer: Producer): Promise; onUserLeft(participant: Participant): void; resumeAllBroadcastingConsumers(): Promise; startBroadcasting(plainTransportPayload: PlainTransportPayload): Promise; createPlainTransportAndConsumeProducer: (plainTransportPayload: PlainTransportPayload, producer: Producer) => Promise; private consumeProducerForPlainTransport; private redisSubscribeToTopic; private onLocalRedisMessage; private onRedisMessage; cleanUp(): Promise; }