/// import { EventEmitter } from "events"; import { Session } from "../api/session"; import { Logger } from "../core"; import { TypeStrings } from "../Enums"; import { InviteClientContext, InviteServerContext } from "../Session"; import { BodyObj, SessionDescriptionHandler as SessionDescriptionHandlerDefinition, SessionDescriptionHandlerModifiers, SessionDescriptionHandlerOptions } from "../session-description-handler"; import { SessionDescriptionHandlerObserver } from "./SessionDescriptionHandlerObserver"; export interface WebSessionDescriptionHandlerOptions extends SessionDescriptionHandlerOptions { peerConnectionOptions?: PeerConnectionOptions; alwaysAcquireMediaFirst?: boolean; disableAudioFallback?: boolean; RTCOfferOptions?: any; constraints?: MediaStreamConstraints; } export interface PeerConnectionOptions { iceCheckingTimeout?: number; rtcConfiguration?: RTCConfiguration; } export declare class SessionDescriptionHandler extends EventEmitter implements SessionDescriptionHandlerDefinition { /** * @param {SIP.Session} session * @param {Object} [options] */ static defaultFactory(session: InviteClientContext | InviteServerContext | Session, options: any): SessionDescriptionHandler; type: TypeStrings; peerConnection: RTCPeerConnection; private options; private logger; private observer; private dtmfSender; private shouldAcquireMedia; private CONTENT_TYPE; private direction; private C; private modifiers; private iceGatheringDeferred; private iceGatheringTimeout; private iceGatheringTimer; private constraints; constructor(logger: Logger, observer: SessionDescriptionHandlerObserver, options: any); /** * Destructor */ close(): void; /** * Gets the local description from the underlying media implementation * @param {Object} [options] Options object to be used by getDescription * @param {MediaStreamConstraints} [options.constraints] MediaStreamConstraints * https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints * @param {Object} [options.peerConnectionOptions] If this is set it will recreate the peer * connection with the new options * @param {Array} [modifiers] Array with one time use description modifiers * @returns {Promise} Promise that resolves with the local description to be used for the session */ getDescription(options?: WebSessionDescriptionHandlerOptions, modifiers?: SessionDescriptionHandlerModifiers): Promise; /** * Check if the Session Description Handler can handle the Content-Type described by a SIP Message * @param {String} contentType The content type that is in the SIP Message * @returns {boolean} */ hasDescription(contentType: string): boolean; /** * The modifier that should be used when the session would like to place the call on hold * @param {String} [sdp] The description that will be modified * @returns {Promise} Promise that resolves with modified SDP */ holdModifier(description: RTCSessionDescriptionInit): Promise; /** * Set the remote description to the underlying media implementation * @param {String} sessionDescription The description provided by a SIP message to be set on the media implementation * @param {Object} [options] Options object to be used by getDescription * @param {MediaStreamConstraints} [options.constraints] MediaStreamConstraints * https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints * @param {Object} [options.peerConnectionOptions] If this is set it will recreate the peer * connection with the new options * @param {Array} [modifiers] Array with one time use description modifiers * @returns {Promise} Promise that resolves once the description is set */ setDescription(sessionDescription: string, options?: WebSessionDescriptionHandlerOptions, modifiers?: SessionDescriptionHandlerModifiers): Promise; /** * Send DTMF via RTP (RFC 4733) * @param {String} tones A string containing DTMF digits * @param {Object} [options] Options object to be used by sendDtmf * @returns {boolean} true if DTMF send is successful, false otherwise */ sendDtmf(tones: string, options?: any): boolean; /** * Get the direction of the session description * @returns {String} direction of the 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=SessionDescriptionHandler.d.ts.map