///
import { EventEmitter } from 'events';
import { IWebRtcEndpoint } from './IWebRtcEndpoint';
import { PeerId, PeerInfo } from '../PeerInfo';
import { WebRtcConnection, ConstructorOptions } from './WebRtcConnection';
import { MetricsContext } from '../../helpers/Metric';
import { RtcSignaller } from '../../logic/RtcSignaller';
import { Rtts } from '../../identifiers';
import { NegotiatedProtocolVersions } from '../NegotiatedProtocolVersions';
export interface WebRtcConnectionFactory {
createConnection(opts: ConstructorOptions): WebRtcConnection;
registerWebRtcEndpoint(): void;
unregisterWebRtcEndpoint(): void;
}
export declare class WebRtcEndpoint extends EventEmitter implements IWebRtcEndpoint {
private readonly peerInfo;
private readonly stunUrls;
private readonly rtcSignaller;
private readonly negotiatedProtocolVersions;
private readonly connectionFactory;
private connections;
private messageQueues;
private readonly newConnectionTimeout;
private readonly pingInterval;
private readonly logger;
private readonly metrics;
private stopped;
private readonly bufferThresholdLow;
private readonly bufferThresholdHigh;
private readonly disallowPrivateAddresses;
private readonly maxMessageSize;
private statusReportTimer?;
constructor(peerInfo: PeerInfo, stunUrls: string[], rtcSignaller: RtcSignaller, metricsContext: MetricsContext, negotiatedProtocolVersions: NegotiatedProtocolVersions, connectionFactory: WebRtcConnectionFactory, newConnectionTimeout?: number, pingInterval?: number, webrtcDatachannelBufferThresholdLow?: number, webrtcDatachannelBufferThresholdHigh?: number, webrtcDisallowPrivateAddresses?: boolean, maxMessageSize?: number);
private startConnectionStatusReport;
private createConnection;
private onRtcOfferFromSignaller;
private onRtcAnswerFromSignaller;
isIceCandidateAllowed(candidate: string): boolean;
private onIceCandidateFromSignaller;
private onErrorFromSignaller;
private onConnectFromSignaller;
private replaceConnection;
connect(targetPeerId: PeerId, routerId: string, trackerInstructed?: boolean): Promise;
send(targetPeerId: PeerId, message: string): Promise;
private attemptProtocolVersionValidation;
close(receiverPeerId: PeerId, reason: string): void;
getRtts(): Readonly;
getPeerInfo(): Readonly;
getNegotiatedMessageLayerProtocolVersionOnNode(peerId: PeerId): number | undefined;
getNegotiatedControlLayerProtocolVersionOnNode(peerId: PeerId): number | undefined;
getDefaultMessageLayerProtocolVersion(): number;
getDefaultControlLayerProtocolVersion(): number;
/**
* @deprecated
*/
getAddress(): string;
stop(): void;
getAllConnectionNodeIds(): PeerId[];
private onConnectionCountChange;
}