google-closure-compiler 20250412.0.0-nightly → 20250413.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +5 -30
  2. package/cli.js +3 -4
  3. package/externs/browser/decorators.js +276 -0
  4. package/externs/browser/deprecated.js +58 -0
  5. package/externs/browser/es6_proxy.js +143 -0
  6. package/externs/browser/fetchapi.js +449 -0
  7. package/externs/browser/fido.js +94 -0
  8. package/externs/browser/flash.js +226 -0
  9. package/externs/browser/gecko_css.js +126 -0
  10. package/externs/browser/gecko_dom.js +479 -0
  11. package/externs/browser/gecko_event.js +86 -0
  12. package/externs/browser/gecko_xml.js +73 -0
  13. package/externs/browser/google_legacy.js +31 -0
  14. package/externs/browser/html5.js +6647 -0
  15. package/externs/browser/ie_css.js +270 -0
  16. package/externs/browser/ie_dom.js +1232 -0
  17. package/externs/browser/ie_event.js +310 -0
  18. package/externs/browser/ie_vml.js +77 -0
  19. package/externs/browser/intersection_observer.js +178 -0
  20. package/externs/browser/intl.js +602 -0
  21. package/externs/browser/iphone.js +204 -0
  22. package/externs/browser/mediakeys.js +305 -0
  23. package/externs/browser/mediasource.js +155 -0
  24. package/externs/browser/nonstandard_anim_timing.js +97 -0
  25. package/externs/browser/nonstandard_audio.js +82 -0
  26. package/externs/browser/nonstandard_console.js +75 -0
  27. package/externs/browser/nonstandard_fileapi.js +1066 -0
  28. package/externs/browser/nonstandard_indexeddb.js +78 -0
  29. package/externs/browser/nonstandard_navigation_timing.js +38 -0
  30. package/externs/browser/nonstandard_selection.js +80 -0
  31. package/externs/browser/page_visibility.js +28 -0
  32. package/externs/browser/streamsapi.js +593 -0
  33. package/externs/browser/svg.js +10016 -0
  34. package/externs/browser/url.js +202 -0
  35. package/externs/browser/v8.js +134 -0
  36. package/externs/browser/w3c_abort.js +89 -0
  37. package/externs/browser/w3c_anim_timing.js +49 -0
  38. package/externs/browser/w3c_aria_mixin.js +286 -0
  39. package/externs/browser/w3c_audio.js +1660 -0
  40. package/externs/browser/w3c_batterystatus.js +85 -0
  41. package/externs/browser/w3c_clipboard.js +74 -0
  42. package/externs/browser/w3c_clipboardevent.js +47 -0
  43. package/externs/browser/w3c_composition_event.js +93 -0
  44. package/externs/browser/w3c_css.js +3790 -0
  45. package/externs/browser/w3c_css3d.js +199 -0
  46. package/externs/browser/w3c_device_sensor_event.js +122 -0
  47. package/externs/browser/w3c_dom1.js +1160 -0
  48. package/externs/browser/w3c_dom2.js +3151 -0
  49. package/externs/browser/w3c_dom3.js +555 -0
  50. package/externs/browser/w3c_dom4.js +289 -0
  51. package/externs/browser/w3c_elementtraversal.js +116 -0
  52. package/externs/browser/w3c_event.js +607 -0
  53. package/externs/browser/w3c_event3.js +77 -0
  54. package/externs/browser/w3c_eventsource.js +110 -0
  55. package/externs/browser/w3c_fileapi.js +302 -0
  56. package/externs/browser/w3c_gamepad.js +113 -0
  57. package/externs/browser/w3c_geolocation.js +130 -0
  58. package/externs/browser/w3c_geometry1.js +899 -0
  59. package/externs/browser/w3c_indexeddb.js +771 -0
  60. package/externs/browser/w3c_keyboardlock.js +47 -0
  61. package/externs/browser/w3c_mediacapabilities.js +206 -0
  62. package/externs/browser/w3c_midi.js +301 -0
  63. package/externs/browser/w3c_navigation.js +72 -0
  64. package/externs/browser/w3c_navigation_timing.js +437 -0
  65. package/externs/browser/w3c_netinfo.js +85 -0
  66. package/externs/browser/w3c_payment_request.js +401 -0
  67. package/externs/browser/w3c_permissions.js +112 -0
  68. package/externs/browser/w3c_permissions_policy.js +78 -0
  69. package/externs/browser/w3c_pointer_events.js +163 -0
  70. package/externs/browser/w3c_pointerlock.js +63 -0
  71. package/externs/browser/w3c_range.js +284 -0
  72. package/externs/browser/w3c_referrer_policy.js +36 -0
  73. package/externs/browser/w3c_requestidlecallback.js +76 -0
  74. package/externs/browser/w3c_rtc.js +3882 -0
  75. package/externs/browser/w3c_screen_orientation.js +53 -0
  76. package/externs/browser/w3c_screen_wake_lock.js +58 -0
  77. package/externs/browser/w3c_selection.js +209 -0
  78. package/externs/browser/w3c_selectors.js +113 -0
  79. package/externs/browser/w3c_serviceworker.js +739 -0
  80. package/externs/browser/w3c_speech.js +426 -0
  81. package/externs/browser/w3c_touch_event.js +296 -0
  82. package/externs/browser/w3c_trusted_types.js +142 -0
  83. package/externs/browser/w3c_vibration.js +38 -0
  84. package/externs/browser/w3c_webcodecs.js +1473 -0
  85. package/externs/browser/w3c_webcrypto.js +839 -0
  86. package/externs/browser/w3c_worklets.js +54 -0
  87. package/externs/browser/w3c_xml.js +533 -0
  88. package/externs/browser/web_animations.js +452 -0
  89. package/externs/browser/web_app_manifest.js +50 -0
  90. package/externs/browser/webassembly.js +223 -0
  91. package/externs/browser/webgl.js +3409 -0
  92. package/externs/browser/webgl2.js +2727 -0
  93. package/externs/browser/webgl2_compute.js +1609 -0
  94. package/externs/browser/webkit_css.js +456 -0
  95. package/externs/browser/webkit_dom.js +118 -0
  96. package/externs/browser/webkit_event.js +46 -0
  97. package/externs/browser/webkit_notifications.js +258 -0
  98. package/externs/browser/webkit_usercontent.js +55 -0
  99. package/externs/browser/weblocksapi.js +125 -0
  100. package/externs/browser/webstorage.js +171 -0
  101. package/externs/browser/whatwg_bitmap_context.js +37 -0
  102. package/externs/browser/whatwg_console.js +152 -0
  103. package/externs/browser/whatwg_encoding.js +99 -0
  104. package/externs/browser/whatwg_file_system.js +296 -0
  105. package/externs/browser/wicg_attribution_reporting.js +42 -0
  106. package/externs/browser/wicg_compression_stream.js +60 -0
  107. package/externs/browser/wicg_constructable_stylesheets.js +60 -0
  108. package/externs/browser/wicg_entries.js +169 -0
  109. package/externs/browser/wicg_file_handling.js +41 -0
  110. package/externs/browser/wicg_file_system_access.js +191 -0
  111. package/externs/browser/wicg_floc.js +41 -0
  112. package/externs/browser/wicg_ink.js +89 -0
  113. package/externs/browser/wicg_resizeobserver.js +100 -0
  114. package/externs/browser/wicg_scheduler.js +62 -0
  115. package/externs/browser/wicg_trust_token.js +89 -0
  116. package/externs/browser/wicg_uach.js +100 -0
  117. package/externs/browser/window.js +190 -0
  118. package/externs/es3.js +2716 -0
  119. package/externs/es5.js +284 -0
  120. package/externs/es6.js +2554 -0
  121. package/externs/es6_collections.js +323 -0
  122. package/index.js +13 -16
  123. package/lib/grunt/index.js +71 -92
  124. package/lib/grunt/vinyl-stream.js +12 -18
  125. package/lib/gulp/concat-to-json.js +30 -18
  126. package/lib/gulp/index.js +174 -181
  127. package/lib/gulp/json-to-vinyl.js +8 -8
  128. package/lib/node/{closure-compiler.js → index.js} +27 -51
  129. package/lib/utils.js +16 -14
  130. package/package.json +19 -16
  131. package/lib/logger.js +0 -89
