import { ArtichokeApi } from '../artichoke/artichoke-api'; import { ID } from '../protocol/protocol'; import { DataChannel, DataChannelMessage } from './data-channel'; import { LoggerService } from '../logger/logger-service'; import { WebRTCStats } from './stats/webrtc-stats'; import { Delayer } from '../utils/delayer'; import { Queue } from '../utils/queue'; export declare enum ConnectionStatus { Failed = 0, Connected = 1, Disconnected = 2 } export declare class RTCPeerConnectionFacade { private callId; private peerId; private rtcPeerConnection; private artichokeApi; private onRemoteTrack; private onStatusChange; private candidateQueue; private logger; private dataChannel; private delayer; static readonly renegotiationTimeout = 100; private readonly statsCollector; private isRemoteSDPset; private dtlsRole; constructor(callId: ID, peerId: ID, rtcPeerConnection: RTCPeerConnection, artichokeApi: ArtichokeApi, onRemoteTrack: (track: MediaStreamTrack) => void, onStatusChange: (status: ConnectionStatus) => void, candidateQueue: Queue, logger: LoggerService, dataChannel: DataChannel, delayer: Delayer, initialMediaTracks: ReadonlyArray, webrtcStats: WebRTCStats); disconnect(): void; addTrack(track: MediaStreamTrack): void; removeTrack(track: MediaStreamTrack): void; addCandidate(candidate: RTCIceCandidate): void; send(msg: DataChannelMessage): void; replaceTrackByKind(track: MediaStreamTrack): Promise; handleRemoteOffer(remoteDescription: RTCSessionDescriptionInit, options?: RTCAnswerOptions): Promise; handleRemoteAnswer(remoteDescription: RTCSessionDescriptionInit): Promise; offer(options?: RTCOfferOptions): Promise; private answer; private patchSDPAnswer; private setRemoteDescription; private drainCandidatesAfterSettingRemoteSDP; private setLocalDescription; private isEstablished; private registerRtcEvents; private printRtcStates; private notifyStatusChange; private handleFailedConnection; }