///
import { EventEmitter } from "events";
import { BodyAndContentType, Session, SessionDescriptionHandler as SessionDescriptionHandlerDefinition, SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions as SessionDescriptionHandlerOptionsDefinition } from "../../api";
import { Logger } from "../../core";
/**
* Options for PeerConnection.
* @public
*/
export interface PeerConnectionOptions {
iceCheckingTimeout?: number;
rtcConfiguration?: RTCConfiguration;
}
/**
* Options for {@link SessionDescriptionHandler}.
* @public
*/
export interface SessionDescriptionHandlerOptions extends SessionDescriptionHandlerOptionsDefinition {
peerConnectionOptions?: PeerConnectionOptions;
alwaysAcquireMediaFirst?: boolean;
disableAudioFallback?: boolean;
RTCOfferOptions?: any;
constraints?: MediaStreamConstraints;
}
/**
* SessionDescriptionHandler for web browser.
* @public
*/
export declare class SessionDescriptionHandler extends EventEmitter implements SessionDescriptionHandlerDefinition {
static defaultFactory(session: Session, options: any): SessionDescriptionHandler;
peerConnection: RTCPeerConnection;
private options;
private logger;
private dtmfSender;
private shouldAcquireMedia;
private CONTENT_TYPE;
private direction;
private C;
private modifiers;
private iceGatheringDeferred;
private iceGatheringTimeout;
private iceGatheringTimer;
private constraints;
constructor(logger: Logger, options: any);
/**
* Destructor
*/
close(): void;
/**
* Gets the local description from the underlying media implementation.
* @remarks
* Resolves with the local description to be used for the session.
* @param options - Options object to be used by getDescription
* @param modifiers - Array with one time use description modifiers
*/
getDescription(options?: SessionDescriptionHandlerOptions, modifiers?: Array): Promise;
/**
* Check if the Session Description Handler can handle the Content-Type described by a SIP Message
* @param contentType - The content type that is in the SIP Message
*/
hasDescription(contentType: string): boolean;
/**
* The modifier that should be used when the session would like to place the call on hold.
* @remarks
* Resolves with modified SDP.
* @param description - The description that will be modified
*/
holdModifier(description: RTCSessionDescriptionInit): Promise;
/**
* Set the remote description to the underlying media implementation.
* @remarks
* Resolves once the description is set.
* @param sessionDescription - The description provided by a SIP message to be set on the media implementation.
* @param options - Options object to be used by getDescription.
* @param modifiers - Array with one time use description modifiers.
*/
setDescription(sessionDescription: string, options?: SessionDescriptionHandlerOptions, modifiers?: Array): Promise;
/**
* Send DTMF via RTP (RFC 4733).
* @remarks
* Returns true if DTMF send is successful, false otherwise.
* @param tones - A string containing DTMF digits.
* @param options - Options object to be used by sendDtmf.
*/
sendDtmf(tones: string, options?: any): boolean;
/**
* Get the direction of the session description
*/
getDirection(): string;
on(event: "getDescription" | "setDescription", listener: (description: RTCSessionDescriptionInit) => void): this;
on(event: "peerConnection-setRemoteDescriptionFailed", listener: (error: any) => void): this;
on(event: "setRemoteDescription", listener: (receivers: Array) => void): this;
on(event: "confirmed", listener: (sessionDescriptionHandler: SessionDescriptionHandler) => void): this;
on(event: "peerConnection-createAnswerFailed" | "peerConnection-createOfferFailed", listener: (error: any) => void): this;
on(event: "peerConnection-SetLocalDescriptionFailed", listener: (error: any) => void): this;
on(event: "addTrack", listener: (track: MediaStreamTrack) => void): this;
on(event: "addStream", listener: (track: MediaStream) => void): this;
on(event: "iceCandidate", listener: (candidate: RTCIceCandidate) => void): this;
on(event: "iceConnection" | "iceConnectionChecking" | "iceConnectionConnected" | "iceConnectionCompleted" | "iceConnectionFailed" | "iceConnectionDisconnected" | "iceConectionClosed", listener: (sessionDescriptionHandler: SessionDescriptionHandler) => void): this;
on(event: "iceGathering" | "iceGatheringComplete", listener: (sessionDescriptionHandler: SessionDescriptionHandler) => void): this;
on(event: "userMediaRequest", listener: (constraints: MediaStreamConstraints) => void): this;
on(event: "userMedia", listener: (streams: MediaStream) => void): this;
on(event: "userMediaFailed", listener: (error: any) => void): this;
protected getMediaStream(constraints: MediaStreamConstraints): Promise;
private createOfferOrAnswer;
private createRTCSessionDescriptionInit;
private addDefaultIceCheckingTimeout;
private addDefaultIceServers;
private checkAndDefaultConstraints;
private hasBrowserTrackSupport;
private hasBrowserGetSenderSupport;
private initPeerConnection;
private acquire;
private hasOffer;
private isIceGatheringComplete;
private resetIceGatheringComplete;
private setDirection;
private triggerIceGatheringComplete;
private waitForIceGatheringComplete;
}
//# sourceMappingURL=session-description-handler.d.ts.map