@@ -0,0 +1,3882 @@
1
+ /*
2
+ * Copyright 2012 The Closure Compiler Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /**
18
+ * @fileoverview Definitions for components of the WebRTC browser API.
19
+ * @see https://www.w3.org/TR/webrtc/
20
+ * @see https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-19
21
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API
22
+ * @see https://www.w3.org/TR/mediacapture-streams/
23
+ *
24
+ * @externs
25
+ * @author bemasc@google.com (Benjamin M. Schwartz)
26
+ */
27
+
28
+ /**
29
+ * @typedef {string}
30
+ * @see {https://www.w3.org/TR/mediacapture-streams/
31
+ * #idl-def-MediaStreamTrackState}
32
+ * In WebIDL this is an enum with values 'live', 'mute', and 'ended',
33
+ * but there is no mechanism in Closure for describing a specialization of
34
+ * the string type.
35
+ */
36
+ var MediaStreamTrackState;
37
+
38
+ /**
39
+ * @interface
40
+ */
41
+ function SourceInfo() {}
42
+
43
+ /** @const {string} */
44
+ SourceInfo.prototype.kind;
45
+
46
+ /** @const {string} */
47
+ SourceInfo.prototype.id;
48
+
49
+ /** @const {?string} */
50
+ SourceInfo.prototype.label;
51
+
52
+ /** @const {boolean} */
53
+ SourceInfo.prototype.facing;
54
+
55
+ /**
56
+ * @interface
57
+ * @see https://w3c.github.io/mediacapture-image/#mediasettingsrange-section
58
+ */
59
+ function MediaSettingsRange() {}
60
+
61
+ /**
62
+ * @const {number}
63
+ */
64
+ MediaSettingsRange.prototype.max;
65
+
66
+ /**
67
+ * @const {number}
68
+ */
69
+ MediaSettingsRange.prototype.min;
70
+
71
+ /**
72
+ * @const {number}
73
+ */
74
+ MediaSettingsRange.prototype.step;
75
+
76
+ /**
77
+ * @interface
78
+ * @see https://www.w3.org/TR/mediacapture-streams/#idl-def-MediaTrackCapabilities
79
+ * @see https://w3c.github.io/mediacapture-image/#mediatrackcapabilities-section
80
+ * @see https://www.w3.org/TR/screen-capture
81
+ */
82
+ function MediaTrackCapabilities() {}
83
+
84
+ /** @type {number} */
85
+ MediaTrackCapabilities.prototype.width;
86
+
87
+ /** @type {number} */
88
+ MediaTrackCapabilities.prototype.height;
89
+
90
+ /** @type {number} */
91
+ MediaTrackCapabilities.prototype.aspectRatio;
92
+
93
+ /** @type {number} */
94
+ MediaTrackCapabilities.prototype.frameRate;
95
+
96
+ /** @type {!Array<string>} */
97
+ MediaTrackCapabilities.prototype.facingMode;
98
+
99
+ /** @type {!Array<string>} */
100
+ MediaTrackCapabilities.prototype.resizeMode;
101
+
102
+ /** @type {number} */
103
+ MediaTrackCapabilities.prototype.volume;
104
+
105
+ /** @type {number} */
106
+ MediaTrackCapabilities.prototype.sampleRate;
107
+
108
+ /** @type {number} */
109
+ MediaTrackCapabilities.prototype.sampleSize;
110
+
111
+ /** @type {!Array<boolean>} */
112
+ MediaTrackCapabilities.prototype.echoCancellation;
113
+
114
+ /** @type {number} */
115
+ MediaTrackCapabilities.prototype.latency;
116
+
117
+ /** @type {number} */
118
+ MediaTrackCapabilities.prototype.channelCount;
119
+
120
+ /** @type {string} */
121
+ MediaTrackCapabilities.prototype.deviceId;
122
+
123
+ /** @type {string} */
124
+ MediaTrackCapabilities.prototype.groupId;
125
+
126
+ /** @type {!Array<string>} */
127
+ MediaTrackCapabilities.prototype.whiteBalanceMode;
128
+
129
+ /** @type {!Array<string>} */
130
+ MediaTrackCapabilities.prototype.exposureMode;
131
+
132
+ /** @type {!Array<string>} */
133
+ MediaTrackCapabilities.prototype.focusMode;
134
+
135
+ /** @type {!MediaSettingsRange} */
136
+ MediaTrackCapabilities.prototype.exposureCompensation;
137
+
138
+ /** @type {!MediaSettingsRange} */
139
+ MediaTrackCapabilities.prototype.colorTemperature
140
+
141
+ /** @type {!MediaSettingsRange} */
142
+ MediaTrackCapabilities.prototype.iso
143
+
144
+ /** @type {!MediaSettingsRange} */
145
+ MediaTrackCapabilities.prototype.brightness
146
+
147
+ /** @type {!MediaSettingsRange} */
148
+ MediaTrackCapabilities.prototype.contrast
149
+
150
+ /** @type {!MediaSettingsRange} */
151
+ MediaTrackCapabilities.prototype.saturation
152
+
153
+ /** @type {!MediaSettingsRange} */
154
+ MediaTrackCapabilities.prototype.sharpness
155
+
156
+ /** @type {!MediaSettingsRange} */
157
+ MediaTrackCapabilities.prototype.zoom
158
+
159
+ /** @type {boolean} */
160
+ MediaTrackCapabilities.prototype.torch
161
+
162
+ /** @type {string|undefined} */
163
+ MediaTrackCapabilities.prototype.displaySurface;
164
+
165
+ /** @type {boolean|undefined} */
166
+ MediaTrackCapabilities.prototype.logicalSurface;
167
+
168
+ /** @type {Array<string>} */
169
+ MediaTrackCapabilities.prototype.cursor;
170
+
171
+ /**
172
+ * @interface
173
+ * @see https://www.w3.org/TR/screen-capture
174
+ * @see https://www.w3.org/TR/screen-capture/#extensions-to-mediatracksettings
175
+ * @see https://www.w3.org/TR/mediacapture-streams/#media-track-settings
176
+ * @see https://w3c.github.io/mediacapture-image/#mediatracksettings-section
177
+ */
178
+ function MediaTrackSettings() {}
179
+
180
+ /** @type {number} */
181
+ MediaTrackSettings.prototype.width;
182
+
183
+ /** @type {number} */
184
+ MediaTrackSettings.prototype.height;
185
+
186
+ /** @type {number} */
187
+ MediaTrackSettings.prototype.aspectRatio;
188
+
189
+ /** @type {number} */
190
+ MediaTrackSettings.prototype.frameRate;
191
+
192
+ /** @type {string} */
193
+ MediaTrackSettings.prototype.facingMode;
194
+
195
+ /** @type {string} */
196
+ MediaTrackSettings.prototype.resizeMode;
197
+
198
+ /** @type {string|undefined} */
199
+ MediaTrackSettings.prototype.displaySurface;
200
+
201
+ /** @type {boolean|undefined} */
202
+ MediaTrackSettings.prototype.logicalSurface;
203
+
204
+ /** @type {string|undefined} */
205
+ MediaTrackSettings.prototype.cursor;
206
+
207
+ /** @type {boolean|undefined} */
208
+ MediaTrackSettings.prototype.restrictOwnAudio;
209
+
210
+ /** @type {boolean|undefined} */
211
+ MediaTrackSettings.prototype.suppressLocalAudioPlayback;
212
+
213
+ /** @type {number} */
214
+ MediaTrackSettings.prototype.volume;
215
+
216
+ /** @type {number} */
217
+ MediaTrackSettings.prototype.sampleRate;
218
+
219
+ /** @type {number} */
220
+ MediaTrackSettings.prototype.sampleSize;
221
+
222
+ /** @type {boolean} */
223
+ MediaTrackSettings.prototype.echoCancellation;
224
+
225
+ /** @type {boolean} */
226
+ MediaTrackSettings.prototype.autoGainControl;
227
+
228
+ /** @type {boolean} */
229
+ MediaTrackSettings.prototype.noiseSuppression;
230
+
231
+ /** @type {number} */
232
+ MediaTrackSettings.prototype.latency;
233
+
234
+ /** @type {number} */
235
+ MediaTrackSettings.prototype.channelCount;
236
+
237
+ /** @type {string} */
238
+ MediaTrackSettings.prototype.deviceId;
239
+
240
+ /** @type {string} */
241
+ MediaTrackSettings.prototype.groupId;
242
+
243
+ /** @type {string} */
244
+ MediaTrackSettings.prototype.whiteBalanceMode;
245
+
246
+ /** @type {string} */
247
+ MediaTrackSettings.prototype.exposureMode;
248
+
249
+ /** @type {string} */
250
+ MediaTrackSettings.prototype.focusMode;
251
+
252
+ /** @type {!Array<{x: number, y: number}>} */
253
+ MediaTrackSettings.prototype.pointsOfInterest;
254
+
255
+ /** @type {number} */
256
+ MediaTrackSettings.prototype.exposureCompensation;
257
+
258
+ /** @type {number} */
259
+ MediaTrackSettings.prototype.colorTemperature
260
+
261
+ /** @type {number} */
262
+ MediaTrackSettings.prototype.iso
263
+
264
+ /** @type {number} */
265
+ MediaTrackSettings.prototype.brightness
266
+
267
+ /** @type {number} */
268
+ MediaTrackSettings.prototype.contrast
269
+
270
+ /** @type {number} */
271
+ MediaTrackSettings.prototype.saturation
272
+
273
+ /** @type {number} */
274
+ MediaTrackSettings.prototype.sharpness
275
+
276
+ /** @type {number} */
277
+ MediaTrackSettings.prototype.zoom
278
+
279
+ /** @type {boolean} */
280
+ MediaTrackSettings.prototype.torch
281
+
282
+
283
+ /**
284
+ * @interface
285
+ * @see https://w3c.github.io/mediacapture-main/#media-track-supported-constraints
286
+ * @see https://w3c.github.io/mediacapture-screen-share/#extensions-to-mediatracksupportedconstraints
287
+ * @see https://www.w3.org/TR/screen-capture
288
+ */
289
+ function MediaTrackSupportedConstraints() {}
290
+
291
+ /** @type {boolean|undefined} */
292
+ MediaTrackSupportedConstraints.prototype.width;
293
+
294
+ /** @type {boolean|undefined} */
295
+ MediaTrackSupportedConstraints.prototype.height;
296
+
297
+ /** @type {boolean|undefined} */
298
+ MediaTrackSupportedConstraints.prototype.aspectRatio;
299
+
300
+ /** @type {boolean|undefined} */
301
+ MediaTrackSupportedConstraints.prototype.frameRate;
302
+
303
+ /** @type {boolean|undefined} */
304
+ MediaTrackSupportedConstraints.prototype.facingMode;
305
+
306
+ /** @type {boolean|undefined} */
307
+ MediaTrackSupportedConstraints.prototype.resizeMode;
308
+
309
+ /** @type {boolean|undefined} */
310
+ MediaTrackSupportedConstraints.prototype.volume;
311
+
312
+ /** @type {boolean|undefined} */
313
+ MediaTrackSupportedConstraints.prototype.sampleRate;
314
+
315
+ /** @type {boolean|undefined} */
316
+ MediaTrackSupportedConstraints.prototype.sampleSize;
317
+
318
+ /** @type {boolean|undefined} */
319
+ MediaTrackSupportedConstraints.prototype.echoCancellation;
320
+
321
+ /** @type {boolean|undefined} */
322
+ MediaTrackSupportedConstraints.prototype.autoGainControl;
323
+
324
+ /** @type {boolean|undefined} */
325
+ MediaTrackSupportedConstraints.prototype.noiseSuppression;
326
+
327
+ /** @type {boolean|undefined} */
328
+ MediaTrackSupportedConstraints.prototype.latency;
329
+
330
+ /** @type {boolean|undefined} */
331
+ MediaTrackSupportedConstraints.prototype.channelCount;
332
+
333
+ /** @type {boolean|undefined} */
334
+ MediaTrackSupportedConstraints.prototype.deviceId;
335
+
336
+ /** @type {boolean|undefined} */
337
+ MediaTrackSupportedConstraints.prototype.groupId;
338
+
339
+ /** @type {boolean|undefined} */
340
+ MediaTrackSupportedConstraints.prototype.displaySurface;
341
+
342
+ /** @type {boolean|undefined} */
343
+ MediaTrackSupportedConstraints.prototype.logicalSurface;
344
+
345
+ /** @type {boolean|undefined} */
346
+ MediaTrackSupportedConstraints.prototype.cursor;
347
+
348
+ /** @type {boolean|undefined} */
349
+ MediaTrackSupportedConstraints.prototype.restrictOwnAudio;
350
+
351
+ /** @type {boolean|undefined} */
352
+ MediaTrackSupportedConstraints.prototype.suppressLocalAudioPlayback;
353
+
354
+ /**
355
+ * @constructor
356
+ * @implements {EventTarget}
357
+ * @see https://www.w3.org/TR/mediacapture-streams/#mediastreamtrack
358
+ */
359
+ function MediaStreamTrack() {}
360
+
361
+ /**
362
+ * @const {string}
363
+ */
364
+ MediaStreamTrack.prototype.kind;
365
+
366
+ /**
367
+ * @const {string}
368
+ */
369
+ MediaStreamTrack.prototype.id;
370
+
371
+ /**
372
+ * @const {string}
373
+ */
374
+ MediaStreamTrack.prototype.label;
375
+
376
+ /**
377
+ * @type {boolean}
378
+ */
379
+ MediaStreamTrack.prototype.enabled;
380
+
381
+ /**
382
+ * @const {boolean}
383
+ */
384
+ MediaStreamTrack.prototype.muted;
385
+
386
+ /**
387
+ * @type {string}
388
+ * @see https://crbug.com/653531
389
+ * @see https://wicg.github.io/mst-content-hint/
390
+ */
391
+ MediaStreamTrack.prototype.contentHint;
392
+
393
+ /**
394
+ * @const {boolean}
395
+ */
396
+ MediaStreamTrack.prototype.remote;
397
+
398
+ /**
399
+ * @const {!MediaStreamTrackState}
400
+ * Read only.
401
+ */
402
+ MediaStreamTrack.prototype.readyState;
403
+
404
+ /**
405
+ * @type {?function(!Event)}
406
+ */
407
+ MediaStreamTrack.prototype.onmute;
408
+
409
+ /**
410
+ * @type {?function(!Event)}
411
+ */
412
+ MediaStreamTrack.prototype.onunmute;
413
+
414
+ /**
415
+ * @type {?function(!Event)}
416
+ */
417
+ MediaStreamTrack.prototype.onended;
418
+
419
+ /**
420
+ * @type {?function(!Event)}
421
+ */
422
+ MediaStreamTrack.prototype.onoverconstrained;
423
+
424
+ /**
425
+ * Applies the specified set of constraints to the track, if any specified; or
426
+ * if no constraints are specified, removes all constraints from the track.
427
+ *
428
+ * @param {MediaTrackConstraints=} constraints Constraints to apply to the
429
+ * track.
430
+ * @return {!Promise<void>} A |Promise| that is resolved when the constraints
431
+ * have been applied, or rejected if there was an error applying the
432
+ * constraints.
433
+ */
434
+ MediaStreamTrack.prototype.applyConstraints = function(constraints) {};
435
+
436
+ /**
437
+ * @return {!MediaStreamTrack}
438
+ */
439
+ MediaStreamTrack.prototype.clone = function() {};
440
+
441
+ /** @return {void} */
442
+ MediaStreamTrack.prototype.stop = function() {};
443
+
444
+ /** @return {!MediaTrackCapabilities} */
445
+ MediaStreamTrack.prototype.getCapabilities = function() {};
446
+
447
+ /** @return {!MediaTrackConstraints} */
448
+ MediaStreamTrack.prototype.getConstraints = function() {};
449
+
450
+ /** @return {!MediaTrackSettings} */
451
+ MediaStreamTrack.prototype.getSettings = function() {};
452
+
453
+ /** @override */
454
+ MediaStreamTrack.prototype.addEventListener = function(
455
+ type, listener, opt_options) {};
456
+
457
+ /** @override */
458
+ MediaStreamTrack.prototype.removeEventListener = function(
459
+ type, listener, opt_options) {};
460
+
461
+ /**
462
+ * @override
463
+ * @return {boolean}
464
+ */
465
+ MediaStreamTrack.prototype.dispatchEvent = function(evt) {};
466
+
467
+ /**
468
+ * @typedef {{track: MediaStreamTrack}}
469
+ */
470
+ var MediaStreamTrackEventInit;
471
+
472
+
473
+ /**
474
+ * @param {string} type
475
+ * @param {!MediaStreamTrackEventInit} eventInitDict
476
+ * @constructor
477
+ * @extends {Event}
478
+ * @see https://www.w3.org/TR/mediacapture-streams/#mediastreamtrackevent
479
+ */
480
+ function MediaStreamTrackEvent(type, eventInitDict) {}
481
+
482
+ /**
483
+ * @const {!MediaStreamTrack}
484
+ */
485
+ MediaStreamTrackEvent.prototype.track;
486
+
487
+ /**
488
+ * @param {!MediaStream|!Array<!MediaStreamTrack>=} streamOrTracks
489
+ * @constructor
490
+ * @implements {EventTarget}
491
+ * @see https://www.w3.org/TR/mediacapture-streams/#mediastream
492
+ */
493
+ function MediaStream(streamOrTracks) {}
494
+
495
+ /**
496
+ * @override
497
+ */
498
+ MediaStream.prototype.addEventListener = function(
499
+ type, listener, opt_useCapture) {};
500
+
501
+ /**
502
+ * @override
503
+ */
504
+ MediaStream.prototype.removeEventListener = function(
505
+ type, listener, opt_useCapture) {};
506
+
507
+ /**
508
+ * @override
509
+ * @return {boolean}
510
+ */
511
+ MediaStream.prototype.dispatchEvent = function(evt) {};
512
+
513
+ /**
514
+ * TODO(bemasc): Remove this property.
515
+ * @deprecated
516
+ * @const {string}
517
+ */
518
+ MediaStream.prototype.label;
519
+
520
+ /**
521
+ * @const {string}
522
+ */
523
+ MediaStream.prototype.id;
524
+
525
+ /**
526
+ * @return {!Array<!MediaStreamTrack>}
527
+ */
528
+ MediaStream.prototype.getAudioTracks = function() {};
529
+
530
+ /**
531
+ * @return {!Array<!MediaStreamTrack>}
532
+ */
533
+ MediaStream.prototype.getVideoTracks = function() {};
534
+
535
+ /**
536
+ * @return {!Array<!MediaStreamTrack>}
537
+ */
538
+ MediaStream.prototype.getTracks = function() {};
539
+
540
+ /**
541
+ * @param {string} trackId
542
+ * @return {MediaStreamTrack}
543
+ */
544
+ MediaStream.prototype.getTrackById = function(trackId) {};
545
+
546
+ /**
547
+ * @param {!MediaStreamTrack} track
548
+ * @return {undefined}
549
+ */
550
+ MediaStream.prototype.addTrack = function(track) {};
551
+
552
+ /**
553
+ * @param {!MediaStreamTrack} track
554
+ * @return {undefined}
555
+ */
556
+ MediaStream.prototype.removeTrack = function(track) {};
557
+
558
+ /**
559
+ * @return {!MediaStream}
560
+ */
561
+ MediaStream.prototype.clone = function() {};
562
+
563
+ /**
564
+ * @deprecated
565
+ * @type {boolean}
566
+ */
567
+ MediaStream.prototype.ended;
568
+
569
+ /**
570
+ * @deprecated
571
+ * @type {?function(!Event)}
572
+ */
573
+ MediaStream.prototype.onended;
574
+
575
+ /**
576
+ * @type {boolean}
577
+ */
578
+ MediaStream.prototype.active;
579
+
580
+ /**
581
+ * @type {?function(!Event)}
582
+ */
583
+ MediaStream.prototype.onactive;
584
+
585
+ /**
586
+ * @type {?function(!Event)}
587
+ */
588
+ MediaStream.prototype.oninactive;
589
+
590
+ /**
591
+ * @type {?function(!MediaStreamTrackEvent)}
592
+ */
593
+ MediaStream.prototype.onaddtrack;
594
+
595
+ /**
596
+ * @type {?function(!MediaStreamTrackEvent)}
597
+ */
598
+ MediaStream.prototype.onremovetrack;
599
+
600
+ /**
601
+ * @deprecated
602
+ * TODO(bemasc): Remove this method once browsers have updated to
603
+ * MediaStreamTrack.stop().
604
+ * @return {undefined}
605
+ */
606
+ MediaStream.prototype.stop = function() {};
607
+
608
+ /**
609
+ * @param {string} constraint
610
+ * @param {string=} message
611
+ * @constructor
612
+ * @extends {Error}
613
+ * @see https://www.w3.org/TR/mediacapture-streams/#overconstrainederror-interface
614
+ */
615
+ function OverconstrainedError(constraint, message) {}
616
+
617
+ /**
618
+ * @const {string}
619
+ * Read only.
620
+ */
621
+ OverconstrainedError.prototype.constraint;
622
+
623
+ /**
624
+ * @typedef {{tone: string}}
625
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcdtmftonechangeeventinit
626
+ */
627
+ var RTCDTMFToneChangeEventInit;
628
+
629
+
630
+ /**
631
+ * @param {string} type
632
+ * @param {!RTCDTMFToneChangeEventInit} eventInitDict
633
+ * @constructor
634
+ * @extends {Event}
635
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcdtmftonechangeevent
636
+ */
637
+ function RTCDTMFToneChangeEvent(type, eventInitDict) {}
638
+
639
+ /**
640
+ * @const {string}
641
+ */
642
+ RTCDTMFToneChangeEvent.prototype.tone;
643
+
644
+ /**
645
+ * @interface
646
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/RTCEncodedVideoFrame/getMetadata
647
+ */
648
+ function RTCEncodedVideoFrameMetadata() {}
649
+
650
+ /** @type {Array<number>|undefined} */
651
+ RTCEncodedVideoFrameMetadata.prototype.contributingSources;
652
+
653
+ /** @type {Array<number>|undefined} */
654
+ RTCEncodedVideoFrameMetadata.prototype.dependencies;
655
+
656
+ /** @type {number|undefined} */
657
+ RTCEncodedVideoFrameMetadata.prototype.frameId;
658
+
659
+ /** @type {number|undefined} */
660
+ RTCEncodedVideoFrameMetadata.prototype.height;
661
+
662
+ /** @type {number|undefined} */
663
+ RTCEncodedVideoFrameMetadata.prototype.payloadType;
664
+
665
+ /** @type {number|undefined} */
666
+ RTCEncodedVideoFrameMetadata.prototype.spatialIndex;
667
+
668
+ /** @type {number|undefined} */
669
+ RTCEncodedVideoFrameMetadata.prototype.synchronizationSource;
670
+
671
+ /** @type {number|undefined} */
672
+ RTCEncodedVideoFrameMetadata.prototype.temporalIndex;
673
+
674
+ /** @type {number|undefined} */
675
+ RTCEncodedVideoFrameMetadata.prototype.timestamp;
676
+
677
+ /** @type {number|undefined} */
678
+ RTCEncodedVideoFrameMetadata.prototype.width;
679
+
680
+ /**
681
+ * @constructor
682
+ * @see https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame
683
+ */
684
+ function RTCEncodedVideoFrame() {}
685
+
686
+ /**
687
+ * @const {!ArrayBuffer}
688
+ */
689
+ RTCEncodedVideoFrame.prototype.data;
690
+
691
+ /**
692
+ * @const {number}
693
+ */
694
+ RTCEncodedVideoFrame.prototype.timestamp;
695
+
696
+
697
+ /**
698
+ * @const {string}
699
+ */
700
+ RTCEncodedVideoFrame.prototype.type;
701
+
702
+
703
+ /**
704
+ * @return {!RTCEncodedVideoFrameMetadata}
705
+ */
706
+ RTCEncodedVideoFrame.prototype.getMetadata = function() {};
707
+
708
+
709
+ /**
710
+ * @interface
711
+ * @see https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/getMetadata
712
+ */
713
+ function RTCEncodedAudioFrameMetadata() {}
714
+
715
+ /** @type {Array<number>|undefined} */
716
+ RTCEncodedAudioFrameMetadata.prototype.contributingSources;
717
+
718
+ /** @type {number|undefined} */
719
+ RTCEncodedAudioFrameMetadata.prototype.payloadType;
720
+
721
+ /** @type {number|undefined} */
722
+ RTCEncodedAudioFrameMetadata.prototype.sequenceNumber;
723
+
724
+ /** @type {number|undefined} */
725
+ RTCEncodedAudioFrameMetadata.prototype.synchronizationSource;
726
+
727
+
728
+ /**
729
+ * @constructor
730
+ * @see https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame
731
+ */
732
+ function RTCEncodedAudioFrame() {}
733
+
734
+ /**
735
+ * @const {!ArrayBuffer}
736
+ */
737
+ RTCEncodedAudioFrame.prototype.data;
738
+
739
+ /**
740
+ * @const {number}
741
+ */
742
+ RTCEncodedAudioFrame.prototype.timestamp;
743
+
744
+ /**
745
+ * @return {!RTCEncodedAudioFrameMetadata}
746
+ */
747
+ RTCEncodedAudioFrame.prototype.getMetadata = function() {};
748
+
749
+
750
+ /**
751
+ * @interface
752
+ * @see https://www.w3.org/TR/webrtc/#rtcdtmfsender
753
+ */
754
+ function RTCDTMFSender() {}
755
+
756
+ /**
757
+ * @param {string} tones
758
+ * @param {number=} opt_duration
759
+ * @param {number=} opt_interToneGap
760
+ */
761
+ RTCDTMFSender.prototype.insertDTMF = function(
762
+ tones, opt_duration, opt_interToneGap) {};
763
+
764
+ /**
765
+ * @type {?boolean}
766
+ */
767
+ RTCDTMFSender.prototype.canInsertDTMF;
768
+
769
+ /**
770
+ * @type {?function(!RTCDTMFToneChangeEvent)}
771
+ */
772
+ RTCDTMFSender.prototype.ontonechange;
773
+
774
+ /**
775
+ * @const {string}
776
+ */
777
+ RTCDTMFSender.prototype.toneBuffer;
778
+
779
+
780
+ /**
781
+ * @typedef {{
782
+ * mimeType: string,
783
+ * clockRate: number,
784
+ * channels: (number|undefined),
785
+ * sdpFmtpLine: (string|undefined),
786
+ * }}
787
+ *
788
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpcodeccapability
789
+ */
790
+ var RTCRtpCodecCapability;
791
+
792
+
793
+ /**
794
+ * @typedef {{
795
+ * uri: string,
796
+ * }}
797
+ *
798
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpheaderextensioncapability
799
+ */
800
+ var RTCRtpHeaderExtensionCapability;
801
+
802
+
803
+ /**
804
+ * @typedef {{
805
+ * codecs: !Array<!RTCRtpCodecCapability>,
806
+ * headerExtensions: !Array<!RTCRtpHeaderExtensionCapability>,
807
+ * }}
808
+ *
809
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpcapabilities
810
+ */
811
+ var RTCRtpCapabilities;
812
+
813
+
814
+ /**
815
+ * @record
816
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpheaderextensionparameters
817
+ */
818
+ function RTCRtpHeaderExtensionParameters() {}
819
+
820
+ /** @type {string} */
821
+ RTCRtpHeaderExtensionParameters.prototype.uri;
822
+
823
+ /** @type {number} */
824
+ RTCRtpHeaderExtensionParameters.prototype.id;
825
+
826
+ /** @type {boolean|undefined} */
827
+ RTCRtpHeaderExtensionParameters.prototype.encrypted;
828
+
829
+
830
+ /**
831
+ * @record
832
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtcpparameters
833
+ */
834
+ function RTCRtcpParameters() {}
835
+
836
+ /** @type {string|undefined} */
837
+ RTCRtcpParameters.prototype.cname;
838
+
839
+ /** @type {boolean|undefined} */
840
+ RTCRtcpParameters.prototype.reducedSize;
841
+
842
+
843
+ /**
844
+ * @record
845
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpcodecparameters
846
+ */
847
+ function RTCRtpCodecParameters() {}
848
+
849
+ /** @type {number} */
850
+ RTCRtpCodecParameters.prototype.cname;
851
+
852
+ /** @type {string} */
853
+ RTCRtpCodecParameters.prototype.mimeType;
854
+
855
+ /** @type {number} */
856
+ RTCRtpCodecParameters.prototype.clockRate;
857
+
858
+ /** @type {number} */
859
+ RTCRtpCodecParameters.prototype.channels;
860
+
861
+ /** @type {string|undefined} */
862
+ RTCRtpCodecParameters.prototype.sdpFmtpLine;
863
+
864
+
865
+ /**
866
+ * @record
867
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpparameters
868
+ */
869
+ function RTCRtpParameters() {}
870
+
871
+ /**
872
+ * @type {!Array<!RTCRtpHeaderExtensionParameters>}
873
+ */
874
+ RTCRtpParameters.prototype.headerExtensions;
875
+
876
+ /**
877
+ * @type {!RTCRtcpParameters}
878
+ */
879
+ RTCRtpParameters.prototype.rtcp;
880
+
881
+ /**
882
+ * @type {!Array<!RTCRtpCodecParameters>}
883
+ */
884
+ RTCRtpParameters.prototype.codecs;
885
+
886
+
887
+ /**
888
+ * @record
889
+ * @extends {RTCRtpParameters}
890
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpsendparameters
891
+ */
892
+ function RTCRtpSendParameters() {}
893
+
894
+ /**
895
+ * @type {string}
896
+ */
897
+ RTCRtpSendParameters.prototype.transactionId;
898
+
899
+ /**
900
+ * @type {!Array<!RTCRtpEncodingParameters>}
901
+ */
902
+ RTCRtpSendParameters.prototype.encodings;
903
+
904
+ /**
905
+ * Possible string values are "maintain-framerate", "maintain-resolution", and
906
+ * "balanced".
907
+ * @type {string|undefined}
908
+ */
909
+ RTCRtpSendParameters.prototype.degradationPreference;
910
+
911
+
912
+ /**
913
+ * @record
914
+ * @extends {RTCRtpParameters}
915
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpreceiveparameters
916
+ */
917
+ function RTCRtpReceiveParameters() {}
918
+
919
+
920
+ /**
921
+ * @constructor
922
+ * @see https://www.w3.org/TR/webrtc/#rtcrtpsender-interface
923
+ */
924
+ function RTCRtpSender() {}
925
+
926
+ /**
927
+ * @const {!RTCDTMFSender}
928
+ */
929
+ RTCRtpSender.prototype.dtmf;
930
+
931
+ /**
932
+ * @const {?MediaStreamTrack}
933
+ */
934
+ RTCRtpSender.prototype.track;
935
+
936
+ /**
937
+ * @const {?RTCDtlsTransport}
938
+ */
939
+ RTCRtpSender.prototype.transport;
940
+
941
+ /**
942
+ * @param {?MediaStreamTrack} track
943
+ * @return {!Promise<void>}
944
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpsender
945
+ */
946
+ RTCRtpSender.prototype.replaceTrack = function(track) {};
947
+
948
+ /**
949
+ * @return {!RTCRtpSendParameters}
950
+ */
951
+ RTCRtpSender.prototype.getParameters = function() {};
952
+
953
+ /**
954
+ * @param {!RTCRtpSendParameters} params
955
+ * @return {!Promise<undefined>}
956
+ */
957
+ RTCRtpSender.prototype.setParameters = function(params) {};
958
+
959
+ /**
960
+ * @param {...!MediaStream} streams
961
+ * @return {undefined}
962
+ */
963
+ RTCRtpSender.prototype.setStreams = function(streams) {};
964
+
965
+ /**
966
+ * @return {!Promise<!RTCStatsReport>}
967
+ */
968
+ RTCRtpSender.prototype.getStats = function() {};
969
+
970
+ /**
971
+ * @param {string} kind
972
+ * @return {?RTCRtpCapabilities}
973
+ */
974
+ RTCRtpSender.getCapabilities = function(kind) {};
975
+
976
+
977
+ /**
978
+ * @interface
979
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpcontributingsource
980
+ */
981
+ function RTCRtpContributingSource() {}
982
+
983
+ /**
984
+ * @type {?number}
985
+ */
986
+ RTCRtpContributingSource.prototype.source;
987
+
988
+ /**
989
+ * @type {?Date|number}
990
+ */
991
+ RTCRtpContributingSource.prototype.timestamp;
992
+
993
+ /**
994
+ * @type {number|undefined}
995
+ */
996
+ RTCRtpContributingSource.prototype.audioLevel;
997
+
998
+ /**
999
+ * This is a relatively new field and browsers may not yet be compliant to the
1000
+ * spec.
1001
+ * @type {?number}
1002
+ * @see https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-rtptimestamp
1003
+ */
1004
+ RTCRtpContributingSource.prototype.rtpTimestamp;
1005
+
1006
+ /**
1007
+ * This is a relatively new field and browsers may not yet be compliant to the
1008
+ * spec.
1009
+ * @type {number|undefined}
1010
+ * @see https://w3c.github.io/webrtc-extensions/#dom-rtcrtpcontributingsource-capturetimestamp
1011
+ */
1012
+ RTCRtpContributingSource.prototype.captureTimestamp;
1013
+
1014
+ /**
1015
+ * This is a relatively new field and browsers may not yet be compliant to the
1016
+ * spec.
1017
+ * @type {number|undefined}
1018
+ * @see https://w3c.github.io/webrtc-extensions/#dom-rtcrtpcontributingsource-sendercapturetimeoffset
1019
+ */
1020
+ RTCRtpContributingSource.prototype.senderCaptureTimeOffset;
1021
+
1022
+ /**
1023
+ * @constructor
1024
+ * @see https://www.w3.org/TR/webrtc/#rtcrtpreceiver-interface
1025
+ */
1026
+ function RTCRtpReceiver() {}
1027
+
1028
+ /**
1029
+ * @const {!MediaStreamTrack}
1030
+ */
1031
+ RTCRtpReceiver.prototype.track;
1032
+
1033
+ /**
1034
+ * @const {?RTCDtlsTransport}
1035
+ */
1036
+ RTCRtpReceiver.prototype.transport;
1037
+
1038
+ /**
1039
+ * @return {!RTCRtpReceiveParameters}
1040
+ */
1041
+ RTCRtpReceiver.prototype.getParameters = function() {};
1042
+
1043
+ /**
1044
+ * @return {!Array<!RTCRtpContributingSource>}
1045
+ */
1046
+ RTCRtpReceiver.prototype.getContributingSources = function() {};
1047
+
1048
+ /**
1049
+ * @return {!Array<!RTCRtpContributingSource>}
1050
+ */
1051
+ RTCRtpReceiver.prototype.getSynchronizationSources = function() {};
1052
+
1053
+
1054
+ /**
1055
+ * @return {!Promise<!RTCStatsReport>}
1056
+ */
1057
+ RTCRtpReceiver.prototype.getStats = function() {};
1058
+
1059
+ /**
1060
+ * Chrome exclusive hint to control jitter buffer delay. Measured in seconds.
1061
+ * @see https://henbos.github.io/webrtc-extensions/#dfn-playoutdelayhint
1062
+ * @type {?number|undefined}
1063
+ */
1064
+ RTCRtpReceiver.prototype.playoutDelayHint;
1065
+
1066
+ /**
1067
+ * Get most optimistic view of the capabilities of the system for sending media
1068
+ * of the given kind.
1069
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpreceiver-getcapabilities
1070
+ * @param {!string} kind Media kind: 'video' or 'audio'.
1071
+ * @return {!RTCRtpCapabilities}
1072
+ */
1073
+ RTCRtpReceiver.getCapabilities = function(kind) {};
1074
+
1075
+ /**
1076
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtptransceiverinit
1077
+ * @record
1078
+ */
1079
+ function RTCRtpTransceiverInit() {}
1080
+
1081
+ /**
1082
+ * The direction of the `RTCRtpTransceiver`. Defaults to "sendrecv".
1083
+ * @type {?RTCRtpTransceiverDirection|undefined}
1084
+ */
1085
+ RTCRtpTransceiverInit.prototype.direction;
1086
+
1087
+ /**
1088
+ * The streams to add to the tranceiver's sender.
1089
+ * @type {?Array<!MediaStream>|undefined}
1090
+ */
1091
+ RTCRtpTransceiverInit.prototype.streams;
1092
+
1093
+ /**
1094
+ * @type {?Array<!RTCRtpEncodingParameters>|undefined}
1095
+ */
1096
+ RTCRtpTransceiverInit.prototype.sendEncodings;
1097
+
1098
+ /**
1099
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtpencodingparameters
1100
+ * @record
1101
+ */
1102
+ function RTCRtpEncodingParameters() {}
1103
+
1104
+ /**
1105
+ * @type {?number|undefined}
1106
+ */
1107
+ RTCRtpEncodingParameters.prototype.codecPayloadType;
1108
+
1109
+ /**
1110
+ * Possible values are "disabled" and "enabled".
1111
+ * @type {?string|undefined}
1112
+ */
1113
+ RTCRtpEncodingParameters.prototype.dtx;
1114
+
1115
+ /**
1116
+ * @type {?boolean|undefined}
1117
+ */
1118
+ RTCRtpEncodingParameters.prototype.active;
1119
+
1120
+ /**
1121
+ * Possible values are "very-low", "low" (default), "medium", and "high".
1122
+ * @type {?string|undefined}
1123
+ */
1124
+ RTCRtpEncodingParameters.prototype.priority;
1125
+
1126
+ /**
1127
+ * Possible values are "very-low", "low" (default), "medium", and "high".
1128
+ * @see https://w3c.github.io/webrtc-dscp-exp/
1129
+ * @type {?string|undefined}
1130
+ */
1131
+ RTCRtpEncodingParameters.prototype.networkPriority;
1132
+
1133
+ /**
1134
+ * @type {?number|undefined}
1135
+ */
1136
+ RTCRtpEncodingParameters.prototype.ptime;
1137
+
1138
+ /**
1139
+ * @type {?number|undefined}
1140
+ */
1141
+ RTCRtpEncodingParameters.prototype.maxBitrate;
1142
+
1143
+ /**
1144
+ * @type {?number|undefined}
1145
+ */
1146
+ RTCRtpEncodingParameters.prototype.maxFramerate;
1147
+
1148
+ /**
1149
+ * @type {?string|number}
1150
+ */
1151
+ RTCRtpEncodingParameters.prototype.rid;
1152
+
1153
+ /**
1154
+ * @type {?number|number}
1155
+ */
1156
+ RTCRtpEncodingParameters.prototype.scaleResolutionDownBy;
1157
+
1158
+ /**
1159
+ * @see https://w3c.github.io/webrtc-extensions/#dom-rtcrtpencodingparameters-adaptiveptime
1160
+ * @type {?boolean|undefined}
1161
+ */
1162
+ RTCRtpEncodingParameters.prototype.adaptivePtime;
1163
+
1164
+ /**
1165
+ * @interface
1166
+ * @see https://www.w3.org/TR/webrtc/#rtcrtptransceiver-interface
1167
+ */
1168
+ function RTCRtpTransceiver() {}
1169
+
1170
+ /**
1171
+ * @const {?string}
1172
+ */
1173
+ RTCRtpTransceiver.prototype.mid;
1174
+
1175
+ /**
1176
+ * @const {boolean}
1177
+ */
1178
+ RTCRtpTransceiver.prototype.stopped;
1179
+
1180
+ /**
1181
+ * @type {!RTCRtpTransceiverDirection}
1182
+ */
1183
+ RTCRtpTransceiver.prototype.direction;
1184
+
1185
+ /**
1186
+ * @const {?RTCRtpTransceiverDirection}
1187
+ */
1188
+ RTCRtpTransceiver.prototype.currentDirection;
1189
+
1190
+ /**
1191
+ * @param {!RTCRtpTransceiverDirection} direction
1192
+ */
1193
+ RTCRtpTransceiver.prototype.setDirection = function(direction) {};
1194
+
1195
+ /**
1196
+ */
1197
+ RTCRtpTransceiver.prototype.stop = function() {};
1198
+
1199
+ /**
1200
+ * @const {?RTCRtpSender}
1201
+ */
1202
+ RTCRtpTransceiver.prototype.sender;
1203
+
1204
+ /**
1205
+ * @const {?RTCRtpReceiver}
1206
+ */
1207
+ RTCRtpTransceiver.prototype.receiver;
1208
+
1209
+ /**
1210
+ * @param {!Array<!RTCRtpCodecCapability>} codecs
1211
+ */
1212
+ RTCRtpTransceiver.prototype.setCodecPreferences = function(codecs) {};
1213
+
1214
+ /**
1215
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-longrange
1216
+ * @record
1217
+ */
1218
+ function LongRange() {}
1219
+
1220
+ /**
1221
+ * @type {number|undefined}
1222
+ */
1223
+ LongRange.prototype.max;
1224
+
1225
+ /**
1226
+ * @type {number|undefined}
1227
+ */
1228
+ LongRange.prototype.min;
1229
+
1230
+ /**
1231
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-doublerange
1232
+ * @record
1233
+ */
1234
+ function DoubleRange() {}
1235
+
1236
+ /**
1237
+ * @type {number|undefined}
1238
+ */
1239
+ DoubleRange.prototype.max;
1240
+
1241
+ /**
1242
+ * @type {number|undefined}
1243
+ */
1244
+ DoubleRange.prototype.min;
1245
+
1246
+
1247
+ /**
1248
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constrainbooleanparameters
1249
+ * @record
1250
+ */
1251
+ function ConstrainBooleanParameters() {}
1252
+
1253
+ /**
1254
+ * @type {boolean|undefined}
1255
+ */
1256
+ ConstrainBooleanParameters.prototype.exact;
1257
+
1258
+ /**
1259
+ * @type {boolean|undefined}
1260
+ */
1261
+ ConstrainBooleanParameters.prototype.ideal;
1262
+
1263
+ /**
1264
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constraindomstringparameters
1265
+ * @record
1266
+ */
1267
+ function ConstrainDOMStringParameters() {}
1268
+
1269
+ /**
1270
+ * @type {string|Array<string>|undefined}
1271
+ */
1272
+ ConstrainDOMStringParameters.prototype.exact;
1273
+
1274
+ /**
1275
+ * @type {string|Array<string>|undefined}
1276
+ */
1277
+ ConstrainDOMStringParameters.prototype.ideal;
1278
+
1279
+ /**
1280
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constraindoublerange
1281
+ * @record
1282
+ * @extends {DoubleRange}
1283
+ */
1284
+ function ConstrainDoubleRange() {}
1285
+
1286
+ /**
1287
+ * @type {number|undefined}
1288
+ */
1289
+ ConstrainDoubleRange.prototype.exact;
1290
+
1291
+ /**
1292
+ * @type {number|undefined}
1293
+ */
1294
+ ConstrainDoubleRange.prototype.ideal;
1295
+
1296
+
1297
+ /**
1298
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constrainlongrange
1299
+ * @record
1300
+ * @extends {LongRange}
1301
+ */
1302
+ function ConstrainLongRange() {}
1303
+
1304
+ /**
1305
+ * @type {number|undefined}
1306
+ */
1307
+ ConstrainLongRange.prototype.exact;
1308
+
1309
+ /**
1310
+ * @type {number|undefined}
1311
+ */
1312
+ ConstrainLongRange.prototype.ideal;
1313
+
1314
+ /**
1315
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constrainboolean
1316
+ * @typedef {boolean|ConstrainBooleanParameters}
1317
+ */
1318
+ var ConstrainBoolean;
1319
+
1320
+ /**
1321
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constraindomString
1322
+ * @typedef {string|Array<string>|ConstrainDOMStringParameters}
1323
+ */
1324
+ var ConstrainDOMString;
1325
+
1326
+ /**
1327
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constraindouble
1328
+ * @typedef {number|ConstrainDoubleRange}
1329
+ */
1330
+ var ConstrainDouble;
1331
+
1332
+ /**
1333
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-constrainlong
1334
+ * @typedef {number|ConstrainLongRange}
1335
+ */
1336
+ var ConstrainLong;
1337
+
1338
+
1339
+ /**
1340
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#dom-mediatrackconstraintset
1341
+ * @see https://w3c.github.io/mediacapture-screen-share/#extensions-to-mediatrackconstraintset
1342
+ * @see https://www.w3.org/TR/screen-capture
1343
+ * @record
1344
+ */
1345
+ function MediaTrackConstraintSet() {}
1346
+
1347
+ /**
1348
+ * @type {ConstrainBoolean|undefined}
1349
+ */
1350
+ MediaTrackConstraintSet.prototype.autoGainControl;
1351
+
1352
+ /**
1353
+ * @type {ConstrainDouble|undefined}
1354
+ */
1355
+ MediaTrackConstraintSet.prototype.aspectRatio;
1356
+
1357
+ /**
1358
+ * @type {ConstrainLong|undefined}
1359
+ */
1360
+ MediaTrackConstraintSet.prototype.channelCount;
1361
+
1362
+ /**
1363
+ * @type {ConstrainDOMString|undefined}
1364
+ */
1365
+ MediaTrackConstraintSet.prototype.deviceId;
1366
+
1367
+ /**
1368
+ * @type {ConstrainBoolean|undefined}
1369
+ */
1370
+ MediaTrackConstraintSet.prototype.echoCancellation;
1371
+
1372
+ /**
1373
+ * @type {ConstrainDOMString|undefined}
1374
+ */
1375
+ MediaTrackConstraintSet.prototype.facingMode;
1376
+
1377
+ /**
1378
+ * @type {ConstrainDouble|undefined}
1379
+ */
1380
+ MediaTrackConstraintSet.prototype.frameRate;
1381
+
1382
+ /**
1383
+ * @type {ConstrainDOMString|undefined}
1384
+ */
1385
+ MediaTrackConstraintSet.prototype.groupId;
1386
+
1387
+ /**
1388
+ * @type {ConstrainLong|undefined}
1389
+ */
1390
+ MediaTrackConstraintSet.prototype.height;
1391
+
1392
+ /**
1393
+ * @type {ConstrainDouble|undefined}
1394
+ */
1395
+ MediaTrackConstraintSet.prototype.latency;
1396
+
1397
+ /**
1398
+ * @type {ConstrainBoolean|undefined}
1399
+ */
1400
+ MediaTrackConstraintSet.prototype.noiseSuppression;
1401
+
1402
+ /**
1403
+ * @type {ConstrainDOMString|undefined}
1404
+ */
1405
+ MediaTrackConstraintSet.prototype.resizeMode;
1406
+
1407
+ /**
1408
+ * @type {ConstrainLong|undefined}
1409
+ */
1410
+ MediaTrackConstraintSet.prototype.sampleRate;
1411
+
1412
+ /**
1413
+ * @type {ConstrainLong|undefined}
1414
+ */
1415
+ MediaTrackConstraintSet.prototype.sampleSize;
1416
+
1417
+ /**
1418
+ * @type {ConstrainDouble|undefined}
1419
+ */
1420
+ MediaTrackConstraintSet.prototype.volume;
1421
+
1422
+ /**
1423
+ * @type {ConstrainLong|undefined}
1424
+ */
1425
+ MediaTrackConstraintSet.prototype.width;
1426
+
1427
+ /** @type {ConstrainDOMString|undefined} */
1428
+ MediaTrackConstraintSet.prototype.displaySurface;
1429
+
1430
+ /** @type {ConstrainBoolean|undefined} */
1431
+ MediaTrackConstraintSet.prototype.logicalSurface;
1432
+
1433
+ /** @type {ConstrainDOMString|undefined} */
1434
+ MediaTrackConstraintSet.prototype.cursor;
1435
+
1436
+ /** @type {ConstrainBoolean|undefined} */
1437
+ MediaTrackConstraintSet.prototype.restrictOwnAudio;
1438
+
1439
+ /** @type {ConstrainBoolean|undefined} */
1440
+ MediaTrackConstraintSet.prototype.suppressLocalAudioPlayback;
1441
+
1442
+ /**
1443
+ * @record
1444
+ * @extends {MediaTrackConstraintSet}
1445
+ */
1446
+ function MediaTrackConstraints() {}
1447
+
1448
+ /**
1449
+ * @type {Array<!MediaTrackConstraintSet>|undefined}
1450
+ */
1451
+ MediaTrackConstraints.prototype.advanced;
1452
+
1453
+ /**
1454
+ * @see https://w3c.github.io/mediacapture-main/getusermedia.html#media-track-constraints
1455
+ * @record
1456
+ */
1457
+ function MediaStreamConstraints() {}
1458
+
1459
+ /**
1460
+ * @type {boolean|MediaTrackConstraints|undefined}
1461
+ */
1462
+ MediaStreamConstraints.prototype.audio;
1463
+
1464
+ /**
1465
+ * @type {boolean|MediaTrackConstraints|undefined}
1466
+ */
1467
+ MediaStreamConstraints.prototype.video;
1468
+
1469
+ /**
1470
+ * @see https://wicg.github.io/prefer-current-tab/
1471
+ * @type {boolean|undefined}
1472
+ */
1473
+ MediaStreamConstraints.prototype.preferCurrentTab;
1474
+
1475
+ /**
1476
+ * @constructor
1477
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-capturecontroller
1478
+ */
1479
+ function CaptureController() {}
1480
+
1481
+ /**
1482
+ * @param {string} focusBehavior
1483
+ * @return {undefined}
1484
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-capturestartfocusbehavior
1485
+ */
1486
+ CaptureController.prototype.setFocusBehavior = function(focusBehavior) {};
1487
+
1488
+ /**
1489
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions
1490
+ * @record
1491
+ */
1492
+ function DisplayMediaStreamOptions() {}
1493
+
1494
+ /**
1495
+ * @type {boolean|MediaTrackConstraints|undefined}
1496
+ */
1497
+ DisplayMediaStreamOptions.prototype.audio;
1498
+
1499
+ /**
1500
+ * @type {boolean|MediaTrackConstraints|undefined}
1501
+ */
1502
+ DisplayMediaStreamOptions.prototype.video;
1503
+
1504
+ /**
1505
+ * @type {!CaptureController|undefined}
1506
+ */
1507
+ DisplayMediaStreamOptions.prototype.controller;
1508
+
1509
+ /**
1510
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-selfcapturepreferenceenum
1511
+ * @type {string|undefined}
1512
+ */
1513
+ DisplayMediaStreamOptions.prototype.selfBrowserSurface;
1514
+
1515
+ /**
1516
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-surfaceswitchingpreferenceenum
1517
+ * @type {string|undefined}
1518
+ */
1519
+ DisplayMediaStreamOptions.prototype.surfaceSwitching;
1520
+
1521
+ /**
1522
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-systemaudiopreferenceenum
1523
+ * @type {string|undefined}
1524
+ */
1525
+ DisplayMediaStreamOptions.prototype.systemAudio;
1526
+
1527
+ /**
1528
+ * @see https://wicg.github.io/prefer-current-tab/
1529
+ * @type {boolean|undefined}
1530
+ */
1531
+ DisplayMediaStreamOptions.prototype.preferCurrentTab;
1532
+
1533
+ /**
1534
+ * @see {http://dev.w3.org/2011/webrtc/editor/getusermedia.html#
1535
+ * navigatorusermediaerror-and-navigatorusermediaerrorcallback}
1536
+ * @interface
1537
+ */
1538
+ function NavigatorUserMediaError() {}
1539
+
1540
+ /**
1541
+ * @const {number}
1542
+ * @deprecated Removed from the standard and some browsers.
1543
+ */
1544
+ NavigatorUserMediaError.prototype.PERMISSION_DENIED;
1545
+
1546
+ /**
1547
+ * @type {number}
1548
+ * @deprecated Removed from the standard and some browsers.
1549
+ * Read only.
1550
+ */
1551
+ NavigatorUserMediaError.prototype.code;
1552
+
1553
+ /**
1554
+ * @type {string}
1555
+ * Read only.
1556
+ */
1557
+ NavigatorUserMediaError.prototype.name;
1558
+
1559
+ /**
1560
+ * @type {?string}
1561
+ * Read only.
1562
+ */
1563
+ NavigatorUserMediaError.prototype.message;
1564
+
1565
+ /**
1566
+ * @type {?string}
1567
+ * Read only.
1568
+ */
1569
+ NavigatorUserMediaError.prototype.constraintName;
1570
+
1571
+ /**
1572
+ * @param {string} type
1573
+ * @param {!Object} eventInitDict
1574
+ * @constructor
1575
+ */
1576
+ function MediaStreamEvent(type, eventInitDict) {}
1577
+
1578
+ /**
1579
+ * @const {?MediaStream}
1580
+ */
1581
+ MediaStreamEvent.prototype.stream;
1582
+
1583
+ /**
1584
+ * @record
1585
+ * @see https://www.w3.org/TR/mediastream-recording/#dictdef-mediarecorderoptions
1586
+ */
1587
+ function MediaRecorderOptions() {}
1588
+
1589
+ /** @type {(string|undefined)} */
1590
+ MediaRecorderOptions.prototype.mimeType
1591
+
1592
+ /** @type {(number|undefined)} */
1593
+ MediaRecorderOptions.prototype.audioBitsPerSecond
1594
+
1595
+ /** @type {(number|undefined)} */
1596
+ MediaRecorderOptions.prototype.videoBitsPerSecond
1597
+
1598
+ /** @type {(number|undefined)} */
1599
+ MediaRecorderOptions.prototype.bitsPerSecond
1600
+
1601
+ /**
1602
+ * @see https://www.w3.org/TR/mediastream-recording/#mediarecorder-api
1603
+ * @param {!MediaStream} stream
1604
+ * @param {MediaRecorderOptions=} options
1605
+ * @implements {EventTarget}
1606
+ * @constructor
1607
+ */
1608
+ function MediaRecorder(stream, options) {}
1609
+
1610
+ /**
1611
+ * @override
1612
+ */
1613
+ MediaRecorder.prototype.addEventListener = function(
1614
+ type, listener, opt_useCapture) {};
1615
+
1616
+ /**
1617
+ * @override
1618
+ */
1619
+ MediaRecorder.prototype.removeEventListener = function(
1620
+ type, listener, opt_useCapture) {};
1621
+
1622
+ /**
1623
+ * @override
1624
+ * @return {boolean}
1625
+ */
1626
+ MediaRecorder.prototype.dispatchEvent = function(evt) {};
1627
+
1628
+ /**
1629
+ * @type {!MediaStream}
1630
+ */
1631
+ MediaRecorder.prototype.stream;
1632
+
1633
+ /**
1634
+ * @type {string}
1635
+ */
1636
+ MediaRecorder.prototype.mimeType;
1637
+
1638
+ /**
1639
+ * @type {string}
1640
+ */
1641
+ MediaRecorder.prototype.state;
1642
+
1643
+ /**
1644
+ * @type {(function(!Event)|undefined)}
1645
+ */
1646
+ MediaRecorder.prototype.onstart;
1647
+
1648
+ /**
1649
+ * @type {(function(!Event)|undefined)}
1650
+ */
1651
+ MediaRecorder.prototype.onstop;
1652
+
1653
+ /**
1654
+ * @type {(function(!Event)|undefined)}
1655
+ */
1656
+ MediaRecorder.prototype.ondataavailable;
1657
+
1658
+ /**
1659
+ * @type {(function(!Event)|undefined)}
1660
+ */
1661
+ MediaRecorder.prototype.onpause;
1662
+
1663
+ /**
1664
+ * @type {(function(!Event)|undefined)}
1665
+ */
1666
+ MediaRecorder.prototype.onresume;
1667
+
1668
+ /**
1669
+ * @type {(function(!Event)|undefined)}
1670
+ */
1671
+ MediaRecorder.prototype.onerror;
1672
+
1673
+ /**
1674
+ * @type {number}
1675
+ */
1676
+ MediaRecorder.prototype.videoBitsPerSecond;
1677
+
1678
+ /**
1679
+ * @type {number}
1680
+ */
1681
+ MediaRecorder.prototype.audioBitsPerSecond;
1682
+
1683
+ /**
1684
+ * @param {number=} timeslice
1685
+ */
1686
+ MediaRecorder.prototype.start = function(timeslice) {};
1687
+
1688
+ /** @return {void} */
1689
+ MediaRecorder.prototype.stop = function() {};
1690
+
1691
+ /** @return {void} */
1692
+ MediaRecorder.prototype.pause = function() {};
1693
+
1694
+ /** @return {void} */
1695
+ MediaRecorder.prototype.resume = function() {};
1696
+
1697
+ /** @return {void} */
1698
+ MediaRecorder.prototype.requestData = function() {};
1699
+
1700
+ /**
1701
+ * @param {string} type
1702
+ * @return {boolean}
1703
+ */
1704
+ MediaRecorder.isTypeSupported = function(type) {};
1705
+
1706
+ /**
1707
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorderErrorEvent
1708
+ * @interface
1709
+ */
1710
+ function MediaRecorderErrorEvent() {}
1711
+
1712
+ /**
1713
+ * @type {DOMException} type
1714
+ */
1715
+ MediaRecorderErrorEvent.prototype.error;
1716
+
1717
+ /**
1718
+ * @interface
1719
+ */
1720
+ function MediaRecorderEventMap() {}
1721
+
1722
+ /** @type {BlobEvent} */
1723
+ MediaRecorderEventMap.prototype.dataavailable;
1724
+
1725
+ /** @type {Event} */
1726
+ MediaRecorderEventMap.prototype.error;
1727
+
1728
+ /** @type {Event} */
1729
+ MediaRecorderEventMap.prototype.pause;
1730
+
1731
+ /** @type {Event} */
1732
+ MediaRecorderEventMap.prototype.resume;
1733
+
1734
+ /** @type {Event} */
1735
+ MediaRecorderEventMap.prototype.start;
1736
+
1737
+ /** @type {Event} */
1738
+ MediaRecorderEventMap.prototype.stop;
1739
+
1740
+ /**
1741
+ * @constructor
1742
+ * @extends {Event}
1743
+ * @param {string} type
1744
+ * @param {{data: !Blob, timecode: (number|undefined)}} eventInitDict
1745
+ * @see https://www.w3.org/TR/mediastream-recording/#blobevent-section
1746
+ */
1747
+ function BlobEvent(type, eventInitDict) {}
1748
+
1749
+ /** @type {!Blob} */
1750
+ BlobEvent.prototype.data;
1751
+
1752
+ /** @type {number} */
1753
+ BlobEvent.prototype.timecode;
1754
+
1755
+ /**
1756
+ * @interface
1757
+ * @see https://w3c.github.io/mediacapture-image/##photosettings-section
1758
+ */
1759
+ function PhotoSettings() {}
1760
+
1761
+ /**
1762
+ * @type {string}
1763
+ */
1764
+ PhotoSettings.prototype.fillLightMode;
1765
+
1766
+ /**
1767
+ * @type {number}
1768
+ */
1769
+ PhotoSettings.prototype.imageHeight;
1770
+
1771
+ /**
1772
+ * @type {number}
1773
+ */
1774
+ PhotoSettings.prototype.imageWidth;
1775
+
1776
+ /**
1777
+ * @type {boolean}
1778
+ */
1779
+ PhotoSettings.prototype.redEyeReduction;
1780
+
1781
+ /**
1782
+ * @interface
1783
+ * @see https://w3c.github.io/mediacapture-image/##photocapabilities-section
1784
+ */
1785
+ function PhotoCapabilities() {}
1786
+
1787
+ /**
1788
+ * @const {string}
1789
+ */
1790
+ PhotoCapabilities.prototype.redEyeReduction;
1791
+
1792
+ /**
1793
+ * @const {!MediaSettingsRange}
1794
+ */
1795
+ PhotoCapabilities.prototype.imageHeight;
1796
+
1797
+ /**
1798
+ * @const {!MediaSettingsRange}
1799
+ */
1800
+ PhotoCapabilities.prototype.imageWidth;
1801
+
1802
+ /**
1803
+ * @const {!Array<string>}
1804
+ */
1805
+ PhotoCapabilities.prototype.fillLightMode;
1806
+
1807
+ /**
1808
+ * @see https://w3c.github.io/mediacapture-image/
1809
+ * @param {!MediaStreamTrack} videoTrack
1810
+ * @constructor
1811
+ */
1812
+ function ImageCapture(videoTrack) {}
1813
+
1814
+ /**
1815
+ * @param {!PhotoSettings=} photoSettings
1816
+ * @return {!Promise<!Blob>}
1817
+ */
1818
+ ImageCapture.prototype.takePhoto = function(photoSettings) {};
1819
+
1820
+ /**
1821
+ * @return {!Promise<!PhotoCapabilities>}
1822
+ */
1823
+ ImageCapture.prototype.getPhotoCapabilities = function() {};
1824
+
1825
+ /**
1826
+ * @return {!Promise<!ImageBitmap>}
1827
+ */
1828
+ ImageCapture.prototype.grabFrame = function() {};
1829
+
1830
+ /**
1831
+ * @const {!MediaStreamTrack}
1832
+ */
1833
+ ImageCapture.prototype.track;
1834
+
1835
+ /**
1836
+ * @see https://www.w3.org/TR/webrtc/#rtctrackevent
1837
+ * @param {string} type
1838
+ * @param {!Object} eventInitDict
1839
+ * @constructor
1840
+ */
1841
+ function RTCTrackEvent(type, eventInitDict) {}
1842
+
1843
+ /**
1844
+ * @const {!RTCRtpReceiver}
1845
+ */
1846
+ RTCTrackEvent.prototype.receiver;
1847
+
1848
+ /**
1849
+ * @const {!MediaStreamTrack}
1850
+ */
1851
+ RTCTrackEvent.prototype.track;
1852
+
1853
+ /**
1854
+ * @const {!Array<!MediaStream>}
1855
+ */
1856
+ RTCTrackEvent.prototype.streams;
1857
+
1858
+ /**
1859
+ * @const {!RTCRtpTransceiver}
1860
+ */
1861
+ RTCTrackEvent.prototype.transceiver;
1862
+
1863
+ /**
1864
+ * @typedef {string}
1865
+ * @see https://www.w3.org/TR/mediacapture-streams/#idl-def-MediaDeviceKind
1866
+ * In WebIDL this is an enum with values 'audioinput', 'audiooutput', and
1867
+ * 'videoinput', but there is no mechanism in Closure for describing a
1868
+ * specialization of the string type.
1869
+ */
1870
+ var MediaDeviceKind;
1871
+
1872
+ /**
1873
+ * Possible values are "sendrecv", "sendonly", "recvonly", and "inactive".
1874
+ * @typedef {string}
1875
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcrtptransceiverdirection
1876
+ */
1877
+ var RTCRtpTransceiverDirection;
1878
+
1879
+ /**
1880
+ * @interface
1881
+ */
1882
+ function MediaDeviceInfo() {}
1883
+
1884
+ /** @const {string} */
1885
+ MediaDeviceInfo.prototype.deviceId;
1886
+
1887
+ /** @const {!MediaDeviceKind} */
1888
+ MediaDeviceInfo.prototype.kind;
1889
+
1890
+ /** @const {string} */
1891
+ MediaDeviceInfo.prototype.label;
1892
+
1893
+ /** @const {string} */
1894
+ MediaDeviceInfo.prototype.groupId;
1895
+
1896
+ /**
1897
+ * @interface
1898
+ * @extends {MediaDeviceInfo}
1899
+ * @see https://www.w3.org/TR/mediacapture-streams/#input-specific-device-info
1900
+ */
1901
+ function InputDeviceInfo() {}
1902
+
1903
+ /** @return {!MediaTrackCapabilities} */
1904
+ InputDeviceInfo.prototype.getCapabilities = function() {};
1905
+
1906
+ /**
1907
+ * @interface
1908
+ * @extends {EventTarget}
1909
+ * @see https://www.w3.org/TR/mediacapture-streams/#mediadevices
1910
+ */
1911
+ function MediaDevices() {}
1912
+
1913
+ /** @type {?function (!Event)} */
1914
+ MediaDevices.prototype.ondevicechange;
1915
+
1916
+ /**
1917
+ * @return {!Promise<!Array<!MediaDeviceInfo>>}
1918
+ */
1919
+ MediaDevices.prototype.enumerateDevices = function() {};
1920
+
1921
+ /**
1922
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
1923
+ * @param {!MediaStreamConstraints} constraints
1924
+ * @return {!Promise<!MediaStream>}
1925
+ */
1926
+ MediaDevices.prototype.getUserMedia = function(constraints) {};
1927
+
1928
+ /**
1929
+ * @see https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia
1930
+ * @param {!DisplayMediaStreamOptions=} options
1931
+ * @return {!Promise<!MediaStream>}
1932
+ */
1933
+ MediaDevices.prototype.getDisplayMedia = function(options) {};
1934
+
1935
+ /**
1936
+ * @see https://w3c.github.io/mediacapture-main/#dom-mediadevices-getsupportedconstraints
1937
+ * @return {!MediaTrackSupportedConstraints}
1938
+ */
1939
+ MediaDevices.prototype.getSupportedConstraints = function() {};
1940
+
1941
+ /** @const {!MediaDevices} */
1942
+ Navigator.prototype.mediaDevices;
1943
+
1944
+ /**
1945
+ * @typedef {string}
1946
+ * @see https://www.w3.org/TR/webrtc/#rtcsdptype
1947
+ * In WebIDL this is an enum with values 'offer', 'pranswer', and 'answer',
1948
+ * but there is no mechanism in Closure for describing a specialization of
1949
+ * the string type.
1950
+ */
1951
+ var RTCSdpType;
1952
+
1953
+ /**
1954
+ * @record
1955
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcsessiondescriptioninit
1956
+ */
1957
+ function RTCSessionDescriptionInit() {}
1958
+
1959
+ /**
1960
+ * @type {RTCSdpType|undefined}
1961
+ */
1962
+ RTCSessionDescriptionInit.prototype.type;
1963
+
1964
+ /**
1965
+ * @type {string|undefined}
1966
+ */
1967
+ RTCSessionDescriptionInit.prototype.sdp;
1968
+
1969
+ /**
1970
+ * @param {!RTCSessionDescriptionInit=} descriptionInitDict
1971
+ * @constructor
1972
+ * @see https://www.w3.org/TR/webrtc/#rtcsessiondescription-class
1973
+ */
1974
+ function RTCSessionDescription(descriptionInitDict) {}
1975
+
1976
+ /**
1977
+ * @type {RTCSdpType}
1978
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcsessiondescription-type
1979
+ */
1980
+ RTCSessionDescription.prototype.type;
1981
+
1982
+ /**
1983
+ * @type {string}
1984
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcsessiondescription-sdp
1985
+ */
1986
+ RTCSessionDescription.prototype.sdp;
1987
+
1988
+ /**
1989
+ * TODO(bemasc): Remove this definition once it is removed from the browser.
1990
+ * @param {string} label The label index (audio/video/data -> 0,1,2)
1991
+ * @param {string} sdp The ICE candidate in SDP text form
1992
+ * @constructor
1993
+ */
1994
+ function IceCandidate(label, sdp) {}
1995
+
1996
+ /**
1997
+ * @return {string}
1998
+ */
1999
+ IceCandidate.prototype.toSdp = function() {};
2000
+
2001
+ /**
2002
+ * @type {?string}
2003
+ */
2004
+ IceCandidate.prototype.label;
2005
+
2006
+ /** @record */
2007
+ function RTCIceCandidateInit() {};
2008
+
2009
+ /** @type {?string|undefined} */
2010
+ RTCIceCandidateInit.prototype.candidate;
2011
+
2012
+ /** @type {(?string|undefined)} */
2013
+ RTCIceCandidateInit.prototype.sdpMid;
2014
+
2015
+ /** @type {(?number|undefined)} */
2016
+ RTCIceCandidateInit.prototype.sdpMLineIndex;
2017
+
2018
+ /** @type {(string|undefined)} */
2019
+ RTCIceCandidateInit.prototype.usernameFragment;
2020
+
2021
+ /**
2022
+ * @param {!RTCIceCandidateInit=} candidateInitDict The RTCIceCandidateInit
2023
+ * dictionary.
2024
+ * @constructor
2025
+ * @see https://www.w3.org/TR/webrtc/#rtcicecandidate-interface
2026
+ */
2027
+ function RTCIceCandidate(candidateInitDict) {}
2028
+
2029
+ /** @type {string} */
2030
+ RTCIceCandidate.prototype.candidate;
2031
+
2032
+ /** @type {?string} */
2033
+ RTCIceCandidate.prototype.sdpMid;
2034
+
2035
+ /** @type {?number} */
2036
+ RTCIceCandidate.prototype.sdpMLineIndex;
2037
+
2038
+ /** @type {?string} */
2039
+ RTCIceCandidate.prototype.foundation;
2040
+
2041
+ /** @type {?string} */
2042
+ RTCIceCandidate.prototype.component;
2043
+
2044
+ /** @type {?number} */
2045
+ RTCIceCandidate.prototype.priority;
2046
+
2047
+ /** @type {?string} */
2048
+ RTCIceCandidate.prototype.address;
2049
+
2050
+ /** @type {?string} */
2051
+ RTCIceCandidate.prototype.protocol;
2052
+
2053
+ /** @type {?number} */
2054
+ RTCIceCandidate.prototype.port;
2055
+
2056
+ /** @type {?string} */
2057
+ RTCIceCandidate.prototype.type;
2058
+
2059
+ /** @type {?string} */
2060
+ RTCIceCandidate.prototype.tcpType;
2061
+
2062
+ /** @type {?string} */
2063
+ RTCIceCandidate.prototype.relatedAddress;
2064
+
2065
+ /** @type {?number} */
2066
+ RTCIceCandidate.prototype.relatedPort;
2067
+
2068
+ /** @type {?string} */
2069
+ RTCIceCandidate.prototype.usernameFragment;
2070
+
2071
+ /**
2072
+ * @typedef {{urls: string}|{urls: !Array<string>}}
2073
+ * @private
2074
+ * @see https://www.w3.org/TR/webrtc/#rtciceserver-dictionary
2075
+ * This dictionary type also has an optional key {credential: ?string}.
2076
+ */
2077
+ var RTCIceServerRecord_;
2078
+
2079
+ /**
2080
+ * @interface
2081
+ * @private
2082
+ */
2083
+ function RTCIceServerInterface_() {}
2084
+
2085
+ /**
2086
+ * @type {string|!Array<string>}
2087
+ */
2088
+ RTCIceServerInterface_.prototype.urls;
2089
+
2090
+ /**
2091
+ * @type {?string}
2092
+ */
2093
+ RTCIceServerInterface_.prototype.username;
2094
+
2095
+ /**
2096
+ * @type {?string}
2097
+ */
2098
+ RTCIceServerInterface_.prototype.credential;
2099
+
2100
+ /**
2101
+ * This type, and several below it, are constructed as unions between records
2102
+ *
2103
+ * @typedef {RTCIceServerRecord_|RTCIceServerInterface_}
2104
+ * @private
2105
+ */
2106
+ var RTCIceServer;
2107
+
2108
+ /**
2109
+ * @record
2110
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcconfiguration
2111
+ */
2112
+ function RTCConfiguration() {}
2113
+
2114
+ /**
2115
+ * @type {!Array<!RTCIceServer>}
2116
+ */
2117
+ RTCConfiguration.prototype.iceServers;
2118
+
2119
+ /**
2120
+ * Allows specifying the ICE transport policy. Valid values are "all" and
2121
+ * "relay", with "all" being the default.
2122
+ * @type {string|undefined}
2123
+ */
2124
+ RTCConfiguration.prototype.iceTransportPolicy;
2125
+
2126
+ /**
2127
+ * Indicates which media-bundling policy to use when gathering ICE candidates.
2128
+ * Valid values are "balanced", "max-compat" and "max-bundle", with "balanced"
2129
+ * being the default.
2130
+ * @type {string|undefined}
2131
+ */
2132
+ RTCConfiguration.prototype.bundlePolicy;
2133
+
2134
+ /**
2135
+ * Indicates which rtcp-mux policy to use when gathering ICE candidates. The
2136
+ * only valid value is "require".
2137
+ * @type {string|undefined}
2138
+ */
2139
+ RTCConfiguration.prototype.rtcpMuxPolicy;
2140
+
2141
+ /** @type {!Array<!RTCCertificate>|undefined} */
2142
+ RTCConfiguration.prototype.certificates;
2143
+
2144
+ /** @type {number|undefined} */
2145
+ RTCConfiguration.prototype.iceCandidatePoolSize;
2146
+
2147
+ /**
2148
+ * Allows specifying the SDP semantics. Valid values are "plan-b" and
2149
+ * "unified-plan".
2150
+ *
2151
+ * @see {@link https://webrtc.org/web-apis/chrome/unified-plan/}
2152
+ * @type {string|undefined}
2153
+ */
2154
+ RTCConfiguration.prototype.sdpSemantics;
2155
+
2156
+ /**
2157
+ * @typedef {function(!RTCSessionDescription)}
2158
+ */
2159
+ var RTCSessionDescriptionCallback;
2160
+
2161
+ /**
2162
+ * @typedef {function(string)}
2163
+ */
2164
+ var RTCPeerConnectionErrorCallback;
2165
+
2166
+ /**
2167
+ * @typedef {function()}
2168
+ */
2169
+ var RTCVoidCallback;
2170
+
2171
+ /**
2172
+ * @typedef {string}
2173
+ */
2174
+ var RTCSignalingState;
2175
+
2176
+ /**
2177
+ * @typedef {string}
2178
+ */
2179
+ var RTCIceConnectionState;
2180
+
2181
+ /**
2182
+ * @typedef {string}
2183
+ */
2184
+ var RTCIceGatheringState;
2185
+
2186
+ /**
2187
+ * @see https://www.w3.org/TR/webrtc/#rtcpeerconnectionstate-enum
2188
+ * @typedef {string}
2189
+ */
2190
+ var RTCPeerConnectionState;
2191
+
2192
+ /**
2193
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcpeerconnectioniceevent
2194
+ * @param {string} type
2195
+ * @param {!Object} eventInitDict
2196
+ * @extends {Event}
2197
+ * @constructor
2198
+ */
2199
+ function RTCPeerConnectionIceEvent(type, eventInitDict) {}
2200
+
2201
+ /**
2202
+ * @const {RTCIceCandidate}
2203
+ */
2204
+ RTCPeerConnectionIceEvent.prototype.candidate;
2205
+
2206
+ /**
2207
+ * @const {?string}
2208
+ */
2209
+ RTCPeerConnectionIceEvent.prototype.url;
2210
+
2211
+ /**
2212
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcpeerconnectioniceerrorevent
2213
+ * @param {string} type
2214
+ * @param {!Object} eventInitDict
2215
+ * @extends {Event}
2216
+ * @constructor
2217
+ */
2218
+ function RTCPeerConnectionIceErrorEvent(type, eventInitDict) {}
2219
+
2220
+ /** @const {?string} */
2221
+ RTCPeerConnectionIceErrorEvent.prototype.address;
2222
+
2223
+ /** @const {?number} */
2224
+ RTCPeerConnectionIceErrorEvent.prototype.port;
2225
+
2226
+ /** @const {string} */
2227
+ RTCPeerConnectionIceErrorEvent.prototype.url;
2228
+
2229
+ /** @const {number} */
2230
+ RTCPeerConnectionIceErrorEvent.prototype.errorCode;
2231
+
2232
+ /** @const {string} */
2233
+ RTCPeerConnectionIceErrorEvent.prototype.errorText;
2234
+
2235
+
2236
+ /**
2237
+ * @constructor
2238
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcicecandidatepair
2239
+ */
2240
+ function RTCIceCandidatePair() {}
2241
+
2242
+ /** @const {!RTCIceCandidate|undefined} */
2243
+ RTCIceCandidatePair.prototype.local;
2244
+
2245
+ /** @const {!RTCIceCandidate|undefined} */
2246
+ RTCIceCandidatePair.prototype.remote;
2247
+
2248
+
2249
+ /**
2250
+ * @constructor
2251
+ * @see https://www.w3.org/TR/webrtc/#dom-rtciceparameters
2252
+ */
2253
+ function RTCIceParameters() {}
2254
+
2255
+ /** @const {string|undefined} */
2256
+ RTCIceParameters.prototype.usernameFragment;
2257
+
2258
+ /** @const {string|undefined} */
2259
+ RTCIceParameters.prototype.password;
2260
+
2261
+
2262
+ /**
2263
+ * @interface
2264
+ * @extends {EventTarget}
2265
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcicetransport
2266
+ */
2267
+ function RTCIceTransport() {}
2268
+
2269
+ /** @const {string} */
2270
+ RTCIceTransport.prototype.role;
2271
+
2272
+ /** @const {string} */
2273
+ RTCIceTransport.prototype.component;
2274
+
2275
+ /** @const {string} */
2276
+ RTCIceTransport.prototype.state;
2277
+
2278
+ /** @const {string} */
2279
+ RTCIceTransport.prototype.gatheringState;
2280
+
2281
+ /** @return {!Array<!RTCIceCandidate>} */
2282
+ RTCIceTransport.prototype.getLocalCandidates = function() {};
2283
+
2284
+ /** @return {!Array<!RTCIceCandidate>} */
2285
+ RTCIceTransport.prototype.getRemoteCandidates = function() {};
2286
+
2287
+ /** @return {?RTCIceCandidatePair} */
2288
+ RTCIceTransport.prototype.getSelectedCandidatePair = function() {};
2289
+
2290
+ /** @return {?RTCIceParameters} */
2291
+ RTCIceTransport.prototype.getLocalParameters = function() {};
2292
+
2293
+ /** @return {?RTCIceParameters} */
2294
+ RTCIceTransport.prototype.getRemoteParameters = function() {};
2295
+
2296
+ /** @type {?function(!Event)} */
2297
+ RTCIceTransport.prototype.onstatechange;
2298
+
2299
+ /** @type {?function(!Event)} */
2300
+ RTCIceTransport.prototype.ongatheringstatechange;
2301
+
2302
+ /** @type {?function(!Event)} */
2303
+ RTCIceTransport.prototype.onselectedcandidatepairchange;
2304
+
2305
+
2306
+ /**
2307
+ * @interface
2308
+ * @extends {EventTarget}
2309
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcdtlstransport
2310
+ */
2311
+ function RTCDtlsTransport() {}
2312
+
2313
+ /** @const {!RTCIceTransport} */
2314
+ RTCDtlsTransport.prototype.iceTransport;
2315
+
2316
+ /** @const {string} */
2317
+ RTCDtlsTransport.prototype.state;
2318
+
2319
+ /** @return {!Array<!ArrayBuffer>} */
2320
+ RTCDtlsTransport.prototype.getRemoteCertificates = function() {};
2321
+
2322
+ /** @type {?function(!Event)} */
2323
+ RTCDtlsTransport.prototype.onstatechange;
2324
+
2325
+ /** @type {?function(!RTCErrorEvent)} */
2326
+ RTCDtlsTransport.prototype.onerror;
2327
+
2328
+
2329
+ /**
2330
+ * @interface
2331
+ * @extends {EventTarget}
2332
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcsctptransport
2333
+ */
2334
+ function RTCSctpTransport() {}
2335
+
2336
+ /** @const {!RTCDtlsTransport} */
2337
+ RTCSctpTransport.prototype.transport;
2338
+
2339
+ /** @const {string} */
2340
+ RTCSctpTransport.prototype.state;
2341
+
2342
+ /** @const {number} */
2343
+ RTCSctpTransport.prototype.maxMessageSize;
2344
+
2345
+ /** @const {?number} */
2346
+ RTCSctpTransport.prototype.maxChannels;
2347
+
2348
+ /** @type {?function(!Event)} */
2349
+ RTCSctpTransport.prototype.onstatechange;
2350
+
2351
+
2352
+
2353
+ // Note: The specification of RTCStats types is still under development.
2354
+ // Declarations here will be updated and removed to follow the development of
2355
+ // modern browsers, breaking compatibility with older versions as they become
2356
+ // obsolete.
2357
+ /**
2358
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcstats
2359
+ * @interface
2360
+ */
2361
+ function RTCStats() {}
2362
+
2363
+ /**
2364
+ * @const {?Date|number}
2365
+ */
2366
+ RTCStats.prototype.timestamp;
2367
+
2368
+ /**
2369
+ * https://www.w3.org/TR/webrtc-stats/#rtcstatstype-str*
2370
+ * @const {string}
2371
+ */
2372
+ RTCStats.prototype.type;
2373
+
2374
+ /**
2375
+ * @const {string}
2376
+ */
2377
+ RTCStats.prototype.id;
2378
+
2379
+ /**
2380
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcrtpstreamstats
2381
+ * @interface
2382
+ * @extends {RTCStats}
2383
+ */
2384
+ function RTCRtpStreamStats() {}
2385
+
2386
+ /** @const {number} */
2387
+ RTCRtpStreamStats.prototype.ssrc;
2388
+
2389
+ /** @const {string} */
2390
+ RTCRtpStreamStats.prototype.kind;
2391
+
2392
+ /**
2393
+ * Safari 13 still uses .mediaType instead of .kind.
2394
+ * @const {string}
2395
+ */
2396
+ RTCRtpStreamStats.prototype.mediaType;
2397
+
2398
+ /** @const {string} */
2399
+ RTCRtpStreamStats.prototype.transportId;
2400
+
2401
+ /** @const {string} */
2402
+ RTCRtpStreamStats.prototype.codecId;
2403
+
2404
+
2405
+ /**
2406
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtccodecstats
2407
+ * @interface
2408
+ * @extends {RTCStats}
2409
+ */
2410
+ function RTCCodecStats() {}
2411
+
2412
+ /** @const {number} */
2413
+ RTCCodecStats.prototype.payloadType;
2414
+
2415
+ /** @const {string} */
2416
+ RTCCodecStats.prototype.transportId;
2417
+
2418
+ /** @const {string} */
2419
+ RTCCodecStats.prototype.mimeType;
2420
+
2421
+ /** @const {number|undefined} */
2422
+ RTCCodecStats.prototype.clockRate;
2423
+
2424
+ /** @const {number|undefined} */
2425
+ RTCCodecStats.prototype.channels;
2426
+
2427
+ /** @const {string|undefined} */
2428
+ RTCCodecStats.prototype.sdpFmtpLine;
2429
+
2430
+
2431
+ /**
2432
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats
2433
+ * @interface
2434
+ * @extends {RTCRtpStreamStats}
2435
+ */
2436
+ function RTCReceivedRtpStreamStats() {}
2437
+
2438
+ /** @const {number} */
2439
+ RTCReceivedRtpStreamStats.prototype.packetsReceived;
2440
+
2441
+ /** @const {number} */
2442
+ RTCReceivedRtpStreamStats.prototype.packetsLost;
2443
+
2444
+ /** @const {number} */
2445
+ RTCReceivedRtpStreamStats.prototype.jitter;
2446
+
2447
+ /** @const {number} */
2448
+ RTCReceivedRtpStreamStats.prototype.framesDropped;
2449
+
2450
+
2451
+ /**
2452
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats
2453
+ * @interface
2454
+ * @extends {RTCReceivedRtpStreamStats}
2455
+ */
2456
+ function RTCInboundRtpStreamStats() {}
2457
+
2458
+ /** @const {string} */
2459
+ RTCInboundRtpStreamStats.prototype.trackId;
2460
+
2461
+ /** @const {string} */
2462
+ RTCInboundRtpStreamStats.prototype.trackIdentifier;
2463
+
2464
+ /** @const {string} */
2465
+ RTCInboundRtpStreamStats.prototype.kind;
2466
+
2467
+ /** @const {string} */
2468
+ RTCInboundRtpStreamStats.prototype.mid;
2469
+
2470
+ /** @const {string} */
2471
+ RTCInboundRtpStreamStats.prototype.remoteId;
2472
+
2473
+ /** @const {number} */
2474
+ RTCInboundRtpStreamStats.prototype.framesDecoded;
2475
+
2476
+ /** @const {number} */
2477
+ RTCInboundRtpStreamStats.prototype.keyFramesDecoded;
2478
+
2479
+ /** @const {number} */
2480
+ RTCInboundRtpStreamStats.prototype.frameWidth;
2481
+
2482
+ /** @const {number} */
2483
+ RTCInboundRtpStreamStats.prototype.frameHeight;
2484
+
2485
+ /** @const {number} */
2486
+ RTCInboundRtpStreamStats.prototype.framesPerSecond;
2487
+
2488
+ /** @const {number} */
2489
+ RTCInboundRtpStreamStats.prototype.qpSum;
2490
+
2491
+ /** @const {number} */
2492
+ RTCInboundRtpStreamStats.prototype.totalDecodeTime;
2493
+
2494
+ /** @const {number} */
2495
+ RTCInboundRtpStreamStats.prototype.totalInterFrameDelay;
2496
+
2497
+ /** @const {number} */
2498
+ RTCInboundRtpStreamStats.prototype.totalSquaredInterFrameDelay;
2499
+
2500
+ /** @const {?Date|number} */
2501
+ RTCInboundRtpStreamStats.prototype.lastPacketReceivedTimestamp;
2502
+
2503
+ /** @const {number} */
2504
+ RTCInboundRtpStreamStats.prototype.headerBytesReceived;
2505
+
2506
+ /** @const {number} */
2507
+ RTCInboundRtpStreamStats.prototype.packetsDiscarded;
2508
+
2509
+ /**
2510
+ * Not available in Safari 13, Firefox 69 (Chrome 81+ only).
2511
+ * @const {number|undefined}
2512
+ */
2513
+ RTCInboundRtpStreamStats.prototype.fecPacketsReceived;
2514
+
2515
+ /**
2516
+ * Not available in Safari 13, Firefox 69 (Chrome 81+ only).
2517
+ * @const {number|undefined}
2518
+ */
2519
+ RTCInboundRtpStreamStats.prototype.fecPacketsDiscarded;
2520
+
2521
+ /** @const {number} */
2522
+ RTCInboundRtpStreamStats.prototype.bytesReceived;
2523
+
2524
+ /** @const {number} */
2525
+ RTCInboundRtpStreamStats.prototype.nackCount;
2526
+
2527
+ /** @const {number} */
2528
+ RTCInboundRtpStreamStats.prototype.firCount;
2529
+
2530
+ /** @const {number} */
2531
+ RTCInboundRtpStreamStats.prototype.pliCount;
2532
+
2533
+ /** @const {number|undefined} */
2534
+ RTCInboundRtpStreamStats.prototype.totalProcessingDelay;
2535
+
2536
+ /** @const {?Date|number} */
2537
+ RTCInboundRtpStreamStats.prototype.estimatedPlayoutTimestamp;
2538
+
2539
+ /**
2540
+ * Firefox specific value.
2541
+ * @const {number|undefined}
2542
+ */
2543
+ RTCInboundRtpStreamStats.prototype.bitrateMean;
2544
+
2545
+ /** @const {number|undefined} */
2546
+ RTCInboundRtpStreamStats.prototype.jitterBufferDelay;
2547
+
2548
+ /**
2549
+ * Experimental chrome stats under this origin trial:
2550
+ * https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/hE2B1iItPDk
2551
+ * @const {number|undefined}
2552
+ */
2553
+ RTCInboundRtpStreamStats.prototype.jitterBufferFlushes;
2554
+
2555
+ /** @const {number|undefined} */
2556
+ RTCInboundRtpStreamStats.prototype.jitterBufferTargetDelay;
2557
+
2558
+ /** @const {number|undefined} */
2559
+ RTCInboundRtpStreamStats.prototype.jitterBufferEmittedCount;
2560
+
2561
+ /** @const {number|undefined} */
2562
+ RTCInboundRtpStreamStats.prototype.jitterBufferMinimumDelay;
2563
+
2564
+ /** @const {number|undefined} */
2565
+ RTCInboundRtpStreamStats.prototype.totalSamplesReceived;
2566
+
2567
+ /** @const {number|undefined} */
2568
+ RTCInboundRtpStreamStats.prototype.concealedSamples;
2569
+
2570
+ /**
2571
+ * Not available in Safari 13.
2572
+ * @const {number|undefined}
2573
+ */
2574
+ RTCInboundRtpStreamStats.prototype.silentConcealedSamples;
2575
+
2576
+ /**
2577
+ * Not available in Safari 13.
2578
+ * @const {number|undefined}
2579
+ */
2580
+ RTCInboundRtpStreamStats.prototype.concealmentEvents;
2581
+
2582
+ /**
2583
+ * Not available in Safari 13.
2584
+ * @const {number|undefined}
2585
+ */
2586
+ RTCInboundRtpStreamStats.prototype.insertedSamplesForDeceleration
2587
+
2588
+ /**
2589
+ * Not available in Safari 13.
2590
+ * @const {number|undefined}
2591
+ */
2592
+ RTCInboundRtpStreamStats.prototype.removedSamplesForAcceleration;
2593
+
2594
+ /**
2595
+ * Experimental chrome stats under this origin trial:
2596
+ * https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/hE2B1iItPDk
2597
+ * @const {number|undefined}
2598
+ */
2599
+ RTCInboundRtpStreamStats.prototype.delayedPacketOutageSamples;
2600
+
2601
+ /**
2602
+ * Safari still reprorting it as inbound-rtp, it supposed to be in remote part.
2603
+ * @const {number|undefined}
2604
+ */
2605
+ RTCInboundRtpStreamStats.prototype.fractionLost;
2606
+
2607
+ /** @const {number} */
2608
+ RTCInboundRtpStreamStats.prototype.audioLevel;
2609
+
2610
+ /** @const {number|undefined} */
2611
+ RTCInboundRtpStreamStats.prototype.totalAudioEnergy;
2612
+
2613
+ /** @const {number|undefined} */
2614
+ RTCInboundRtpStreamStats.prototype.totalSamplesDuration;
2615
+
2616
+ /** @const {number|undefined} */
2617
+ RTCInboundRtpStreamStats.prototype.framesReceived;
2618
+
2619
+ /** @const {number|undefined} */
2620
+ RTCInboundRtpStreamStats.prototype.freezeCount;
2621
+
2622
+ /** @const {number|undefined} */
2623
+ RTCInboundRtpStreamStats.prototype.totalFreezesDuration;
2624
+
2625
+ /** @const {string|undefined} */
2626
+ RTCInboundRtpStreamStats.prototype.decoderImplementation;
2627
+
2628
+ /** @const {number|undefined} */
2629
+ RTCInboundRtpStreamStats.prototype.framesAssembledFromMultiplePackets;
2630
+
2631
+ /** @const {number|undefined} */
2632
+ RTCInboundRtpStreamStats.prototype.totalAssemblyTime;
2633
+
2634
+ /** @const {number|undefined} */
2635
+ RTCInboundRtpStreamStats.prototype.totalCorruptionProbability;
2636
+
2637
+ /** @const {number|undefined} */
2638
+ RTCInboundRtpStreamStats.prototype.totalSquaredCorruptionProbability;
2639
+
2640
+ /** @const {number|undefined} */
2641
+ RTCInboundRtpStreamStats.prototype.corruptionMeasurements;
2642
+
2643
+ /**
2644
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats
2645
+ * @interface
2646
+ * @extends {RTCReceivedRtpStreamStats}
2647
+ */
2648
+ function RTCRemoteInboundRtpStreamStats() {}
2649
+
2650
+ /** @const {string} */
2651
+ RTCRemoteInboundRtpStreamStats.prototype.localId;
2652
+
2653
+ /** @const {number} */
2654
+ RTCRemoteInboundRtpStreamStats.prototype.roundTripTime;
2655
+
2656
+ /** @const {number|undefined} */
2657
+ RTCRemoteInboundRtpStreamStats.prototype.totalRoundTripTime;
2658
+
2659
+ /** @const {number|undefined} */
2660
+ RTCRemoteInboundRtpStreamStats.prototype.roundTripMeasurements;
2661
+
2662
+ /** @const {number} */
2663
+ RTCRemoteInboundRtpStreamStats.prototype.fractionLost;
2664
+
2665
+
2666
+ /**
2667
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcsentrtpstreamstats
2668
+ * @interface
2669
+ * @extends {RTCRtpStreamStats}
2670
+ */
2671
+ function RTCSentRtpStreamStats() {}
2672
+
2673
+ /** @const {number} */
2674
+ RTCSentRtpStreamStats.prototype.packetsSent;
2675
+
2676
+ /** @const {number} */
2677
+ RTCSentRtpStreamStats.prototype.packetsDiscardedOnSend;
2678
+
2679
+ /** @const {number} */
2680
+ RTCSentRtpStreamStats.prototype.bytesSent;
2681
+
2682
+
2683
+ /**
2684
+ /**
2685
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcoutboundrtpstreamstats
2686
+ * @interface
2687
+ * @extends {RTCSentRtpStreamStats}
2688
+ */
2689
+ function RTCOutboundRtpStreamStats() {}
2690
+
2691
+ /** @const {string} */
2692
+ RTCOutboundRtpStreamStats.prototype.trackId;
2693
+
2694
+ /** @const {string|undefined} */
2695
+ RTCOutboundRtpStreamStats.prototype.mid;
2696
+
2697
+ /** @const {string} */
2698
+ RTCOutboundRtpStreamStats.prototype.mediaSourceId;
2699
+
2700
+ /** @const {string} */
2701
+ RTCOutboundRtpStreamStats.prototype.remoteId;
2702
+
2703
+ /** @const {string|undefined} */
2704
+ RTCOutboundRtpStreamStats.prototype.rid;
2705
+
2706
+ /** @const {number|undefined} */
2707
+ RTCOutboundRtpStreamStats.prototype.headerBytesSent;
2708
+
2709
+ /** @const {number|undefined} */
2710
+ RTCOutboundRtpStreamStats.prototype.retransmittedPacketsSent;
2711
+
2712
+ /** @const {number|undefined} */
2713
+ RTCOutboundRtpStreamStats.prototype.retransmittedBytesSent;
2714
+
2715
+ /** @const {number} */
2716
+ RTCOutboundRtpStreamStats.prototype.targetBitrate;
2717
+
2718
+ /** @const {number|undefined} */
2719
+ RTCOutboundRtpStreamStats.prototype.totalEncodedBytesTarget;
2720
+
2721
+ /** @const {number} */
2722
+ RTCOutboundRtpStreamStats.prototype.frameWidth;
2723
+
2724
+ /** @const {number} */
2725
+ RTCOutboundRtpStreamStats.prototype.frameHeight;
2726
+
2727
+ /** @const {number|undefined} */
2728
+ RTCOutboundRtpStreamStats.prototype.framesPerSecond;
2729
+
2730
+ /** @const {number|undefined} */
2731
+ RTCOutboundRtpStreamStats.prototype.framesSent;
2732
+
2733
+ /** @const {number|undefined} */
2734
+ RTCOutboundRtpStreamStats.prototype.hugeFramesSent;
2735
+
2736
+ /** @const {number} */
2737
+ RTCOutboundRtpStreamStats.prototype.framesEncoded;
2738
+
2739
+ /** @const {number|undefined} */
2740
+ RTCOutboundRtpStreamStats.prototype.keyFramesEncoded;
2741
+
2742
+ /** @const {number} */
2743
+ RTCOutboundRtpStreamStats.prototype.qpSum;
2744
+
2745
+ /**
2746
+ * https://w3c.github.io/webrtc-provisional-stats/#dom-rtcoutboundrtpstreamstats-contenttype
2747
+ * @const {string|undefined}
2748
+ */
2749
+ RTCOutboundRtpStreamStats.prototype.contentType;
2750
+
2751
+ /**
2752
+ * Firefox specific value.
2753
+ * @const {number|undefined}
2754
+ */
2755
+ RTCOutboundRtpStreamStats.prototype.bitrateMean;
2756
+
2757
+ /** @const {number} */
2758
+ RTCOutboundRtpStreamStats.prototype.totalEncodeTime;
2759
+
2760
+ /** @const {number|undefined} */
2761
+ RTCOutboundRtpStreamStats.prototype.totalPacketSendDelay;
2762
+
2763
+ /** @const {string|undefined} */
2764
+ RTCOutboundRtpStreamStats.prototype.qualityLimitationReason;
2765
+
2766
+ /** @const {Object|undefined} */
2767
+ RTCOutboundRtpStreamStats.prototype.qualityLimitationDurations;
2768
+
2769
+ /** @const {number|undefined} */
2770
+ RTCOutboundRtpStreamStats.prototype.qualityLimitationResolutionChanges;
2771
+
2772
+ /** @const {number} */
2773
+ RTCOutboundRtpStreamStats.prototype.nackCount;
2774
+
2775
+ /** @const {number} */
2776
+ RTCOutboundRtpStreamStats.prototype.firCount;
2777
+
2778
+ /** @const {number} */
2779
+ RTCOutboundRtpStreamStats.prototype.pliCount;
2780
+
2781
+ /** @const {string|undefined} */
2782
+ RTCOutboundRtpStreamStats.prototype.encoderImplementation;
2783
+
2784
+ /** @const {boolean|undefined} */
2785
+ RTCOutboundRtpStreamStats.prototype.active;
2786
+
2787
+ /**
2788
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteoutboundrtpstreamstats
2789
+ * @interface
2790
+ * @extends {RTCSentRtpStreamStats}
2791
+ */
2792
+ function RTCRemoteOutboundRtpStreamStats() {}
2793
+
2794
+ /** @const {string} */
2795
+ RTCRemoteOutboundRtpStreamStats.prototype.localId;
2796
+
2797
+ /** @const {?Date|number} */
2798
+ RTCRemoteOutboundRtpStreamStats.prototype.remoteTimestamp;
2799
+
2800
+ /** @const {number|undefined} */
2801
+ RTCRemoteOutboundRtpStreamStats.prototype.reportsSent;
2802
+
2803
+ /** @const {number|undefined} */
2804
+ RTCRemoteOutboundRtpStreamStats.prototype.roundTripTime;
2805
+
2806
+ /** @const {number|undefined} */
2807
+ RTCRemoteOutboundRtpStreamStats.prototype.totalRoundTripTime;
2808
+
2809
+ /** @const {number|undefined} */
2810
+ RTCRemoteOutboundRtpStreamStats.prototype.roundTripTimeMeasurements;
2811
+
2812
+
2813
+
2814
+ /**
2815
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcpeerconnectionstats
2816
+ * @interface
2817
+ * @extends {RTCStats}
2818
+ */
2819
+ function RTCPeerConnectionStats() {}
2820
+
2821
+ /** @type {number} */
2822
+ RTCPeerConnectionStats.prototype.dataChannelsOpened;
2823
+
2824
+ /** @type {number} */
2825
+ RTCPeerConnectionStats.prototype.dataChannelsClosed;
2826
+
2827
+
2828
+ /**
2829
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtctransportstats
2830
+ * @interface
2831
+ * @extends {RTCStats}
2832
+ */
2833
+ function RTCTransportStats() {}
2834
+
2835
+ /** @type {number} */
2836
+ RTCTransportStats.prototype.packetsSent;
2837
+
2838
+ /** @type {number} */
2839
+ RTCTransportStats.prototype.packetsReceived;
2840
+
2841
+ /** @type {number} */
2842
+ RTCTransportStats.prototype.bytesSent;
2843
+
2844
+ /** @type {number} */
2845
+ RTCTransportStats.prototype.bytesReceived;
2846
+
2847
+ /** @type {string} */
2848
+ RTCTransportStats.prototype.rtcpTransportStatsId;
2849
+
2850
+ /**
2851
+ * @type {string}
2852
+ * Set of possible string values: 'unknown', 'controlling', 'controlled'.
2853
+ */
2854
+ RTCTransportStats.prototype.iceRole;
2855
+
2856
+ /** @type {string|undefined} */
2857
+ RTCTransportStats.prototype.iceLocalUsernameFragment;
2858
+ /**
2859
+ * @type {string}
2860
+ * Set of possible string values: 'new', 'connecting', 'connected',
2861
+ * 'closed', 'failed'.
2862
+ */
2863
+ RTCTransportStats.prototype.dtlsState;
2864
+
2865
+ /** @type {string|undefined} */
2866
+ RTCTransportStats.prototype.iceState;
2867
+
2868
+ /** @type {string} */
2869
+ RTCTransportStats.prototype.selectedCandidatePairId;
2870
+
2871
+ /** @type {string} */
2872
+ RTCTransportStats.prototype.localCertificateId;
2873
+
2874
+ /** @type {string} */
2875
+ RTCTransportStats.prototype.remoteCertificateId;
2876
+
2877
+ /** @type {string} */
2878
+ RTCTransportStats.prototype.tlsVersion;
2879
+
2880
+ /** @type {string} */
2881
+ RTCTransportStats.prototype.dtlsCipher;
2882
+
2883
+ /** @type {string|undefined} */
2884
+ RTCTransportStats.prototype.dtlsRole;
2885
+
2886
+ /** @type {string} */
2887
+ RTCTransportStats.prototype.srtpCipher;
2888
+
2889
+ /** @type {number} */
2890
+ RTCTransportStats.prototype.selectedCandidatePairChanges;
2891
+
2892
+
2893
+ /**
2894
+ * @see https://w3c.github.io/webrtc-stats/#dom-rtcmediasourcestats
2895
+ * @interface
2896
+ * @extends {RTCStats}
2897
+ */
2898
+ function RTCMediaSourceStats() {}
2899
+
2900
+ /** @const {string} */
2901
+ RTCMediaSourceStats.prototype.trackIdentifier;
2902
+
2903
+ /** @const {string} */
2904
+ RTCMediaSourceStats.prototype.kind;
2905
+
2906
+ /**
2907
+ * @see https://w3c.github.io/webrtc-stats/#dom-rtcvideosourcestats
2908
+ * @interface
2909
+ * @extends {RTCMediaSourceStats}
2910
+ */
2911
+ function RTCVideoSourceStats() {}
2912
+
2913
+ /** @const {number} */
2914
+ RTCVideoSourceStats.prototype.width;
2915
+
2916
+ /** @const {number} */
2917
+ RTCVideoSourceStats.prototype.height;
2918
+
2919
+ /** @const {number} */
2920
+ RTCVideoSourceStats.prototype.frames;
2921
+
2922
+ /** @const {number} */
2923
+ RTCVideoSourceStats.prototype.framesPerSecond;
2924
+
2925
+ /**
2926
+ * @see https://w3c.github.io/webrtc-stats/#dom-rtcaudiosourcestats
2927
+ * @interface
2928
+ * @extends {RTCMediaSourceStats}
2929
+ */
2930
+ function RTCAudioSourceStats() {}
2931
+
2932
+ /** @const {number} */
2933
+ RTCAudioSourceStats.prototype.audioLevel;
2934
+
2935
+ /** @const {number} */
2936
+ RTCAudioSourceStats.prototype.totalAudioEnergy;
2937
+
2938
+ /** @const {number} */
2939
+ RTCAudioSourceStats.prototype.totalSamplesDuration;
2940
+
2941
+ /** @const {number} */
2942
+ RTCAudioSourceStats.prototype.echoReturnLoss;
2943
+
2944
+ /** @const {number} */
2945
+ RTCAudioSourceStats.prototype.echoReturnLossEnhancement;
2946
+
2947
+
2948
+ /**
2949
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcicecandidatestats
2950
+ * @interface
2951
+ * @extends {RTCStats}
2952
+ */
2953
+ function RTCIceCandidateStats() {}
2954
+
2955
+ /** @const {string} */
2956
+ RTCIceCandidateStats.prototype.transportId;
2957
+
2958
+ /** @const {string|undefined} */
2959
+ RTCIceCandidateStats.prototype.networkType;
2960
+
2961
+ /** @const {string|undefined} */
2962
+ RTCIceCandidateStats.prototype.address;
2963
+
2964
+ /** @const {number|undefined} */
2965
+ RTCIceCandidateStats.prototype.port;
2966
+
2967
+ /** @const {string|undefined} */
2968
+ RTCIceCandidateStats.prototype.protocol;
2969
+
2970
+ /** @const {string} */
2971
+ RTCIceCandidateStats.prototype.candidateType;
2972
+
2973
+ /** @const {number|undefined} */
2974
+ RTCIceCandidateStats.prototype.priority;
2975
+
2976
+ /** @const {string|undefined} */
2977
+ RTCIceCandidateStats.prototype.url;
2978
+
2979
+ /** @const {string|undefined} */
2980
+ RTCIceCandidateStats.prototype.relayProtocol;
2981
+
2982
+ /**
2983
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtcicecandidatepairstats
2984
+ * @interface
2985
+ * @extends {RTCStats}
2986
+ */
2987
+ function RTCIceCandidatePairStats() {}
2988
+
2989
+ /** @const {string} */
2990
+ RTCIceCandidatePairStats.prototype.transportId;
2991
+
2992
+ /** @const {string} */
2993
+ RTCIceCandidatePairStats.prototype.localCandidateId;
2994
+
2995
+ /** @const {string} */
2996
+ RTCIceCandidatePairStats.prototype.remoteCandidateId;
2997
+
2998
+ /** @const {string} */
2999
+ RTCIceCandidatePairStats.prototype.state;
3000
+
3001
+ /** @const {boolean|undefined} */
3002
+ RTCIceCandidatePairStats.prototype.nominated;
3003
+
3004
+ /** @const {number|undefined} */
3005
+ RTCIceCandidatePairStats.prototype.packetsSent;
3006
+
3007
+ /** @const {number|undefined} */
3008
+ RTCIceCandidatePairStats.prototype.packetsReceived;
3009
+
3010
+ /** @const {number|undefined} */
3011
+ RTCIceCandidatePairStats.prototype.bytesSent;
3012
+
3013
+ /** @const {number|undefined} */
3014
+ RTCIceCandidatePairStats.prototype.bytesReceived;
3015
+
3016
+ /** @const {number|undefined} */
3017
+ RTCIceCandidatePairStats.prototype.lastPacketReceivedTimestamp;
3018
+
3019
+ /** @const {number|undefined} */
3020
+ RTCIceCandidatePairStats.prototype.lastPacketSentTimestamp
3021
+
3022
+ /** @const {number|undefined} */
3023
+ RTCIceCandidatePairStats.prototype.totalRoundTripTime;
3024
+
3025
+ /** @const {number|undefined} */
3026
+ RTCIceCandidatePairStats.prototype.currentRoundTripTime;
3027
+
3028
+ /** @const {number|undefined} */
3029
+ RTCIceCandidatePairStats.prototype.availableOutgoingBitrate;
3030
+
3031
+ /** @const {number|undefined} */
3032
+ RTCIceCandidatePairStats.prototype.availableIncomingBitrate;
3033
+
3034
+ /** @const {number|undefined} */
3035
+ RTCIceCandidatePairStats.prototype.requestsReceived;
3036
+
3037
+ /** @const {number|undefined} */
3038
+ RTCIceCandidatePairStats.prototype.requestsSent;
3039
+
3040
+ /** @const {number|undefined} */
3041
+ RTCIceCandidatePairStats.prototype.responsesReceived;
3042
+
3043
+ /** @const {number|undefined} */
3044
+ RTCIceCandidatePairStats.prototype.responsesSent;
3045
+
3046
+ /** @const {number|undefined} */
3047
+ RTCIceCandidatePairStats.prototype.consentRequestsSent;
3048
+
3049
+ /** @const {number|undefined} */
3050
+ RTCIceCandidatePairStats.prototype.packetsDiscardedOnSend;
3051
+
3052
+ /** @const {number|undefined} */
3053
+ RTCIceCandidatePairStats.prototype.bytesDiscardedOnSend;
3054
+
3055
+
3056
+ /**
3057
+ * @see https://www.w3.org/TR/webrtc-stats/#dom-rtccertificatestats
3058
+ * @interface
3059
+ * @extends {RTCStats}
3060
+ */
3061
+ function RTCCertificateStats() {}
3062
+
3063
+ /** @const {string} */
3064
+ RTCCertificateStats.prototype.fingerprint;
3065
+
3066
+ /** @const {string} */
3067
+ RTCCertificateStats.prototype.fingerprintAlgorithm;
3068
+
3069
+ /** @const {string} */
3070
+ RTCCertificateStats.prototype.base64Certificate;
3071
+
3072
+ /** @const {string|undefined} */
3073
+ RTCCertificateStats.prototype.issuerCertificateId;
3074
+
3075
+
3076
+
3077
+ /**
3078
+ * @interface
3079
+ * @extends {Iterable<!Array<string|!RTCStats>>}
3080
+ * @see https://w3c.github.io/webrtc-pc/#rtcstatsreport-object
3081
+ */
3082
+ function RTCStatsReport() {}
3083
+
3084
+ /**
3085
+ * @const {?Date|number}
3086
+ */
3087
+ RTCStatsReport.prototype.timestamp;
3088
+
3089
+ /**
3090
+ * @return {!Array<string>}
3091
+ */
3092
+ RTCStatsReport.prototype.names = function() {};
3093
+
3094
+ /**
3095
+ * @param {string} name
3096
+ * @return {string}
3097
+ */
3098
+ RTCStatsReport.prototype.stat = function(name) {};
3099
+
3100
+ /**
3101
+ * @deprecated
3102
+ * @const {RTCStatsReport}
3103
+ */
3104
+ RTCStatsReport.prototype.local;
3105
+
3106
+ /**
3107
+ * @deprecated
3108
+ * @const {RTCStatsReport}
3109
+ */
3110
+ RTCStatsReport.prototype.remote;
3111
+
3112
+ /**
3113
+ * @const {string}
3114
+ */
3115
+ RTCStatsReport.prototype.type;
3116
+
3117
+ /**
3118
+ * @const {string}
3119
+ */
3120
+ RTCStatsReport.prototype.id;
3121
+
3122
+ // Note: Below are Map like methods supported by WebRTC statistics
3123
+ // specification-compliant RTCStatsReport. Currently only implemented by
3124
+ // Mozilla.
3125
+ // See https://www.w3.org/TR/webrtc/#rtcstatsreport-object for definition.
3126
+ /**
3127
+ * @param {function(this:SCOPE, !RTCStats, string, MAP)} callback
3128
+ * @param {SCOPE=} opt_thisObj The value of "this" inside callback function.
3129
+ * @this {MAP}
3130
+ * @template MAP,SCOPE
3131
+ */
3132
+ RTCStatsReport.prototype.forEach = function(callback, opt_thisObj) {};
3133
+
3134
+ /**
3135
+ * @param {string} key
3136
+ * @return {!IteratorIterable<!Array<string|!RTCStats>>}
3137
+ */
3138
+ RTCStatsReport.prototype.entries = function(key) {};
3139
+
3140
+ /**
3141
+ * @param {string} key
3142
+ * @return {!RTCStats}
3143
+ */
3144
+ RTCStatsReport.prototype.get = function(key) {};
3145
+
3146
+ /**
3147
+ * @return {!IteratorIterable<string>}
3148
+ */
3149
+ RTCStatsReport.prototype.keys = function() {};
3150
+
3151
+ /**
3152
+ * @return {!IteratorIterable<!RTCStats>}
3153
+ */
3154
+ RTCStatsReport.prototype.values = function() {};
3155
+
3156
+ /**
3157
+ * @param {string} key
3158
+ * @return {boolean}
3159
+ */
3160
+ RTCStatsReport.prototype.has = function(key) {};
3161
+
3162
+ /**
3163
+ * @const {number}
3164
+ */
3165
+ RTCStatsReport.prototype.size;
3166
+
3167
+ /**
3168
+ * @return {!Iterator<!Array<string|!RTCStats>>}
3169
+ */
3170
+ RTCStatsReport.prototype[Symbol.iterator] = function() {};
3171
+
3172
+
3173
+ /**
3174
+ * TODO(bemasc): Remove this type once it is no longer in use. It has already
3175
+ * been removed from the specification.
3176
+ * @typedef {RTCStatsReport}
3177
+ * @deprecated
3178
+ */
3179
+ var RTCStatsElement;
3180
+
3181
+ /**
3182
+ * @interface
3183
+ */
3184
+ function RTCStatsResponse() {}
3185
+
3186
+ /**
3187
+ * @return {!Array<!RTCStatsReport>}
3188
+ */
3189
+ RTCStatsResponse.prototype.result = function() {};
3190
+
3191
+ /**
3192
+ * @typedef {function(!RTCStatsResponse, MediaStreamTrack=)}
3193
+ */
3194
+ var RTCStatsCallback;
3195
+
3196
+ /**
3197
+ * This type is not yet standardized, so the properties here only represent
3198
+ * the current capabilities of libjingle (and hence Chromium).
3199
+ * TODO(bemasc): Add a link to the relevant standard once MediaConstraint has a
3200
+ * standard definition.
3201
+ *
3202
+ * @interface
3203
+ * @private
3204
+ */
3205
+ function MediaConstraintSetInterface_() {}
3206
+
3207
+ /**
3208
+ * @type {?boolean}
3209
+ */
3210
+ MediaConstraintSetInterface_.prototype.OfferToReceiveAudio;
3211
+
3212
+ /**
3213
+ * @type {?boolean}
3214
+ */
3215
+ MediaConstraintSetInterface_.prototype.OfferToReceiveVideo;
3216
+
3217
+ /**
3218
+ * @type {?boolean}
3219
+ */
3220
+ MediaConstraintSetInterface_.prototype.DtlsSrtpKeyAgreement;
3221
+
3222
+ /**
3223
+ * @type {?boolean}
3224
+ */
3225
+ MediaConstraintSetInterface_.prototype.RtpDataChannels;
3226
+
3227
+ /**
3228
+ * TODO(bemasc): Make this type public once it is defined in a standard.
3229
+ *
3230
+ * @typedef {Object|MediaConstraintSetInterface_}
3231
+ * @private
3232
+ */
3233
+ var MediaConstraintSet_;
3234
+
3235
+ /**
3236
+ * @interface
3237
+ * @private
3238
+ */
3239
+ function MediaConstraintsInterface_() {}
3240
+
3241
+ /**
3242
+ * @type {?MediaConstraintSet_}
3243
+ */
3244
+ MediaConstraintsInterface_.prototype.mandatory;
3245
+
3246
+ /**
3247
+ * @type {?Array<!MediaConstraintSet_>}
3248
+ */
3249
+ MediaConstraintsInterface_.prototype.optional;
3250
+
3251
+ /**
3252
+ * This type is used extensively in
3253
+ * {@see http://dev.w3.org/2011/webrtc/editor/webrtc.html} but is not yet
3254
+ * defined.
3255
+ *
3256
+ * @typedef {Object|MediaConstraintsInterface_}
3257
+ */
3258
+ var MediaConstraints;
3259
+
3260
+ /**
3261
+ * @interface
3262
+ * @extends {EventTarget}
3263
+ * @see https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel
3264
+ */
3265
+ function RTCDataChannel() {}
3266
+
3267
+ /**
3268
+ * @const {string}
3269
+ */
3270
+ RTCDataChannel.prototype.label;
3271
+
3272
+ /**
3273
+ * @const {boolean}
3274
+ */
3275
+ RTCDataChannel.prototype.ordered;
3276
+
3277
+ /**
3278
+ * @const {?number}
3279
+ */
3280
+ RTCDataChannel.prototype.maxPacketLifeTime;
3281
+
3282
+ /**
3283
+ * @const {?number}
3284
+ */
3285
+ RTCDataChannel.prototype.maxRetransmits;
3286
+
3287
+ /**
3288
+ * Note, this was removed from the standard in favor of `maxPacketLifeTime` and
3289
+ * `maxRetransmits`.
3290
+ * @const {boolean}
3291
+ */
3292
+ RTCDataChannel.prototype.reliable;
3293
+
3294
+ /**
3295
+ * @const {string}
3296
+ */
3297
+ RTCDataChannel.prototype.protocol;
3298
+
3299
+ /**
3300
+ * @const {boolean}
3301
+ */
3302
+ RTCDataChannel.prototype.negotiated;
3303
+
3304
+ /**
3305
+ * @const {?number}
3306
+ */
3307
+ RTCDataChannel.prototype.id;
3308
+
3309
+ /**
3310
+ * An enumerated string type (RTCDataChannelState) with values:
3311
+ * "connecting", "open", "closing", and "closed".
3312
+ * @type {string}
3313
+ * Read only.
3314
+ */
3315
+ RTCDataChannel.prototype.readyState;
3316
+
3317
+ /**
3318
+ * @const {number}
3319
+ */
3320
+ RTCDataChannel.prototype.bufferedAmount;
3321
+
3322
+ /**
3323
+ * @type {number}
3324
+ */
3325
+ RTCDataChannel.prototype.bufferedAmountLowThreshold;
3326
+
3327
+ /**
3328
+ * @type {?function(!Event)}
3329
+ */
3330
+ RTCDataChannel.prototype.onopen;
3331
+
3332
+ /**
3333
+ * @type {?function(!RTCErrorEvent)}
3334
+ */
3335
+ RTCDataChannel.prototype.onerror;
3336
+
3337
+ /**
3338
+ * @type {?function(!Event)}
3339
+ */
3340
+ RTCDataChannel.prototype.onclosing;
3341
+
3342
+ /**
3343
+ * @type {?function(!Event)}
3344
+ */
3345
+ RTCDataChannel.prototype.onclose;
3346
+
3347
+ RTCDataChannel.prototype.close = function() {};
3348
+
3349
+ /**
3350
+ * @type {?function(!MessageEvent<*>)}
3351
+ */
3352
+ RTCDataChannel.prototype.onmessage;
3353
+
3354
+ /**
3355
+ * @type {?function(!Event)}
3356
+ */
3357
+ RTCDataChannel.prototype.onbufferedamountlow;
3358
+
3359
+ /**
3360
+ * @type {string}
3361
+ */
3362
+ RTCDataChannel.prototype.binaryType;
3363
+
3364
+ /**
3365
+ * @param {string|!Blob|!ArrayBuffer|!ArrayBufferView} data
3366
+ * @return {undefined}
3367
+ */
3368
+ RTCDataChannel.prototype.send = function(data) {};
3369
+
3370
+ /**
3371
+ * @constructor
3372
+ * @extends {Event}
3373
+ * @private
3374
+ */
3375
+ function RTCDataChannelEvent() {}
3376
+
3377
+ /**
3378
+ * @type {!RTCDataChannel}
3379
+ * Read only.
3380
+ */
3381
+ RTCDataChannelEvent.prototype.channel;
3382
+
3383
+ /**
3384
+ * @typedef {{reliable: boolean}}
3385
+ */
3386
+ var RTCDataChannelInitRecord_;
3387
+
3388
+ /**
3389
+ * @interface
3390
+ * @private
3391
+ */
3392
+ function RTCDataChannelInitInterface_() {}
3393
+
3394
+ /**
3395
+ * @type {boolean}
3396
+ */
3397
+ RTCDataChannelInitInterface_.prototype.reliable;
3398
+
3399
+ /**
3400
+ * @typedef {{
3401
+ * ordered: (boolean|undefined),
3402
+ * maxPacketLifeTime: (number|undefined),
3403
+ * maxRetransmits: (number|undefined),
3404
+ * protocol: (string|undefined),
3405
+ * negotiated: (boolean|undefined),
3406
+ * id: (number|undefined),
3407
+ * priority: (string|undefined),
3408
+ * }}
3409
+ * see https://www.w3.org/TR/webrtc/#dom-rtcdatachannelinit for documentation
3410
+ * Type inconsistencies due to Closure limitations:
3411
+ * maxPacketLifeTime should be UnsignedShort
3412
+ * maxRetransmits should be UnsignedShort
3413
+ * protocol should be USVString
3414
+ * id should be UnsignedShort
3415
+ * In WebIDL priority is an enum with values 'very-low', 'low',
3416
+ * 'medium' and 'high', but there is no mechanism in Closure for describing
3417
+ * a specialization of the string type.
3418
+ */
3419
+ var RTCDataChannelInitDictionary_;
3420
+
3421
+ /**
3422
+ * @typedef {RTCDataChannelInitInterface_|RTCDataChannelInitRecord_|RTCDataChannelInitDictionary_}
3423
+ */
3424
+ var RTCDataChannelInit;
3425
+
3426
+ /**
3427
+ * @interface
3428
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcdtlsfingerprint
3429
+ */
3430
+ function RTCDtlsFingerprint() {}
3431
+
3432
+ /** @const {string|undefined} */
3433
+ RTCDtlsFingerprint.prototype.algorithm;
3434
+
3435
+ /** @const {string|undefined} */
3436
+ RTCDtlsFingerprint.prototype.value;
3437
+
3438
+ /**
3439
+ * @interface
3440
+ * @see https://www.w3.org/TR/webrtc/#dom-rtccertificate
3441
+ */
3442
+ function RTCCertificate() {}
3443
+
3444
+ /** @const {number} */
3445
+ RTCCertificate.prototype.expires;
3446
+
3447
+ /** @return {!Array<!RTCDtlsFingerprint>} */
3448
+ RTCCertificate.prototype.getFingerprints = function() {};
3449
+
3450
+ /**
3451
+ * @interface
3452
+ * @see https://www.w3.org/TR/webrtc/#dom-rtccertificateexpiration
3453
+ */
3454
+ function RTCCertificateExpiration() {}
3455
+
3456
+ /** @const {number|undefined} */
3457
+ RTCCertificateExpiration.prototype.expires;
3458
+
3459
+ /**
3460
+ * @record
3461
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcofferoptions
3462
+ * @see https://www.w3.org/TR/webrtc/#legacy-configuration-extensions
3463
+ */
3464
+ function RTCOfferOptions() {}
3465
+
3466
+ /** @type {boolean|undefined} */
3467
+ RTCOfferOptions.prototype.iceRestart;
3468
+
3469
+ /** @type {boolean|undefined} */
3470
+ RTCOfferOptions.prototype.offerToReceiveAudio;
3471
+
3472
+ /** @type {boolean|undefined} */
3473
+ RTCOfferOptions.prototype.offerToReceiveVideo;
3474
+
3475
+ /**
3476
+ * @param {RTCConfiguration} configuration
3477
+ * @param {!MediaConstraints=} constraints
3478
+ * @constructor
3479
+ * @implements {EventTarget}
3480
+ * @see https://www.w3.org/TR/webrtc/#interface-definition
3481
+ */
3482
+ function RTCPeerConnection(configuration, constraints) {}
3483
+
3484
+ /**
3485
+ * TODO(b/240494860): Reference webCrypto.AlgorithmIdentifier instead of using
3486
+ * Object.
3487
+ * @param {!webCrypto.AlgorithmIdentifier|!RTCCertificateExpiration} keygenAlgorithm
3488
+ * @return {Promise<RTCCertificate>}
3489
+ */
3490
+ RTCPeerConnection.generateCertificate = function(keygenAlgorithm) {};
3491
+
3492
+ /**
3493
+ * @override
3494
+ */
3495
+ RTCPeerConnection.prototype.addEventListener = function(
3496
+ type, listener, opt_useCapture) {};
3497
+
3498
+ /**
3499
+ * @override
3500
+ */
3501
+ RTCPeerConnection.prototype.removeEventListener = function(
3502
+ type, listener, opt_useCapture) {};
3503
+
3504
+ /**
3505
+ * @override
3506
+ * @return {boolean}
3507
+ */
3508
+ RTCPeerConnection.prototype.dispatchEvent = function(evt) {};
3509
+
3510
+
3511
+ // NB: Until closure annotations support overloading, many of the following
3512
+ // functions take odd unions of parameter types. This is to support the various
3513
+ // api differences between browsers. Generally, returning a promise means you
3514
+ // don't take callback function parameters and draw any further parameters
3515
+ // forward, and vice versa.
3516
+
3517
+ /**
3518
+ * @param {(!RTCSessionDescriptionCallback|!MediaConstraints|!RTCOfferOptions)=}
3519
+ * successCallbackOrConstraintsOrOfferOptions
3520
+ * @param {!RTCPeerConnectionErrorCallback=} errorCallback
3521
+ * @param {!MediaConstraints=} constraints
3522
+ * @return {!Promise<!RTCSessionDescription>}
3523
+ */
3524
+ RTCPeerConnection.prototype.createOffer = function(
3525
+ successCallbackOrConstraintsOrOfferOptions, errorCallback, constraints) {};
3526
+
3527
+ /**
3528
+ * @param {(!RTCSessionDescriptionCallback|!MediaConstraints)=}
3529
+ * successCallbackOrConstraints
3530
+ * @param {!RTCPeerConnectionErrorCallback=} errorCallback
3531
+ * @param {!MediaConstraints=} constraints
3532
+ * @return {!Promise<!RTCSessionDescription>|undefined}
3533
+ */
3534
+ RTCPeerConnection.prototype.createAnswer = function(
3535
+ successCallbackOrConstraints, errorCallback, constraints) {};
3536
+
3537
+ /**
3538
+ * @param {!RTCSessionDescription=} description
3539
+ * @param {!RTCVoidCallback=} successCallback
3540
+ * @param {!RTCPeerConnectionErrorCallback=} errorCallback
3541
+ * @return {!Promise<!RTCSessionDescription>}
3542
+ */
3543
+ RTCPeerConnection.prototype.setLocalDescription = function(
3544
+ description, successCallback, errorCallback) {};
3545
+
3546
+ /**
3547
+ * @param {!RTCSessionDescription} description
3548
+ * @param {!RTCVoidCallback=} successCallback
3549
+ * @param {!RTCPeerConnectionErrorCallback=} errorCallback
3550
+ * @return {!Promise<!RTCSessionDescription>}
3551
+ */
3552
+ RTCPeerConnection.prototype.setRemoteDescription = function(
3553
+ description, successCallback, errorCallback) {};
3554
+
3555
+ /**
3556
+ * @type {?RTCSessionDescription}
3557
+ * Read only.
3558
+ */
3559
+ RTCPeerConnection.prototype.localDescription;
3560
+
3561
+ /**
3562
+ * @const {?RTCSessionDescription}
3563
+ */
3564
+ RTCPeerConnection.prototype.currentLocalDescription;
3565
+
3566
+ /**
3567
+ * @const {?RTCSessionDescription}
3568
+ */
3569
+ RTCPeerConnection.prototype.pendingLocalDescription;
3570
+
3571
+ /**
3572
+ * @type {?RTCSessionDescription}
3573
+ * Read only.
3574
+ */
3575
+ RTCPeerConnection.prototype.remoteDescription;
3576
+
3577
+ /**
3578
+ * @const {?RTCSessionDescription}
3579
+ */
3580
+ RTCPeerConnection.prototype.currentRemoteDescription;
3581
+
3582
+ /**
3583
+ * @const {?RTCSessionDescription}
3584
+ */
3585
+ RTCPeerConnection.prototype.pendingRemoteDescription;
3586
+
3587
+ /**
3588
+ * @type {RTCSignalingState}
3589
+ * Read only.
3590
+ */
3591
+ RTCPeerConnection.prototype.signalingState;
3592
+
3593
+ /**
3594
+ * @param {?RTCConfiguration=} configuration
3595
+ * @param {?MediaConstraints=} constraints
3596
+ * @return {undefined}
3597
+ */
3598
+ RTCPeerConnection.prototype.updateIce = function(configuration, constraints) {};
3599
+
3600
+ /**
3601
+ * Void in Chrome for now, a promise that you can then/catch in Firefox.
3602
+ * @param {!RTCIceCandidate} candidate
3603
+ * @param {!RTCVoidCallback=} successCallback
3604
+ * @param {function(DOMException)=} errorCallback
3605
+ * @return {!Promise|undefined}
3606
+ */
3607
+ RTCPeerConnection.prototype.addIceCandidate = function(
3608
+ candidate, successCallback, errorCallback) {};
3609
+
3610
+ /**
3611
+ * @type {!RTCIceGatheringState}
3612
+ * Read only.
3613
+ */
3614
+ RTCPeerConnection.prototype.iceGatheringState;
3615
+
3616
+ /**
3617
+ * @type {!RTCIceConnectionState}
3618
+ * Read only.
3619
+ */
3620
+ RTCPeerConnection.prototype.iceConnectionState;
3621
+
3622
+ /**
3623
+ * @type {!RTCPeerConnectionState}
3624
+ * Read only.
3625
+ */
3626
+ RTCPeerConnection.prototype.connectionState;
3627
+
3628
+ /**
3629
+ * @const {boolean|undefined}
3630
+ */
3631
+ RTCPeerConnection.prototype.canTrickleIceCandidates;
3632
+
3633
+ /**
3634
+ * @return {undefined}
3635
+ */
3636
+ RTCPeerConnection.prototype.restartIce = function() {};
3637
+
3638
+ /**
3639
+ * @return {!Array<!MediaStream>}
3640
+ */
3641
+ RTCPeerConnection.prototype.getLocalStreams = function() {};
3642
+
3643
+ /**
3644
+ * @return {!Array<!MediaStream>}
3645
+ */
3646
+ RTCPeerConnection.prototype.getRemoteStreams = function() {};
3647
+
3648
+ /**
3649
+ * @param {string} streamId
3650
+ * @return {MediaStream}
3651
+ */
3652
+ RTCPeerConnection.prototype.getStreamById = function(streamId) {};
3653
+
3654
+ /**
3655
+ * @return {!Array<!RTCRtpSender>}
3656
+ */
3657
+ RTCPeerConnection.prototype.getSenders = function() {};
3658
+
3659
+ /**
3660
+ * @return {!Array<!RTCRtpReceiver>}
3661
+ */
3662
+ RTCPeerConnection.prototype.getReceivers = function() {};
3663
+
3664
+ /**
3665
+ * @const {?RTCSctpTransport}
3666
+ */
3667
+ RTCPeerConnection.prototype.sctp;
3668
+
3669
+ /**
3670
+ * @param {?string} label
3671
+ * @param {RTCDataChannelInit=} dataChannelDict
3672
+ * @return {!RTCDataChannel}
3673
+ */
3674
+ RTCPeerConnection.prototype.createDataChannel = function(
3675
+ label, dataChannelDict) {};
3676
+ /**
3677
+ * @param {!MediaStream} stream
3678
+ * @param {!MediaConstraints=} constraints
3679
+ * @return {undefined}
3680
+ */
3681
+ RTCPeerConnection.prototype.addStream = function(stream, constraints) {};
3682
+
3683
+ /**
3684
+ * @param {!MediaStream} stream
3685
+ * @return {undefined}
3686
+ */
3687
+ RTCPeerConnection.prototype.removeStream = function(stream) {};
3688
+
3689
+ /**
3690
+ * @param {!MediaStreamTrack} track
3691
+ * @param {!MediaStream} stream
3692
+ * @param {...MediaStream} var_args Additional streams.
3693
+ * @return {!RTCRtpSender}
3694
+ */
3695
+ RTCPeerConnection.prototype.addTrack = function(track, stream, var_args) {};
3696
+
3697
+ /**
3698
+ * @param {!MediaStreamTrack|string} trackOrKind
3699
+ * @param {?RTCRtpTransceiverInit=} init
3700
+ * @return {!RTCRtpTransceiver}
3701
+ */
3702
+ RTCPeerConnection.prototype.addTransceiver = function(trackOrKind, init) {};
3703
+
3704
+ /**
3705
+ * Returns the list of transceivers are currently attached to this peer.
3706
+ *
3707
+ * @return {!Array<!RTCRtpTransceiver>}
3708
+ */
3709
+ RTCPeerConnection.prototype.getTransceivers = function() {};
3710
+
3711
+ /**
3712
+ * @return {!RTCConfiguration}
3713
+ */
3714
+ RTCPeerConnection.prototype.getConfiguration = function() {};
3715
+
3716
+ /**
3717
+ * @param {!RTCConfiguration} configuration
3718
+ * @return {undefined}
3719
+ */
3720
+ RTCPeerConnection.prototype.setConfiguration = function(configuration) {};
3721
+
3722
+ /**
3723
+ * @param {!RTCRtpSender} sender
3724
+ * @return {undefined}
3725
+ */
3726
+ RTCPeerConnection.prototype.removeTrack = function(sender) {};
3727
+
3728
+ // TODO(bemasc): Add identity provider stuff once implementations exist
3729
+
3730
+ // TODO(rjogrady): Per w3c spec, getStats() should always return a Promise.
3731
+ // Remove RTCStatsReport from the return value once Firefox supports that.
3732
+ /**
3733
+ * Firefox' getstats is synchronous and returns a much simpler
3734
+ * {!RTCStatsReport} Map-like object.
3735
+ * @param {!RTCStatsCallback=} successCallback
3736
+ * @param {MediaStreamTrack=} selector
3737
+ * @return {undefined|!RTCStatsReport|!Promise<!RTCStatsReport>}
3738
+ */
3739
+ RTCPeerConnection.prototype.getStats = function(successCallback, selector) {};
3740
+
3741
+ RTCPeerConnection.prototype.close = function() {};
3742
+
3743
+ /**
3744
+ * @type {?function(!Event)}
3745
+ */
3746
+ RTCPeerConnection.prototype.onnegotiationneeded;
3747
+
3748
+ /**
3749
+ * @type {?function(!RTCPeerConnectionIceEvent)}
3750
+ */
3751
+ RTCPeerConnection.prototype.onicecandidate;
3752
+
3753
+ /**
3754
+ * @type {?function(!RTCPeerConnectionIceErrorEvent)}
3755
+ */
3756
+ RTCPeerConnection.prototype.onicecandidateerror;
3757
+
3758
+ /**
3759
+ * @type {?function(!Event)}
3760
+ */
3761
+ RTCPeerConnection.prototype.onicegatheringstatechange;
3762
+
3763
+ /**
3764
+ * @type {?function(!Event)}
3765
+ */
3766
+ RTCPeerConnection.prototype.onsignalingstatechange;
3767
+
3768
+ /**
3769
+ * @type {?function(!MediaStreamEvent)}
3770
+ */
3771
+ RTCPeerConnection.prototype.onaddstream;
3772
+
3773
+ /**
3774
+ * @type {?function(!RTCTrackEvent)}
3775
+ */
3776
+ RTCPeerConnection.prototype.ontrack;
3777
+
3778
+ /**
3779
+ * @type {?function(!MediaStreamEvent)}
3780
+ */
3781
+ RTCPeerConnection.prototype.onremovestream;
3782
+
3783
+ /**
3784
+ * @type {?function(!Event)}
3785
+ */
3786
+ RTCPeerConnection.prototype.oniceconnectionstatechange;
3787
+
3788
+ /**
3789
+ * @type {?function(!RTCDataChannelEvent)}
3790
+ */
3791
+ RTCPeerConnection.prototype.ondatachannel;
3792
+
3793
+ /**
3794
+ * @type {?function(!Event)}
3795
+ */
3796
+ RTCPeerConnection.prototype.onconnectionstatechange;
3797
+
3798
+ /**
3799
+ * @typedef {string}
3800
+ * @see https://www.w3.org/TR/webrtc/#dom-rtcerrordetailtype
3801
+ * Possible values: 'data-channel-failure', 'dtls-failure',
3802
+ * 'fingerprint-failure', 'sctp-failure', 'sdp-syntax-error',
3803
+ * 'hardware-encoder-not-available', 'hardware-encoder-error'
3804
+ */
3805
+ var RTCErrorDetailType;
3806
+
3807
+ /**
3808
+ * @see https://www.w3.org/TR/webrtc/#rtcerror-interface
3809
+ * @interface
3810
+ */
3811
+ function RTCError() {}
3812
+
3813
+ /** @const {!RTCErrorDetailType} */
3814
+ RTCError.prototype.errorDetail;
3815
+
3816
+ /** @const {number|undefined} */
3817
+ RTCError.prototype.sdpLineNumber;
3818
+
3819
+ /** @const {number|undefined} */
3820
+ RTCError.prototype.httpRequestStatusCode;
3821
+
3822
+ /** @const {number|undefined} */
3823
+ RTCError.prototype.sctpCauseCode;
3824
+
3825
+ /** @const {number|undefined} */
3826
+ RTCError.prototype.receivedAlert;
3827
+
3828
+ /** @const {number|undefined} */
3829
+ RTCError.prototype.sentAlert;
3830
+
3831
+ /**
3832
+ * @see https://www.w3.org/TR/webrtc/#rtcerrorevent-interface
3833
+ * @constructor
3834
+ * @extends {Event}
3835
+ */
3836
+ function RTCErrorEvent() {}
3837
+
3838
+ /** @const {!RTCError} */
3839
+ RTCErrorEvent.prototype.error;
3840
+
3841
+ /** @const {string} */
3842
+ RTCErrorEvent.prototype.message;
3843
+
3844
+ /**
3845
+ * @template T
3846
+ * @record
3847
+ * @struct
3848
+ */
3849
+ function MediaStreamTrackProcessor() {}
3850
+
3851
+ /** @const {!ReadableStream<T>} */
3852
+ MediaStreamTrackProcessor.prototype.readable;
3853
+
3854
+ /**
3855
+ * @typedef {{kind: string}}
3856
+ * @see https://alvestrand.github.io/mediacapture-transform/chrome-96.html#generator
3857
+ */
3858
+ var MediaStreamTrackGeneratorInit;
3859
+
3860
+ /**
3861
+ * @template T
3862
+ * @param {!MediaStreamTrackGeneratorInit} kind
3863
+ * @extends {MediaStreamTrack}
3864
+ * @constructor
3865
+ */
3866
+ function MediaStreamTrackGenerator(kind) {}
3867
+
3868
+ /** @const {!WritableStream<T>} */
3869
+ MediaStreamTrackGenerator.prototype.writable;
3870
+
3871
+ /** @const {!ReadableStream} */
3872
+ MediaStreamTrackGenerator.prototype.readableControl;
3873
+
3874
+ /**
3875
+ * @type {?function(!MediaStreamTrackEvent)}
3876
+ */
3877
+ MediaStreamTrackGenerator.prototype.onaddtrack;
3878
+
3879
+ /**
3880
+ * @type {?function(!MediaStreamTrackEvent)}
3881
+ */
3882
+ MediaStreamTrackGenerator.prototype.onremovetrack;