import { ThunkDispatch } from 'redux-thunk'; import * as Stanza from 'stanza'; import { State } from '../reducers'; import Mesh from './Mesh'; import SFU from './SFU'; export interface ConnectOpts { jid: string; password: string; resource: string; wsURL: string; } export interface RoomConfig { password?: string; } export default class SignalingClient { xmpp: Stanza.Agent; jingle: Stanza.Jingle.SessionManager; mesh: Mesh; sfu: SFU; dispatch: ThunkDispatch; getState: () => State; rttBuffers: Map; terminating: boolean; reconnectTimer: any; reconnectAttempts: number; constructor(dispatch: ThunkDispatch, getState: () => State, opts: ConnectOpts); connect(): void; disconnect(): void; joinRoom(roomAddress: string, password?: string): Promise; destroyRoom(roomAddress: string): Promise; kickPeerFromRoom(roomAddress: string, peerAddress: string): Promise; sendRoomPresence(roomAddress: string, opts?: object): void; sendAllRoomsPresence(opts?: object): void; sendAllCallsSpeakingUpdate(speaking: boolean): void; lockRoom(roomAddress: string, password: string): Promise; unlockRoom(roomAddress: string): Promise; private fetchRoomConfig; private checkLockStatus; private processMessage; }