///
import churn_types = require('../churn/churn.types');
import handler = require('../handler/queue');
import peerconnection = require('../webrtc/peerconnection');
export declare var preObfuscation: (name?: string, config?: freedom.RTCPeerConnection.RTCConfiguration, portControl?: freedom.PortControl.PortControl) => BridgingPeerConnection;
export declare var basicObfuscation: (name?: string, config?: freedom.RTCPeerConnection.RTCConfiguration, portControl?: freedom.PortControl.PortControl, transformerConfig?: churn_types.TransformerConfig) => BridgingPeerConnection;
export declare var holographicIceOnly: (name?: string, config?: freedom.RTCPeerConnection.RTCConfiguration, portControl?: freedom.PortControl.PortControl, transformerConfig?: churn_types.TransformerConfig) => BridgingPeerConnection;
export declare var best: (name?: string, config?: freedom.RTCPeerConnection.RTCConfiguration, portControl?: freedom.PortControl.PortControl, transformerConfig?: churn_types.TransformerConfig) => BridgingPeerConnection;
export interface SignallingMessage {
signals?: {
[providerName: string]: Object[];
};
errorOnLastMessage?: boolean;
first?: boolean;
}
export declare var isTerminatingSignal: (message: SignallingMessage) => boolean;
export declare var makeSingleProviderMessage: (providerType: ProviderType, signals: Object[]) => SignallingMessage;
export declare var pickBestProviderType: (signals?: {
[providerName: string]: Object[];
}) => ProviderType;
export declare enum ProviderType {
PLAIN = 0,
CHURN = 1,
HOLO_ICE = 2,
}
export declare class BridgingPeerConnection implements peerconnection.PeerConnection {
private preferredProviderType_;
private name_;
private config_;
private portControl_;
private transformerConfig_;
private static id_;
private connected_;
private rejectConnected_;
onceConnected: Promise;
private closed_;
onceClosed: Promise;
peerOpenedChannelQueue: handler.Queue;
signalForPeerQueue: handler.Queue;
private providerType_;
private provider_;
private first_;
constructor(preferredProviderType_: ProviderType, name_?: string, config_?: freedom.RTCPeerConnection.RTCConfiguration, portControl_?: freedom.PortControl.PortControl, transformerConfig_?: churn_types.TransformerConfig);
negotiateConnection: () => Promise;
private makeFromProviderType_;
private makePlain_;
private makeChurn_;
private makeHolographicIceOnly_;
private bridgeWith_;
private wrapSignal_;
handleSignalMessage: (message: SignallingMessage) => void;
openDataChannel: (channelLabel: string, options?: freedom.RTCPeerConnection.RTCDataChannelInit) => Promise;
close: () => Promise;
}