import { ArtichokeApi } from '../artichoke/artichoke-api'; import { ID } from '../protocol/protocol'; import { ConnectionStatus } from './rtc-peer-connection-facade'; import { Observable } from 'rxjs'; import { DataChannelMessage } from './data-channel'; import { LoggerFactory } from '../logger/logger-factory'; import { WebRTCStats } from './stats/webrtc-stats'; export interface RemoteTrack { readonly peerId: ID; readonly track: MediaStreamTrack; } export interface PeerDataChannelMessage { readonly peerId: ID; readonly message: DataChannelMessage; } export interface PeerConnectionStatus { readonly peerId: ID; readonly status: ConnectionStatus; } export declare class RTCPool { readonly callId: ID; private rtcConfig; private loggerFactory; private artichokeApi; private webrtcStats; private readonly peerConnections; private tracks; private readonly remoteTrackEvent; private readonly messageEvent; private readonly connectionStatusEvent; private readonly logger; constructor(callId: ID, rtcConfig: RTCConfiguration, loggerFactory: LoggerFactory, artichokeApi: ArtichokeApi, webrtcStats: WebRTCStats); get message$(): Observable; get peerStatus$(): Observable; get remoteTrack$(): Observable; broadcast: (msg: DataChannelMessage) => void; addTrack(track: MediaStreamTrack): void; removeTrack(track: MediaStreamTrack): void; connect(peerId: ID): Promise; destroyConnection(peerId: ID): void; destroyAllConnections(): void; replaceTrackByKind(track: MediaStreamTrack): Promise; private listenForDescriptionSent; private listenForCandidateSent; private get descriptionSent$(); private get candidateSent$(); private getRtcPoolEvent; private getRTCPeerConnectionInstance; private getTrackEventHandler; private getDataChannelEventHandler; private getConnectionStatusEventHandler; private createRTCConnectionFacade; }