///
///
///
import handler = require('../handler/queue');
export declare var PC_QUEUE_LIMIT: number;
export interface DataChannel {
getLabel: () => string;
onceOpened: Promise;
onceClosed: Promise;
dataFromPeerQueue: handler.QueueHandler;
send(data: Data): Promise;
getBrowserBufferedAmount(): Promise;
getJavascriptBufferedAmount(): number;
isInOverflow(): boolean;
setOverflowListener(listener: (overflow: boolean) => void): void;
close(): Promise;
toString(): string;
}
export interface Data {
str?: string;
buffer?: ArrayBuffer;
}
export declare class DataChannelClass implements DataChannel {
private rtcDataChannel_;
private label_;
dataFromPeerQueue: handler.Queue;
private toPeerDataQueue_;
private toPeerDataBytes_;
private lastBrowserBufferedAmount_;
onceOpened: Promise;
onceClosed: Promise;
private draining_;
private fulfillDrained_;
private onceDrained_;
private isOpen_;
private rejectOpened_;
private overflow_;
private overflowListener_;
getLabel: () => string;
constructor(rtcDataChannel_: freedom_RTCDataChannel.RTCDataChannel, label_?: string);
private onDataFromPeer_;
send: (data: Data) => Promise;
private chunkStringOntoQueue_;
private chunkBufferOntoQueue_;
private handleSendDataToPeer_;
private setOverflow_;
private conjestionControlSendHandler;
close: () => Promise;
private waitForBrowserToDrain_;
getBrowserBufferedAmount: () => Promise;
getJavascriptBufferedAmount: () => number;
isInOverflow: () => boolean;
setOverflowListener: (listener: (overflow: boolean) => void) => void;
toString: () => string;
setLabel: (label: string) => void;
}
export declare function createFromFreedomId(id: string): Promise;
export declare function createFromRtcDataChannel(rtcDataChannel: freedom_RTCDataChannel.RTCDataChannel): Promise;