diff --git a/webrtc/MediaStream-tests.ts b/webrtc/MediaStream-tests.ts index 290e2ff3c7..14c2fab7c7 100644 --- a/webrtc/MediaStream-tests.ts +++ b/webrtc/MediaStream-tests.ts @@ -6,27 +6,27 @@ var mediaTrackConstraintArray: MediaTrackConstraint[] = []; var mediaTrackConstraints: MediaTrackConstraints = { mandatory: mediaTrackConstraintSet, optional: mediaTrackConstraintArray } navigator.getUserMedia(mediaStreamConstraints, - stream => { - console.log('label:' + stream.label); - console.log('ended:' + stream.ended); - stream.onended = event => console.log('Stream ended'); - var objectUrl = URL.createObjectURL(stream); - var wkObjectUrl = webkitURL.createObjectURL(stream); - }, - error => { - console.log('Error message: ' + error.message); - console.log('Error name: ' + error.name); - }); + stream => { + console.log('label:' + stream.label); + console.log('ended:' + stream.ended); + stream.onended = (event:Event) => console.log('Stream ended'); + var objectUrl = URL.createObjectURL(stream); + var wkObjectUrl = webkitURL.createObjectURL(stream); + }, + error => { + console.log('Error message: ' + error.message); + console.log('Error name: ' + error.name); + }); navigator.webkitGetUserMedia(mediaStreamConstraints, - stream => { - console.log('label:' + stream.label); - console.log('ended:' + stream.ended); - stream.onended = event => console.log('Stream ended'); - var objectUrl = URL.createObjectURL(stream); - var wkObjectUrl = webkitURL.createObjectURL(stream); - }, - error => { - console.log('Error message: ' + error.message); - console.log('Error name: ' + error.name); - }); \ No newline at end of file + stream => { + console.log('label:' + stream.label); + console.log('ended:' + stream.ended); + stream.onended = (event:Event) => console.log('Stream ended'); + var objectUrl = URL.createObjectURL(stream); + var wkObjectUrl = webkitURL.createObjectURL(stream); + }, + error => { + console.log('Error message: ' + error.message); + console.log('Error name: ' + error.name); + }); diff --git a/webrtc/MediaStream.d.ts b/webrtc/MediaStream.d.ts index f9f549ed0f..e159dff294 100644 --- a/webrtc/MediaStream.d.ts +++ b/webrtc/MediaStream.d.ts @@ -6,150 +6,158 @@ // Taken from http://dev.w3.org/2011/webrtc/editor/getusermedia.html interface MediaStreamConstraints { - audio: any; - video: any; + audio: any; + video: any; } declare var MediaStreamConstraints: { - prototype: MediaStreamConstraints; - new (): MediaStreamConstraints; + prototype: MediaStreamConstraints; + new (): MediaStreamConstraints; } interface MediaTrackConstraints { - mandatory: MediaTrackConstraintSet; - optional: MediaTrackConstraint[]; + mandatory: MediaTrackConstraintSet; + optional: MediaTrackConstraint[]; } declare var MediaTrackConstraints: { - prototype: MediaTrackConstraints; - new (): MediaTrackConstraints; + prototype: MediaTrackConstraints; + new (): MediaTrackConstraints; } // ks - Not defined in the source doc. interface MediaTrackConstraintSet { } declare var MediaTrackConstraintSet: { - prototype: MediaTrackConstraintSet; - new (): MediaTrackConstraintSet; + prototype: MediaTrackConstraintSet; + new (): MediaTrackConstraintSet; } // ks - Not defined in the source doc. interface MediaTrackConstraint { } declare var MediaTrackConstraint: { - prototype: MediaTrackConstraint; - new (): MediaTrackConstraints; + prototype: MediaTrackConstraint; + new (): MediaTrackConstraints; } interface Navigator { - getUserMedia(constraints: MediaStreamConstraints, successCallback: (stream: any) => void, errorCallback: (error: Error) => void); - webkitGetUserMedia(constraints: MediaStreamConstraints, successCallback: (stream: any) => void, errorCallback: (error: Error) => void); + getUserMedia(constraints: MediaStreamConstraints, + successCallback: (stream: any) => void, + errorCallback: (error: Error) => void) : void; + webkitGetUserMedia(constraints: MediaStreamConstraints, + successCallback: (stream: any) => void, + errorCallback: (error: Error) => void): void; } interface EventHandler { (event: Event): void; } -interface NavigatorUserMediaSuccessCallback { (stream: LocalMediaStream): void; } +interface NavigatorUserMediaSuccessCallback { + (stream: LocalMediaStream): void; +} interface NavigatorUserMediaError { - PERMISSION_DENIED: number; // = 1; - code: number; + PERMISSION_DENIED: number; // = 1; + code: number; } declare var NavigatorUserMediaError: { - prototype: NavigatorUserMediaError; - new (): NavigatorUserMediaError; - PERMISSION_DENIED: number; // = 1; + prototype: NavigatorUserMediaError; + new (): NavigatorUserMediaError; + PERMISSION_DENIED: number; // = 1; } -interface NavigatorUserMediaErrorCallback { (error: NavigatorUserMediaError): void; } +interface NavigatorUserMediaErrorCallback { + (error: NavigatorUserMediaError): void; +} interface MediaStreamTrackList { - length: number; - item: MediaStreamTrack; - add(track: MediaStreamTrack): void; - remove(track: MediaStreamTrack): void; - onaddtrack: (event: Event) => void; - onremovetrack: (event: Event) => void; + length: number; + item: MediaStreamTrack; + add(track: MediaStreamTrack): void; + remove(track: MediaStreamTrack): void; + onaddtrack: (event: Event) => void; + onremovetrack: (event: Event) => void; } declare var MediaStreamTrackList: { - prototype: MediaStreamTrackList; - new (): MediaStreamTrackList; + prototype: MediaStreamTrackList; + new (): MediaStreamTrackList; } declare var webkitMediaStreamTrackList: { - prototype: MediaStreamTrackList; - new (): MediaStreamTrackList; + prototype: MediaStreamTrackList; + new (): MediaStreamTrackList; } interface MediaStream { - label: string; - id: string; - getAudioTracks(): MediaStreamTrackList; - getVideoTracks(): MediaStreamTrackList; - ended: boolean; - onended: (event: Event) => void; + label: string; + id: string; + getAudioTracks(): MediaStreamTrackList; + getVideoTracks(): MediaStreamTrackList; + ended: boolean; + onended: (event: Event) => void; } declare var MediaStream: { - prototype: MediaStream; - new (): MediaStream; - new (trackContainers: MediaStream[]): MediaStream; - new (trackContainers: MediaStreamTrackList[]): MediaStream; - new (trackContainers: MediaStreamTrack[]): MediaStream; + prototype: MediaStream; + new (): MediaStream; + new (trackContainers: MediaStream[]): MediaStream; + new (trackContainers: MediaStreamTrackList[]): MediaStream; + new (trackContainers: MediaStreamTrack[]): MediaStream; } declare var webkitMediaStream: { - prototype: MediaStream; - new (): MediaStream; - new (trackContainers: MediaStream[]): MediaStream; - new (trackContainers: MediaStreamTrackList[]): MediaStream; - new (trackContainers: MediaStreamTrack[]): MediaStream; + prototype: MediaStream; + new (): MediaStream; + new (trackContainers: MediaStream[]): MediaStream; + new (trackContainers: MediaStreamTrackList[]): MediaStream; + new (trackContainers: MediaStreamTrack[]): MediaStream; } // an - not defined in source doc. interface SourceInfo { - label: string; - id: string; - kind: string; - facing: string; + label: string; + id: string; + kind: string; + facing: string; } declare var SourceInfo: { - prototype: SourceInfo; + prototype: SourceInfo; } interface LocalMediaStream extends MediaStream { - stop(): void; + stop(): void; } interface MediaStreamTrack { - kind: string; - label: string; - enabled: boolean; - LIVE: number; // = 0; - MUTED: number; // = 1; - ENDED: number; // = 2; - readyState: number; - onmute: (event: Event) => void; - onunmute: (event: Event) => void; - onended: (event: Event) => void; + kind: string; + label: string; + enabled: boolean; + LIVE: number; // = 0; + MUTED: number; // = 1; + ENDED: number; // = 2; + readyState: number; + onmute: (event: Event) => void; + onunmute: (event: Event) => void; + onended: (event: Event) => void; } declare var MediaStreamTrack: { - prototype: MediaStreamTrack; - new (): MediaStreamTrack; - LIVE: number; // = 0; - MUTED: number; // = 1; - ENDED: number; // = 2; - getSources: (callback: (sources: SourceInfo[]) => void) => void; + prototype: MediaStreamTrack; + new (): MediaStreamTrack; + LIVE: number; // = 0; + MUTED: number; // = 1; + ENDED: number; // = 2; + getSources: (callback: (sources: SourceInfo[]) => void) => void; } interface streamURL extends URL { - createObjectURL(stream: MediaStream): string; + createObjectURL(stream: MediaStream): string; } //declare var URL: { -// prototype: MediaStreamTrack; -// new (): URL; -// createObjectURL(stream: MediaStream): string; +// prototype: MediaStreamTrack; +// new (): URL; +// createObjectURL(stream: MediaStream): string; //} interface WebkitURL extends streamURL { } declare var webkitURL: { - prototype: WebkitURL; - new (): streamURL; - createObjectURL(stream: MediaStream): string; + prototype: WebkitURL; + new (): streamURL; + createObjectURL(stream: MediaStream): string; } - + diff --git a/webrtc/RTCPeerConnection-tests.ts b/webrtc/RTCPeerConnection-tests.ts index d7b5a07f74..0b05fcdd88 100644 --- a/webrtc/RTCPeerConnection-tests.ts +++ b/webrtc/RTCPeerConnection-tests.ts @@ -1,19 +1,22 @@ /// /// -var config: RTCConfiguration = { iceServers: [{ url: "stun.l.google.com:19302" }] }; -var constraints: MediaConstraints = { mandatory: { OfferToReceiveAudio: true, OfferToReceiveVideo: true } }; +var config: RTCConfiguration = + { iceServers: [{ url: "stun.l.google.com:19302" }] }; +var constraints: RTCMediaConstraints = + { mandatory: { OfferToReceiveAudio: true, OfferToReceiveVideo: true } }; -var peerConnection: RTCPeerConnection = new RTCPeerConnection(config, constraints); +var peerConnection: RTCPeerConnection = + new RTCPeerConnection(config, constraints); navigator.getUserMedia({ audio: true, video: true }, - stream => { - peerConnection.addStream(stream); - }, - error => { - console.log('Error message: ' + error.message); - console.log('Error name: ' + error.name); - }); + stream => { + peerConnection.addStream(stream); + }, + error => { + console.log('Error message: ' + error.message); + console.log('Error name: ' + error.name); + }); peerConnection.onaddstream = ev => console.log(ev.type); peerConnection.ondatachannel = ev => console.log(ev.type); @@ -25,27 +28,31 @@ peerConnection.onremovestream = ev => console.log(ev.type); peerConnection.onstatechange = ev => console.log(ev.type); peerConnection.createOffer( - offer => { - peerConnection.setLocalDescription(offer, - () => console.log("set local description"), - error => console.log("Error setting local description: " + error)); - }, - error => console.log("Error creating offer: " + error)); + offer => { + peerConnection.setLocalDescription(offer, + () => console.log("set local description"), + error => console.log("Error setting local description: " + error)); + }, + error => console.log("Error creating offer: " + error)); -var type: RTCSdpType = RTCSdpType.offer; +var type: string = RTCSdpType[RTCSdpType.offer]; var offer: RTCSessionDescriptionInit = { type: type, sdp: "some sdp" }; var sessionDescription = new RTCSessionDescription(offer); peerConnection.setRemoteDescription(sessionDescription, () => { - peerConnection.createAnswer( - answer => { - peerConnection.setLocalDescription(answer, - () => console.log('Set local description'), - error => console.log("Error setting local description from created answer: " + error + "; answer.sdp=" + answer.sdp)); - }, - error => console.log("Error creating answer: " + error)); + peerConnection.createAnswer( + answer => { + peerConnection.setLocalDescription(answer, + () => console.log('Set local description'), + error => console.log( + "Error setting local description from created answer: " + error + + "; answer.sdp=" + answer.sdp)); + }, + error => console.log("Error creating answer: " + error)); }, -error => console.log('Error setting remote description: ' + error + "; offer.sdp=" + offer.sdp)); +error => console.log('Error setting remote description: ' + error + + "; offer.sdp=" + offer.sdp)); -var wkPeerConnection: webkitRTCPeerConnection = new webkitRTCPeerConnection(config, constraints); +var wkPeerConnection: webkitRTCPeerConnection = + new webkitRTCPeerConnection(config, constraints); diff --git a/webrtc/RTCPeerConnection.d.ts b/webrtc/RTCPeerConnection.d.ts index d66ad6cf0f..edde45ae05 100644 --- a/webrtc/RTCPeerConnection.d.ts +++ b/webrtc/RTCPeerConnection.d.ts @@ -2,229 +2,308 @@ // Project: http://dev.w3.org/2011/webrtc/ // Definitions by: Ken Smith // Definitions: https://github.com/borisyankov/DefinitelyTyped - +// // Definitions taken from http://dev.w3.org/2011/webrtc/editor/webrtc.html +// +// For example code see: +// https://code.google.com/p/webrtc/source/browse/stable/samples/js/apprtc/js/main.js +// +// For a generic implementation see that deals with browser differences, see: +// https://code.google.com/p/webrtc/source/browse/stable/samples/js/base/adapter.js -/// +/// + +// TODO(1): Get Typescript to have string-enum types as WebRtc is full of string +// enums. +// https://typescript.codeplex.com/discussions/549207 + +// TODO(2): get Typescript to have union types as WebRtc uses them. +// https://typescript.codeplex.com/workitem/1364 interface RTCConfiguration { - iceServers: RTCIceServer[]; + iceServers: RTCIceServer[]; } declare var RTCConfiguration: { - prototype: RTCConfiguration; - new (): RTCConfiguration; + prototype: RTCConfiguration; + new (): RTCConfiguration; } interface RTCIceServer { - url: string; - credential?: string; + url: string; + credential?: string; } declare var RTCIceServer: { - prototype: RTCIceServer; - new (): RTCIceServer; + prototype: RTCIceServer; + new (): RTCIceServer; } +// moz (Firefox) specific prefixes. +interface mozRTCPeerConnection extends RTCPeerConnection { +} +declare var mozRTCPeerConnection: { + prototype: mozRTCPeerConnection; + new (settings: RTCPeerConnectionConfig, + constraints?:RTCMediaConstraints): mozRTCPeerConnection; +} +// webkit (Chrome) specific prefixes. interface webkitRTCPeerConnection extends RTCPeerConnection { } declare var webkitRTCPeerConnection: { - prototype: webkitRTCPeerConnection; - new (settings: RTCPeerConnectionConfig, constraints?:MediaConstraints): webkitRTCPeerConnection; + prototype: webkitRTCPeerConnection; + new (settings: RTCPeerConnectionConfig, + constraints?:RTCMediaConstraints): webkitRTCPeerConnection; } -interface IceState { -} -declare var IceState: { - prototype: IceState; - new (): IceState; +// For Chrome, look at the code here: +// https://code.google.com/p/chromium/codesearch#chromium/src/third_party/libjingle/source/talk/app/webrtc/webrtcsession.cc&sq=package:chromium&dr=C&l=63 +interface RTCOptionalMediaConstraint { + // When true, will use DTLS/SCTP data channels + DtlsSrtpKeyAgreement?: boolean; + // When true will use Rtp-based data channels (depreicated) + RtpDataChannels?: boolean; } // ks 12/20/12 - There's more here that doesn't seem to be documented very well yet. -interface MediaConstraints { - mandatory: MediaOfferConstraints; +// http://www.w3.org/TR/2013/WD-webrtc-20130910/ +interface RTCMediaConstraints { + mandatory?: RTCMediaOfferConstraints; + optional?: RTCOptionalMediaConstraint[] } -interface MediaOfferConstraints { - OfferToReceiveAudio: boolean; - OfferToReceiveVideo: boolean; -} - -interface RTCSessionDescription { - type?: RTCSdpType; - sdp?: string; -} -declare var RTCSessionDescription: { - prototype: RTCSessionDescription; - new (descriptionInitDict?: RTCSessionDescriptionInit): RTCSessionDescription; +interface RTCMediaOfferConstraints { + OfferToReceiveAudio: boolean; + OfferToReceiveVideo: boolean; } interface RTCSessionDescriptionInit { - type: RTCSdpType; - sdp: string; -} -declare var RTCSessionDescriptionInit: { - prototype: RTCSessionDescriptionInit; - new (): RTCSessionDescriptionInit; + type: string; // RTCSdpType; See TODO(1) + sdp: string; } -interface SdpType { +interface RTCSessionDescription { + type?: string; // RTCSdpType; See TODO(1) + sdp?: string; } - -interface RTCPeerState { +declare var RTCSessionDescription: { + prototype: RTCSessionDescription; + new (descriptionInitDict?: RTCSessionDescriptionInit): RTCSessionDescription; + // TODO: Add serializer. + // See: http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSdpType) } interface RTCDataChannelInit { - reliable: boolean; + ordered ?: boolean; // messages must be sent in-order. + maxPacketLifeTime ?: number; // unsigned short + maxRetransmits ?: number; // unsigned short + protocol ?: string; // default = '' + negotiated ?: boolean; // default = false; + id ?: number; // unsigned short } +// TODO(1) declare enum RTCSdpType { - offer, - pranswer, - answer + // http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcsdptype + 'offer', + 'pranswer', + 'answer' } +interface RTCMessageEvent { + // http://dev.w3.org/2011/webrtc/editor/webrtc.html#event-datachannel-message + // At present, this can be an: ArrayBuffer, a string, or a Blob. + // See TODO(2) + data: any; +} + +// TODO(1) declare enum RTCDataChannelState { - connecting, - open, - closing, - closed + // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDataChannelState + 'connecting', + 'open', + 'closing', + 'closed' } interface RTCDataChannel extends EventTarget { - label: string; - reliable: boolean; - readyState: RTCDataChannelState; - bufferedAmount: number; - onopen: (event: Event)=> void; - onerror: (event: Event)=> void; - onclose: (event: Event)=> void; - close(): void; - onmessage: (event: Event)=> void; - binaryType: string; - send(data: string); - send(data: ArrayBuffer); - send(data: Blob); + label: string; + reliable: boolean; + readyState: string; // RTCDataChannelState; see TODO(1) + bufferedAmount: number; + binaryType: string; + + onopen: (event: Event) => void; + onerror: (event: Event) => void; + onclose: (event: Event) => void; + onmessage: (event: RTCMessageEvent) => void; + + close(): void; + + send(data: string): void ; + send(data: ArrayBuffer): void; + send(data: ArrayBufferView): void; + send(data: Blob): void; } declare var RTCDataChannel: { - prototype: RTCDataChannel; - new (): RTCDataChannel; + prototype: RTCDataChannel; + new (): RTCDataChannel; } interface RTCDataChannelEvent extends Event { - constructor (eventInitDict: RTCDataChannelEventInit); - channel: RTCDataChannel; + channel: RTCDataChannel; } declare var RTCDataChannelEvent: { - prototype: RTCDataChannelEvent; - new (eventInitDict: RTCDataChannelEventInit); + prototype: RTCDataChannelEvent; + new (eventInitDict: RTCDataChannelEventInit): RTCDataChannelEvent; } -interface RTCIceCandidateEvent extends Event{ - candidate: RTCIceCandidate; +interface RTCIceCandidateEvent extends Event { + candidate: RTCIceCandidate; } interface RTCMediaStreamEvent extends Event { - stream: MediaStream; + stream: MediaStream; } interface EventInit { } interface RTCDataChannelEventInit extends EventInit { - channel: RTCDataChannel; + channel: RTCDataChannel; } interface RTCVoidCallback { - (): void; + (): void; } interface RTCSessionDescriptionCallback { - (sdp: RTCSessionDescription): void; + (sdp: RTCSessionDescription): void; } interface RTCPeerConnectionErrorCallback { - (errorInformation: string): void; + (errorInformation: DOMError): void; } -/** This should be an enum */ -interface RTCIceGatheringState { - string; +// TODO(1) +declare enum RTCIceGatheringState { + // http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcicegatheringstate-enum + 'new', + 'gathering', + 'complete' } -/** This should be an enum */ -interface RTCIceConnectionState { - string; +// TODO(1) +declare enum RTCIceConnectionState { + // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCIceConnectionState + 'new', + 'checking', + 'connected', + 'completed', + 'failed', + 'disconnected', + 'closed' } -/** This should be an enum */ -interface RTCSignalingState{ - string; +// TODO(1) +declare enum RTCSignalingState { + // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSignalingState + 'stable', + 'have-local-offer', + 'have-remote-offer', + 'have-local-pranswer', + 'have-remote-pranswer', + 'closed' +} + +// This is based on the current implementation of WebRtc in Chrome; the spec is +// a little unclear on this. +// http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCStatsReport +interface RTCStatsReport { + stat(id: string): string; +} + +interface RTCStatsCallback { + (report: RTCStatsReport): void; } interface RTCPeerConnection { - createOffer(successCallback: RTCSessionDescriptionCallback, failureCallback?: RTCPeerConnectionErrorCallback, constraints?: MediaConstraints): void; - createAnswer(successCallback: RTCSessionDescriptionCallback, failureCallback?: RTCPeerConnectionErrorCallback, constraints?: MediaConstraints): void; - setLocalDescription(description: RTCSessionDescription, successCallback?: RTCVoidCallback, failureCallback?: RTCPeerConnectionErrorCallback): void; - localDescription: RTCSessionDescription; - setRemoteDescription(description: RTCSessionDescription, successCallback?: RTCVoidCallback, failureCallback?: RTCPeerConnectionErrorCallback): void; - remoteDescription: RTCSessionDescription; - signalingState: RTCSignalingState; - updateIce(configuration?: RTCConfiguration, constraints?: MediaConstraints): void; - addIceCandidate(candidate: RTCIceCandidate): void; - iceGatheringState: RTCIceGatheringState; - iceConnectionState: RTCIceConnectionState; - getLocalStreams(): MediaStream[]; - getRemoteStreams(): MediaStream[]; - createDataChannel(label?: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel; - ondatachannel: (event: Event)=> void; - addStream(stream: MediaStream, constraints?: MediaConstraints): void; - removeStream(stream: MediaStream): void; - close(): void; - onnegotiationneeded: (event: Event)=> void; - onconnecting: (event: Event)=> void; - onopen: (event: Event)=> void; - onaddstream: (event: RTCMediaStreamEvent)=> void; - onremovestream: (event: RTCMediaStreamEvent)=> void; - onstatechange: (event: Event)=> void; - onicechange: (event: Event)=> void; - onicecandidate: (event: RTCIceCandidateEvent)=> void; - onidentityresult: (event: Event)=> void; + createOffer(successCallback: RTCSessionDescriptionCallback, + failureCallback?: RTCPeerConnectionErrorCallback, + constraints?: RTCMediaConstraints): void; + createAnswer(successCallback: RTCSessionDescriptionCallback, + failureCallback?: RTCPeerConnectionErrorCallback, + constraints?: RTCMediaConstraints): void; + setLocalDescription(description: RTCSessionDescription, + successCallback?: RTCVoidCallback, + failureCallback?: RTCPeerConnectionErrorCallback): void; + localDescription: RTCSessionDescription; + setRemoteDescription(description: RTCSessionDescription, + successCallback?: RTCVoidCallback, + failureCallback?: RTCPeerConnectionErrorCallback): void; + remoteDescription: RTCSessionDescription; + signalingState: string; // RTCSignalingState; see TODO(1) + updateIce(configuration?: RTCConfiguration, + constraints?: RTCMediaConstraints): void; + addIceCandidate(candidate: RTCIceCandidate): void; + iceGatheringState: string; // RTCIceGatheringState; see TODO(1) + iceConnectionState: string; // RTCIceConnectionState; see TODO(1) + getLocalStreams(): MediaStream[]; + getRemoteStreams(): MediaStream[]; + createDataChannel(label?: string, + dataChannelDict?: RTCDataChannelInit): RTCDataChannel; + ondatachannel: (event: Event) => void; + addStream(stream: MediaStream, constraints?: RTCMediaConstraints): void; + removeStream(stream: MediaStream): void; + close(): void; + onnegotiationneeded: (event: Event) => void; + onconnecting: (event: Event) => void; + onopen: (event: Event) => void; + onaddstream: (event: RTCMediaStreamEvent) => void; + onremovestream: (event: RTCMediaStreamEvent) => void; + onstatechange: (event: Event) => void; + onicechange: (event: Event) => void; + onicecandidate: (event: RTCIceCandidateEvent) => void; + onidentityresult: (event: Event) => void; + onsignalingstatechange: (event: Event) => void; + getStats: (successCallback: RTCStatsCallback, + failureCallback: RTCPeerConnectionErrorCallback) => void; } declare var RTCPeerConnection: { - prototype: RTCPeerConnection; - new (configuration: RTCConfiguration, constraints?: MediaConstraints): RTCPeerConnection; + prototype: RTCPeerConnection; + new (configuration: RTCConfiguration, + constraints?: RTCMediaConstraints): RTCPeerConnection; } interface RTCIceCandidate { - candidate?: string; - sdpMid?: string; - sdpMLineIndex?: number; + candidate?: string; + sdpMid?: string; + sdpMLineIndex?: number; } declare var RTCIceCandidate: { - prototype: RTCIceCandidate; - new (candidateInitDict?: RTCIceCandidate); + prototype: RTCIceCandidate; + new (candidateInitDict?: RTCIceCandidate): RTCIceCandidate; } interface RTCIceCandidateInit { - candidate: string; - sdpMid: string; - sdpMLineIndex: number; + candidate: string; + sdpMid: string; + sdpMLineIndex: number; } declare var RTCIceCandidateInit:{ - prototype: RTCIceCandidateInit; - new (): RTCIceCandidateInit; + prototype: RTCIceCandidateInit; + new (): RTCIceCandidateInit; } interface PeerConnectionIceEvent { - peer: RTCPeerConnection; - candidate: RTCIceCandidate; + peer: RTCPeerConnection; + candidate: RTCIceCandidate; } declare var PeerConnectionIceEvent: { - prototype: PeerConnectionIceEvent; - new (): PeerConnectionIceEvent; + prototype: PeerConnectionIceEvent; + new (): PeerConnectionIceEvent; } interface RTCPeerConnectionConfig { - iceServers: RTCIceServer[]; + iceServers: RTCIceServer[]; } declare var RTCPeerConnectionConfig: { - prototype: RTCPeerConnectionConfig; - new (): RTCPeerConnectionConfig; + prototype: RTCPeerConnectionConfig; + new (): RTCPeerConnectionConfig; }