///
///
///
import peerconnection = require('../../../third_party/uproxy-lib/webrtc/peerconnection');
import signals = require('../../../third_party/uproxy-lib/webrtc/signals');
import handler = require('../../../third_party/uproxy-lib/handler/queue');
import ProxyConfig = require('./proxyconfig');
export interface SessionSnapshot {
name: string;
timestamp: number;
channel_sent: number;
channel_received: number;
channel_buffered: number;
channel_js_buffered: number;
channel_queue_size: number;
channel_queue_handling: boolean;
socket_sent: number;
socket_received: number;
socket_queue_size: number;
socket_queue_handling: boolean;
}
export interface RtcToNetSnapshot {
sessions: SessionSnapshot[];
}
export declare class RtcToNet {
private static SNAPSHOTTING_INTERVAL_MS;
proxyConfig: ProxyConfig;
signalsForPeer: handler.QueueHandler;
bytesReceivedFromPeer: handler.Queue;
bytesSentToPeer: handler.Queue;
onceReady: Promise;
private fulfillStopping_;
private onceStopping_;
onceStopped: Promise;
private peerConnection_;
private pool_;
private sessions_;
startFromConfig: (proxyConfig: ProxyConfig, pcConfig: freedom_RTCPeerConnection.RTCConfiguration, obfuscate: boolean) => Promise;
start: (proxyConfig: ProxyConfig, peerconnection: peerconnection.PeerConnection) => Promise;
initiateSnapshotting: () => void;
private getSnapshot;
private onPeerOpenedChannel_;
stop: () => Promise;
private stopResources_;
handleSignalFromPeer: (message: signals.Message) => void;
toString: () => string;
}
export declare class Session {
private dataChannel_;
private proxyConfig_;
private bytesReceivedFromPeer_;
private bytesSentToPeer_;
private tcpConnection_;
onceReady: Promise;
private fulfillStopping_;
private onceStopping_;
private onceStopped_;
onceStopped: () => Promise;
channelLabel: () => string;
private socketSentBytes_;
private socketReceivedBytes_;
private channelSentBytes_;
private channelReceivedBytes_;
constructor(dataChannel_: peerconnection.DataChannel, proxyConfig_: ProxyConfig, bytesReceivedFromPeer_: handler.QueueFeeder, bytesSentToPeer_: handler.QueueFeeder);
start: () => Promise;
stop: () => Promise;
private stopResources_;
private receiveEndpointFromPeer_;
private getTcpConnection_;
private replyToPeer_;
private getReplyFromInfo_;
private getReplyFromError_;
private sendOnChannel_;
private sendOnSocket_;
private linkSocketAndChannel_;
private isAllowedAddress_;
getSnapshot: () => Promise;
longId: () => string;
toString: () => string;
private static nextTick_;
}