import { MediaConnection, DataConnection } from "./connection"; import { ConnectionType } from "./enums"; export declare type Connection = DataConnection | MediaConnection; export declare type NegotiatorStartConnectionBaseOptions = { originator: boolean; sdp?: never; } | { originator?: never; sdp: RTCSessionDescriptionInit; }; interface PartialOptionsForData { reliable: boolean; } interface PartialOptionsForMedia { _stream: MediaStream; } interface PartialOptionsTypes { [ConnectionType.Data]: PartialOptionsForData; [ConnectionType.Media]: PartialOptionsForMedia; } declare type OptsOf = PartialOptionsTypes[C["type"]] & NegotiatorStartConnectionBaseOptions; export declare type NegotiatorStartDataConnectionOptions = OptsOf; export declare type NegotiatorStartMediaConnectionOptions = OptsOf; /** * Manages all negotiations between Peers. */ export declare class Negotiator { readonly connection: C; constructor(connection: C); /** Returns a PeerConnection object set up correctly (for data, media). */ startConnection(options: OptsOf): void; /** Start a PC. */ private _startPeerConnection; /** Set up various WebRTC listeners. */ private _setupListeners; cleanup(): void; private getPeerConnection; private _makeOffer; private _makeAnswer; /** Handle an SDP. */ handleSDP(type: string, sdp: RTCSessionDescriptionInit | undefined): Promise; /** Handle a candidate. */ handleCandidate(ice: RTCIceCandidateInit): Promise; private _addTracksToConnection; private _addStreamToMediaConnection; } export {};