///
///
///
import handler = require('../handler/queue');
import datachannel = require('./datachannel');
import signals = require('./signals');
export interface DataChannel extends datachannel.DataChannel {
}
export interface Data extends datachannel.Data {
}
export declare enum State {
WAITING = 0,
CONNECTING = 1,
CONNECTED = 2,
DISCONNECTED = 3,
}
export interface PeerConnection {
pcState: State;
dataChannels: {
[channelLabel: string]: DataChannel;
};
onceConnecting: Promise;
onceConnected: Promise;
onceDisconnected: Promise;
negotiateConnection: () => Promise;
openDataChannel: (channelLabel: string, options?: freedom_RTCPeerConnection.RTCDataChannelInit) => Promise;
peerOpenedChannelQueue: handler.QueueHandler;
handleSignalMessage: (message: TSignallingMessage) => void;
signalForPeerQueue: handler.QueueHandler;
close: () => Promise;
}
export declare class PeerConnectionClass implements PeerConnection {
private pc_;
peerName_: string;
private static HEARTBEAT_TIMEOUT_MS_;
private static HEARTBEAT_INTERVAL_MS_;
private static HEARTBEAT_MESSAGE_;
static peerConnections: {
[name: string]: PeerConnection;
};
dataChannels: {
[channelLabel: string]: DataChannel;
};
pcState: State;
onceConnecting: Promise;
onceConnected: Promise;
onceDisconnected: Promise;
peerOpenedChannelQueue: handler.Queue;
signalForPeerQueue: handler.Queue;
fromPeerCandidateQueue: handler.Queue;
private fulfillConnecting_;
private fulfillConnected_;
private rejectConnected_;
private fulfillDisconnected_;
private controlDataChannel_;
private static CONTROL_CHANNEL_LABEL;
private static automaticNameIndex_;
constructor(pc_: freedom_RTCPeerConnection.RTCPeerConnection, peerName_?: string);
close: () => Promise;
private closeWithError_;
private onSignallingStateChange_;
private onIceConnectionStateChange_;
private completeConnection_;
negotiateConnection: () => Promise;
private onNegotiationNeeded_;
private breakOfferTie_;
private handleOfferSignalMessage_;
private handleAnswerSignalMessage_;
private handleCandidateSignalMessage_;
private emitSignalForPeer_;
handleSignalMessage: (message: signals.Message) => void;
openDataChannel: (channelLabel: string, options?: freedom_RTCPeerConnection.RTCDataChannelInit) => Promise;
private onPeerStartedDataChannel_;
private addRtcDataChannel_;
private registerControlChannel_;
private initiateHeartbeat_;
toString: () => string;
}
export declare function createPeerConnection(config: freedom_RTCPeerConnection.RTCConfiguration, debugPcName?: string): PeerConnection;