@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131

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 (519) hide show
  1. package/README.md +45 -1
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +48 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +355 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +193 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +43 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +994 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +5 -26
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +5 -26
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +6 -27
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +5 -26
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +5 -26
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +4 -25
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +5 -26
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +5 -26
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +6 -41
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +1 -24
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +35 -61
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +4 -14
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +6 -6
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +203 -53
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +294 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +72 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/locus-info/controlsUtils.js +100 -29
  87. package/dist/locus-info/controlsUtils.js.map +1 -1
  88. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  89. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  90. package/dist/locus-info/fullState.js +0 -15
  91. package/dist/locus-info/fullState.js.map +1 -1
  92. package/dist/locus-info/hostUtils.js +4 -12
  93. package/dist/locus-info/hostUtils.js.map +1 -1
  94. package/dist/locus-info/index.js +406 -216
  95. package/dist/locus-info/index.js.map +1 -1
  96. package/dist/locus-info/infoUtils.js +0 -38
  97. package/dist/locus-info/infoUtils.js.map +1 -1
  98. package/dist/locus-info/mediaSharesUtils.js +54 -38
  99. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  100. package/dist/locus-info/parser.js +88 -123
  101. package/dist/locus-info/parser.js.map +1 -1
  102. package/dist/locus-info/selfUtils.js +105 -91
  103. package/dist/locus-info/selfUtils.js.map +1 -1
  104. package/dist/media/index.js +55 -165
  105. package/dist/media/index.js.map +1 -1
  106. package/dist/media/properties.js +71 -117
  107. package/dist/media/properties.js.map +1 -1
  108. package/dist/media/util.js +2 -9
  109. package/dist/media/util.js.map +1 -1
  110. package/dist/mediaQualityMetrics/config.js +505 -495
  111. package/dist/mediaQualityMetrics/config.js.map +1 -1
  112. package/dist/meeting/in-meeting-actions.js +77 -14
  113. package/dist/meeting/in-meeting-actions.js.map +1 -1
  114. package/dist/meeting/index.js +2603 -2462
  115. package/dist/meeting/index.js.map +1 -1
  116. package/dist/meeting/locusMediaRequest.js +291 -0
  117. package/dist/meeting/locusMediaRequest.js.map +1 -0
  118. package/dist/meeting/muteState.js +292 -138
  119. package/dist/meeting/muteState.js.map +1 -1
  120. package/dist/meeting/request.js +315 -336
  121. package/dist/meeting/request.js.map +1 -1
  122. package/dist/meeting/request.type.js +7 -0
  123. package/dist/meeting/request.type.js.map +1 -0
  124. package/dist/meeting/state.js +21 -31
  125. package/dist/meeting/state.js.map +1 -1
  126. package/dist/meeting/util.js +463 -583
  127. package/dist/meeting/util.js.map +1 -1
  128. package/dist/meeting-info/collection.js +3 -25
  129. package/dist/meeting-info/collection.js.map +1 -1
  130. package/dist/meeting-info/index.js +10 -33
  131. package/dist/meeting-info/index.js.map +1 -1
  132. package/dist/meeting-info/meeting-info-v2.js +305 -286
  133. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  134. package/dist/meeting-info/request.js +1 -16
  135. package/dist/meeting-info/request.js.map +1 -1
  136. package/dist/meeting-info/util.js +98 -183
  137. package/dist/meeting-info/util.js.map +1 -1
  138. package/dist/meeting-info/utilv2.js +156 -232
  139. package/dist/meeting-info/utilv2.js.map +1 -1
  140. package/dist/meetings/collection.js +24 -20
  141. package/dist/meetings/collection.js.map +1 -1
  142. package/dist/meetings/index.js +692 -593
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +23 -42
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +186 -155
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.js +89 -88
  149. package/dist/member/index.js.map +1 -1
  150. package/dist/member/types.js +15 -0
  151. package/dist/member/types.js.map +1 -0
  152. package/dist/member/util.js +101 -69
  153. package/dist/member/util.js.map +1 -1
  154. package/dist/members/collection.js +12 -12
  155. package/dist/members/collection.js.map +1 -1
  156. package/dist/members/index.js +166 -205
  157. package/dist/members/index.js.map +1 -1
  158. package/dist/members/request.js +120 -85
  159. package/dist/members/request.js.map +1 -1
  160. package/dist/members/types.js +15 -0
  161. package/dist/members/types.js.map +1 -0
  162. package/dist/members/util.js +314 -260
  163. package/dist/members/util.js.map +1 -1
  164. package/dist/metrics/config.js +50 -16
  165. package/dist/metrics/config.js.map +1 -1
  166. package/dist/metrics/constants.js +4 -7
  167. package/dist/metrics/constants.js.map +1 -1
  168. package/dist/metrics/index.js +93 -162
  169. package/dist/metrics/index.js.map +1 -1
  170. package/dist/multistream/mediaRequestManager.js +167 -50
  171. package/dist/multistream/mediaRequestManager.js.map +1 -1
  172. package/dist/multistream/receiveSlot.js +58 -65
  173. package/dist/multistream/receiveSlot.js.map +1 -1
  174. package/dist/multistream/receiveSlotManager.js +74 -93
  175. package/dist/multistream/receiveSlotManager.js.map +1 -1
  176. package/dist/multistream/remoteMedia.js +55 -74
  177. package/dist/multistream/remoteMedia.js.map +1 -1
  178. package/dist/multistream/remoteMediaGroup.js +6 -40
  179. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  180. package/dist/multistream/remoteMediaManager.js +466 -442
  181. package/dist/multistream/remoteMediaManager.js.map +1 -1
  182. package/dist/networkQualityMonitor/index.js +32 -59
  183. package/dist/networkQualityMonitor/index.js.map +1 -1
  184. package/dist/personal-meeting-room/index.js +10 -45
  185. package/dist/personal-meeting-room/index.js.map +1 -1
  186. package/dist/personal-meeting-room/request.js +2 -33
  187. package/dist/personal-meeting-room/request.js.map +1 -1
  188. package/dist/personal-meeting-room/util.js +0 -13
  189. package/dist/personal-meeting-room/util.js.map +1 -1
  190. package/dist/reachability/index.js +190 -199
  191. package/dist/reachability/index.js.map +1 -1
  192. package/dist/reachability/request.js +14 -23
  193. package/dist/reachability/request.js.map +1 -1
  194. package/dist/reactions/constants.js +13 -0
  195. package/dist/reactions/constants.js.map +1 -0
  196. package/dist/reactions/reactions.js +2 -4
  197. package/dist/reactions/reactions.js.map +1 -1
  198. package/dist/reactions/reactions.type.js +19 -23
  199. package/dist/reactions/reactions.type.js.map +1 -1
  200. package/dist/reconnection-manager/index.js +326 -465
  201. package/dist/reconnection-manager/index.js.map +1 -1
  202. package/dist/recording-controller/enums.js +17 -0
  203. package/dist/recording-controller/enums.js.map +1 -0
  204. package/dist/recording-controller/index.js +343 -0
  205. package/dist/recording-controller/index.js.map +1 -0
  206. package/dist/recording-controller/util.js +63 -0
  207. package/dist/recording-controller/util.js.map +1 -0
  208. package/dist/roap/index.js +31 -75
  209. package/dist/roap/index.js.map +1 -1
  210. package/dist/roap/request.js +129 -136
  211. package/dist/roap/request.js.map +1 -1
  212. package/dist/roap/turnDiscovery.js +143 -103
  213. package/dist/roap/turnDiscovery.js.map +1 -1
  214. package/dist/statsAnalyzer/global.js +1 -95
  215. package/dist/statsAnalyzer/global.js.map +1 -1
  216. package/dist/statsAnalyzer/index.js +369 -461
  217. package/dist/statsAnalyzer/index.js.map +1 -1
  218. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  219. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  220. package/dist/transcription/index.js +13 -45
  221. package/dist/transcription/index.js.map +1 -1
  222. package/dist/types/annotation/annotation.types.d.ts +35 -0
  223. package/dist/types/annotation/constants.d.ts +31 -0
  224. package/dist/types/annotation/index.d.ts +124 -0
  225. package/dist/types/breakouts/breakout.d.ts +8 -0
  226. package/dist/types/breakouts/collection.d.ts +5 -0
  227. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  228. package/dist/types/breakouts/events.d.ts +2 -0
  229. package/dist/types/breakouts/index.d.ts +5 -0
  230. package/dist/types/breakouts/request.d.ts +22 -0
  231. package/dist/types/breakouts/utils.d.ts +15 -0
  232. package/dist/types/common/browser-detection.d.ts +9 -0
  233. package/dist/types/common/collection.d.ts +48 -0
  234. package/dist/types/common/config.d.ts +2 -0
  235. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  236. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  237. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  238. package/dist/types/common/errors/media.d.ts +15 -0
  239. package/dist/types/common/errors/parameter.d.ts +15 -0
  240. package/dist/types/common/errors/password-error.d.ts +15 -0
  241. package/dist/types/common/errors/permission.d.ts +14 -0
  242. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  243. package/dist/types/common/errors/reconnection.d.ts +15 -0
  244. package/dist/types/common/errors/stats.d.ts +15 -0
  245. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  246. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  247. package/dist/types/common/events/events-scope.d.ts +17 -0
  248. package/dist/types/common/events/events.d.ts +12 -0
  249. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  250. package/dist/types/common/events/util.d.ts +2 -0
  251. package/dist/types/common/logs/logger-config.d.ts +2 -0
  252. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  253. package/dist/types/common/logs/request.d.ts +34 -0
  254. package/dist/types/common/queue.d.ts +32 -0
  255. package/dist/types/config.d.ts +78 -0
  256. package/dist/types/constants.d.ts +993 -0
  257. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  258. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  259. package/dist/types/controls-options-manager/index.d.ts +136 -0
  260. package/dist/types/controls-options-manager/types.d.ts +43 -0
  261. package/dist/types/controls-options-manager/util.d.ts +1 -0
  262. package/dist/types/index.d.ts +7 -0
  263. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  264. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  265. package/dist/types/locus-info/fullState.d.ts +2 -0
  266. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  267. package/dist/types/locus-info/index.d.ts +315 -0
  268. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  269. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  270. package/dist/types/locus-info/parser.d.ts +212 -0
  271. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  272. package/dist/types/media/index.d.ts +34 -0
  273. package/dist/types/media/properties.d.ts +108 -0
  274. package/dist/types/media/util.d.ts +2 -0
  275. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  276. package/dist/types/meeting/in-meeting-actions.d.ts +147 -0
  277. package/dist/types/meeting/index.d.ts +1762 -0
  278. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  279. package/dist/types/meeting/muteState.d.ts +186 -0
  280. package/dist/types/meeting/request.d.ts +269 -0
  281. package/dist/types/meeting/request.type.d.ts +11 -0
  282. package/dist/types/meeting/state.d.ts +9 -0
  283. package/dist/types/meeting/util.d.ts +76 -0
  284. package/dist/types/meeting-info/collection.d.ts +20 -0
  285. package/dist/types/meeting-info/index.d.ts +57 -0
  286. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  287. package/dist/types/meeting-info/request.d.ts +22 -0
  288. package/dist/types/meeting-info/util.d.ts +2 -0
  289. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  290. package/dist/types/meetings/collection.d.ts +31 -0
  291. package/dist/types/meetings/index.d.ts +345 -0
  292. package/dist/types/meetings/request.d.ts +27 -0
  293. package/dist/types/meetings/util.d.ts +18 -0
  294. package/dist/types/member/index.d.ts +157 -0
  295. package/dist/types/member/types.d.ts +21 -0
  296. package/dist/types/member/util.d.ts +2 -0
  297. package/dist/types/members/collection.d.ts +29 -0
  298. package/dist/types/members/index.d.ts +353 -0
  299. package/dist/types/members/request.d.ts +114 -0
  300. package/dist/types/members/types.d.ts +24 -0
  301. package/dist/types/members/util.d.ts +210 -0
  302. package/dist/types/metrics/config.d.ts +195 -0
  303. package/dist/types/metrics/constants.d.ts +55 -0
  304. package/dist/types/metrics/index.d.ts +169 -0
  305. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  306. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  307. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  308. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  309. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  310. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  311. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  312. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  313. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  314. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  315. package/dist/types/reachability/index.d.ts +152 -0
  316. package/dist/types/reachability/request.d.ts +37 -0
  317. package/dist/types/reactions/constants.d.ts +3 -0
  318. package/dist/types/reactions/reactions.d.ts +4 -0
  319. package/dist/types/reactions/reactions.type.d.ts +52 -0
  320. package/dist/types/reconnection-manager/index.d.ts +126 -0
  321. package/dist/types/recording-controller/enums.d.ts +7 -0
  322. package/dist/types/recording-controller/index.d.ts +193 -0
  323. package/dist/types/recording-controller/util.d.ts +13 -0
  324. package/dist/types/roap/index.d.ts +77 -0
  325. package/dist/types/roap/request.d.ts +36 -0
  326. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  327. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  328. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  329. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  330. package/dist/types/transcription/index.d.ts +64 -0
  331. package/internal-README.md +7 -6
  332. package/package.json +28 -21
  333. package/src/annotation/annotation.types.ts +42 -0
  334. package/src/annotation/constants.ts +36 -0
  335. package/src/annotation/index.ts +339 -0
  336. package/src/breakouts/README.md +220 -0
  337. package/src/breakouts/breakout.ts +163 -0
  338. package/src/breakouts/collection.ts +19 -0
  339. package/src/breakouts/edit-lock-error.ts +25 -0
  340. package/src/breakouts/events.ts +37 -0
  341. package/src/breakouts/index.ts +860 -0
  342. package/src/breakouts/request.ts +55 -0
  343. package/src/breakouts/utils.ts +57 -0
  344. package/src/common/browser-detection.ts +9 -6
  345. package/src/common/collection.ts +3 -1
  346. package/src/common/errors/captcha-error.ts +6 -6
  347. package/src/common/errors/intent-to-join.ts +6 -6
  348. package/src/common/errors/join-meeting.ts +12 -8
  349. package/src/common/errors/media.ts +6 -6
  350. package/src/common/errors/parameter.ts +9 -6
  351. package/src/common/errors/password-error.ts +6 -6
  352. package/src/common/errors/permission.ts +5 -5
  353. package/src/common/errors/reconnection.ts +6 -6
  354. package/src/common/errors/stats.ts +6 -6
  355. package/src/common/errors/webex-errors.ts +7 -5
  356. package/src/common/errors/webex-meetings-error.ts +1 -1
  357. package/src/common/events/events-scope.ts +5 -1
  358. package/src/common/events/events.ts +5 -1
  359. package/src/common/events/trigger-proxy.ts +8 -3
  360. package/src/common/events/util.ts +1 -2
  361. package/src/common/logs/logger-proxy.ts +21 -10
  362. package/src/common/logs/request.ts +11 -8
  363. package/src/config.ts +16 -12
  364. package/src/constants.ts +153 -7
  365. package/src/controls-options-manager/constants.ts +5 -0
  366. package/src/controls-options-manager/enums.ts +18 -0
  367. package/src/controls-options-manager/index.ts +278 -0
  368. package/src/controls-options-manager/types.ts +59 -0
  369. package/src/controls-options-manager/util.ts +281 -0
  370. package/src/index.ts +33 -0
  371. package/src/locus-info/controlsUtils.ts +142 -24
  372. package/src/locus-info/fullState.ts +15 -11
  373. package/src/locus-info/hostUtils.ts +4 -3
  374. package/src/locus-info/index.ts +346 -55
  375. package/src/locus-info/infoUtils.ts +12 -4
  376. package/src/locus-info/mediaSharesUtils.ts +52 -4
  377. package/src/locus-info/parser.ts +46 -68
  378. package/src/locus-info/selfUtils.ts +195 -56
  379. package/src/media/index.ts +139 -196
  380. package/src/media/properties.ts +43 -36
  381. package/src/media/util.ts +1 -1
  382. package/src/mediaQualityMetrics/config.ts +380 -378
  383. package/src/meeting/in-meeting-actions.ts +159 -3
  384. package/src/meeting/index.ts +2803 -1584
  385. package/src/meeting/locusMediaRequest.ts +309 -0
  386. package/src/meeting/muteState.ts +290 -72
  387. package/src/meeting/request.ts +247 -178
  388. package/src/meeting/request.type.ts +13 -0
  389. package/src/meeting/state.ts +45 -30
  390. package/src/meeting/util.ts +445 -395
  391. package/src/meeting-info/collection.ts +2 -1
  392. package/src/meeting-info/index.ts +32 -30
  393. package/src/meeting-info/meeting-info-v2.ts +235 -116
  394. package/src/meeting-info/request.ts +9 -3
  395. package/src/meeting-info/util.ts +54 -46
  396. package/src/meeting-info/utilv2.ts +71 -55
  397. package/src/meetings/collection.ts +21 -1
  398. package/src/meetings/index.ts +772 -437
  399. package/src/meetings/request.ts +29 -25
  400. package/src/meetings/util.ts +132 -33
  401. package/src/member/index.ts +95 -49
  402. package/src/member/types.ts +24 -0
  403. package/src/member/util.ts +106 -13
  404. package/src/members/collection.ts +8 -1
  405. package/src/members/index.ts +288 -130
  406. package/src/members/request.ts +144 -31
  407. package/src/members/types.ts +28 -0
  408. package/src/members/util.ts +316 -235
  409. package/src/metrics/config.ts +302 -90
  410. package/src/metrics/constants.ts +2 -6
  411. package/src/metrics/index.ts +124 -95
  412. package/src/multistream/mediaRequestManager.ts +203 -45
  413. package/src/multistream/receiveSlot.ts +69 -26
  414. package/src/multistream/receiveSlotManager.ts +62 -38
  415. package/src/multistream/remoteMedia.ts +30 -4
  416. package/src/multistream/remoteMediaGroup.ts +4 -3
  417. package/src/multistream/remoteMediaManager.ts +230 -66
  418. package/src/networkQualityMonitor/index.ts +24 -27
  419. package/src/personal-meeting-room/index.ts +12 -16
  420. package/src/personal-meeting-room/request.ts +10 -3
  421. package/src/personal-meeting-room/util.ts +3 -3
  422. package/src/reachability/index.ts +131 -79
  423. package/src/reachability/request.ts +43 -34
  424. package/src/reactions/constants.ts +4 -0
  425. package/src/reactions/reactions.ts +8 -8
  426. package/src/reactions/reactions.type.ts +31 -5
  427. package/src/reconnection-manager/index.ts +193 -111
  428. package/src/recording-controller/enums.ts +8 -0
  429. package/src/recording-controller/index.ts +315 -0
  430. package/src/recording-controller/util.ts +58 -0
  431. package/src/roap/index.ts +53 -53
  432. package/src/roap/request.ts +77 -64
  433. package/src/roap/turnDiscovery.ts +101 -48
  434. package/src/statsAnalyzer/global.ts +8 -104
  435. package/src/statsAnalyzer/index.ts +624 -376
  436. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  437. package/src/transcription/index.ts +34 -32
  438. package/test/integration/spec/converged-space-meetings.js +177 -0
  439. package/test/integration/spec/journey.js +670 -466
  440. package/test/integration/spec/space-meeting.js +320 -204
  441. package/test/integration/spec/transcription.js +7 -8
  442. package/test/unit/spec/annotation/index.ts +433 -0
  443. package/test/unit/spec/breakouts/breakout.ts +203 -0
  444. package/test/unit/spec/breakouts/collection.ts +15 -0
  445. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  446. package/test/unit/spec/breakouts/events.ts +77 -0
  447. package/test/unit/spec/breakouts/index.ts +1609 -0
  448. package/test/unit/spec/breakouts/request.ts +104 -0
  449. package/test/unit/spec/breakouts/utils.js +72 -0
  450. package/test/unit/spec/common/browser-detection.js +9 -28
  451. package/test/unit/spec/controls-options-manager/index.js +287 -0
  452. package/test/unit/spec/controls-options-manager/util.js +504 -0
  453. package/test/unit/spec/fixture/locus.js +93 -90
  454. package/test/unit/spec/locus-info/controlsUtils.js +305 -32
  455. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  456. package/test/unit/spec/locus-info/index.js +636 -5
  457. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  458. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  459. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  460. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  461. package/test/unit/spec/locus-info/parser.js +3 -9
  462. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  463. package/test/unit/spec/locus-info/selfUtils.js +252 -12
  464. package/test/unit/spec/media/index.ts +104 -8
  465. package/test/unit/spec/media/properties.ts +9 -9
  466. package/test/unit/spec/meeting/in-meeting-actions.ts +76 -3
  467. package/test/unit/spec/meeting/index.js +3112 -921
  468. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  469. package/test/unit/spec/meeting/muteState.js +421 -94
  470. package/test/unit/spec/meeting/request.js +421 -79
  471. package/test/unit/spec/meeting/utils.js +326 -189
  472. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  473. package/test/unit/spec/meeting-info/request.js +7 -9
  474. package/test/unit/spec/meeting-info/util.js +11 -12
  475. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  476. package/test/unit/spec/meetings/collection.js +15 -1
  477. package/test/unit/spec/meetings/index.js +1126 -328
  478. package/test/unit/spec/meetings/utils.js +220 -14
  479. package/test/unit/spec/member/index.js +24 -1
  480. package/test/unit/spec/member/util.js +383 -32
  481. package/test/unit/spec/members/index.js +424 -55
  482. package/test/unit/spec/members/request.js +228 -40
  483. package/test/unit/spec/members/utils.js +191 -4
  484. package/test/unit/spec/metrics/index.js +113 -20
  485. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  486. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  487. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  488. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  489. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  490. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  491. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  492. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  493. package/test/unit/spec/reachability/index.ts +176 -27
  494. package/test/unit/spec/reachability/request.js +66 -0
  495. package/test/unit/spec/reconnection-manager/index.js +62 -31
  496. package/test/unit/spec/recording-controller/index.js +231 -0
  497. package/test/unit/spec/recording-controller/util.js +102 -0
  498. package/test/unit/spec/roap/index.ts +19 -49
  499. package/test/unit/spec/roap/request.ts +187 -0
  500. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  501. package/test/unit/spec/stats-analyzer/index.js +116 -60
  502. package/test/utils/cmr.js +44 -42
  503. package/test/utils/constants.js +9 -0
  504. package/test/utils/integrationTestUtils.js +64 -0
  505. package/test/utils/testUtils.js +63 -99
  506. package/test/utils/webex-config.js +22 -18
  507. package/test/utils/webex-test-users.js +57 -50
  508. package/tsconfig.json +6 -0
  509. package/dist/media/internal-media-core-wrapper.js +0 -22
  510. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  511. package/dist/meeting/effectsState.js +0 -334
  512. package/dist/meeting/effectsState.js.map +0 -1
  513. package/dist/multistream/multistreamMedia.js +0 -116
  514. package/dist/multistream/multistreamMedia.js.map +0 -1
  515. package/src/index.js +0 -15
  516. package/src/media/internal-media-core-wrapper.ts +0 -9
  517. package/src/meeting/effectsState.ts +0 -211
  518. package/src/multistream/multistreamMedia.ts +0 -92
  519. package/test/unit/spec/meeting/effectsState.js +0 -291
@@ -0,0 +1,1762 @@
1
+ /// <reference types="node" />
2
+ import { StatelessWebexPlugin } from '@webex/webex-core';
3
+ import { LocalTrack, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack, TrackMuteEvent } from '@webex/media-helpers';
4
+ import { StatsAnalyzer } from '../statsAnalyzer';
5
+ import NetworkQualityMonitor from '../networkQualityMonitor';
6
+ import Roap from '../roap/index';
7
+ import MediaProperties from '../media/properties';
8
+ import ReconnectionManager from '../reconnection-manager';
9
+ import MeetingRequest from './request';
10
+ import Members from '../members/index';
11
+ import Transcription from '../transcription';
12
+ import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
13
+ import { MediaRequestManager } from '../multistream/mediaRequestManager';
14
+ import { RemoteMediaManager } from '../multistream/remoteMediaManager';
15
+ import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
16
+ import InMeetingActions from './in-meeting-actions';
17
+ import RecordingController from '../recording-controller';
18
+ import ControlsOptionsManager from '../controls-options-manager';
19
+ import { LocusMediaRequest } from './locusMediaRequest';
20
+ export declare const MEDIA_UPDATE_TYPE: {
21
+ ALL: string;
22
+ AUDIO: string;
23
+ VIDEO: string;
24
+ SHARE: string;
25
+ LAMBDA: string;
26
+ };
27
+ /**
28
+ * MediaDirection
29
+ * @typedef {Object} MediaDirection
30
+ * @property {boolean} sendAudio
31
+ * @property {boolean} receiveAudio
32
+ * @property {boolean} sendVideo
33
+ * @property {boolean} receiveVideo
34
+ * @property {boolean} sendShare
35
+ * @property {boolean} receiveShare
36
+ * @property {boolean} isSharing
37
+ */
38
+ /**
39
+ * AudioVideo
40
+ * @typedef {Object} AudioVideo
41
+ * @property {Object} audio
42
+ * @property {String} audio.deviceId
43
+ * @property {Object} video
44
+ * @property {String} video.deviceId
45
+ * @property {String} video.localVideoQuality // [240p, 360p, 480p, 720p, 1080p]
46
+ */
47
+ /**
48
+ * SharePreferences
49
+ * @typedef {Object} SharePreferences
50
+ * @property {Object} [shareConstraints]
51
+ * @property {Boolean} [highFrameRate]
52
+ */
53
+ /**
54
+ * JoinOptions
55
+ * @typedef {Object} JoinOptions
56
+ * @property {String} [resourceId]
57
+ * @property {String} [pin]
58
+ * @property {Boolean} [moderator]
59
+ * @property {String|Object} [meetingQuality]
60
+ * @property {String} [meetingQuality.local]
61
+ * @property {String} [meetingQuality.remote]
62
+ * @property {Boolean} [rejoin]
63
+ * @property {Boolean} [enableMultistream]
64
+ * @property {String} [correlationId]
65
+ */
66
+ /**
67
+ * SendOptions
68
+ * @typedef {Object} SendOptions
69
+ * @property {Boolean} sendAudio
70
+ * @property {Boolean} sendVideo
71
+ * @property {Boolean} sendShare
72
+ */
73
+ /**
74
+ * Recording
75
+ * @typedef {Object} Recording
76
+ * @property {Object} state
77
+ * @property {String} modifiedBy
78
+ */
79
+ /**
80
+ * Meeting State Change Event
81
+ * Emitted when ever there is a meeting state change
82
+ * @event meeting:stateChange
83
+ * @instance
84
+ * @type {Object}
85
+ * @property {String} currentState current state of the meeting
86
+ * @property {String} previousState previous state of the meeting
87
+ * @memberof Meeting
88
+ */
89
+ /**
90
+ * Media Ready Event
91
+ * Emitted when a stream is ready to be rendered
92
+ * @event media:ready
93
+ * @instance
94
+ * @type {Object}
95
+ * @property {MediaStream} stream the media stream
96
+ * @property {String} type what type of stream, remote, local
97
+ * @memberof Meeting
98
+ */
99
+ /**
100
+ * Media Stopped Event
101
+ * Emitted when a stream has stopped sending
102
+ * @event media:stopped
103
+ * @instance
104
+ * @type {Object}
105
+ * @property {String} type what type of stream, remote, local
106
+ * @memberof Meeting
107
+ */
108
+ /**
109
+ * Meeting Ringing Event
110
+ * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting
111
+ * or sending out an incoming meeting
112
+ * @event meeting:ringing
113
+ * @instance
114
+ * @type {Object}
115
+ * @property {String} type // INCOMING or JOIN
116
+ * @property {String} id
117
+ * @memberof Meeting
118
+ */
119
+ /**
120
+ * Meeting Ringing Stop Event
121
+ * Emitted when this client should stop playing a ringing sound
122
+ * @event meeting:ringingStop
123
+ * @instance
124
+ * @type {Object}
125
+ * @property {Object} type
126
+ * @property {Boolean} type.remoteAnswered
127
+ * @property {Boolean} type.remoteDeclined
128
+ * @property {String} id
129
+ * @memberof Meeting
130
+ */
131
+ /**
132
+ * Meeting Started Sharing Local Event
133
+ * Emitted when this member starts sharing
134
+ * @event meeting:startedSharingLocal
135
+ * @instance
136
+ * @type {Object}
137
+ * @memberof Meeting
138
+ */
139
+ /**
140
+ * Meeting Stopped Sharing Local Event
141
+ * Emitted when this member stops sharing
142
+ * @event meeting:stoppedSharingLocal
143
+ * @instance
144
+ * @type {Object}
145
+ * @memberof Meeting
146
+ */
147
+ /**
148
+ * Meeting Started Sharing Remote Event
149
+ * Emitted when remote sharing starts
150
+ * @event meeting:startedSharingRemote
151
+ * @instance
152
+ * @type {Object}
153
+ * @property {Boolean} memberId id of the meeting member that started screen share
154
+ * @memberof Meeting
155
+ */
156
+ /**
157
+ * Meeting Stopped Sharing Remote Event
158
+ * Emitted when remote screen sharing ends
159
+ * @event meeting:stoppedSharingRemote
160
+ * @instance
161
+ * @type {Object}
162
+ * @memberof Meeting
163
+ */
164
+ /**
165
+ * Meeting Locked Event
166
+ * Emitted when a meeting is locked
167
+ * @event meeting:locked
168
+ * @instance
169
+ * @type {Object}
170
+ * @property {Object} info
171
+ * @memberof Meeting
172
+ */
173
+ /**
174
+ * Meeting Unlocked Event
175
+ * Emitted when a meeting is unlocked
176
+ * @event meeting:unlocked
177
+ * @instance
178
+ * @type {Object}
179
+ * @property {Object} info
180
+ * @memberof Meeting
181
+ */
182
+ /**
183
+ * Meeting Actions Update Event
184
+ * Emitted when a user can take actions on a meeting such as lock, unlock, assign host
185
+ * @event meeting:actionsUpdate
186
+ * @instance
187
+ * @type {Object}
188
+ * @property {Boolean} canLock
189
+ * @property {Boolean} canUnlock
190
+ * @property {Boolean} canAssignHost
191
+ * @memberof Meeting
192
+ */
193
+ /**
194
+ * Meeting Unmuted By Others Event
195
+ * Emitted when a member is unmuted by another member
196
+ * @event meeting:self:unmutedByOthers
197
+ * @instance
198
+ * @type {Object}
199
+ * @property {Object} payload
200
+ * @memberof Meeting
201
+ */
202
+ /**
203
+ * Meeting Muted By Others Event
204
+ * Emitted when a member is muted by another member
205
+ * @event meeting:self:mutedByOthers
206
+ * @instance
207
+ * @type {Object}
208
+ * @property {Object} payload
209
+ * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self
210
+ * @memberof Meeting
211
+ */
212
+ /**
213
+ * Meeting Muted By Others Event
214
+ * Emitted when the host(moderator)/co-host requests a user to unmute
215
+ * @event meeting:self:requestedToUnmute
216
+ * @instance
217
+ * @type {Object}
218
+ * @property {Object} payload
219
+ * @memberof Meeting
220
+ */
221
+ /**
222
+ * Meeting Self Guest Admitted Event
223
+ * Emitted when a joined user get admitted to the meeting by another member or host
224
+ * @event meeting:self:guestAdmitted
225
+ * @instance
226
+ * @type {Object}
227
+ * @property {Object} payload
228
+ * @memberof Meeting
229
+ */
230
+ /**
231
+ * Meeting Self Lobby Waiting Event
232
+ * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin
233
+ * @event meeting:self:lobbyWaiting
234
+ * @instance
235
+ * @type {Object}
236
+ * @property {Object} reason Reason why user left the meeting
237
+ * @memberof Meeting
238
+ */
239
+ /**
240
+ * Meeting Self Left State
241
+ * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again
242
+ * @event meeting:self:left
243
+ * @instance
244
+ * @type {Object}
245
+ * @property {Object} payload
246
+ * @memberof Meeting
247
+ */
248
+ /**
249
+ * Reconnection Starting Event
250
+ * Emitted when reconnection of media to the active meeting was successful
251
+ * @event meeting:reconnectionStarting
252
+ * @instance
253
+ * @memberof Meeting
254
+ */
255
+ /**
256
+ * Reconnection Success Event
257
+ * Emitted when reconnection of media to the active meeting was successful
258
+ * @event meeting:reconnectionSuccess
259
+ * @instance
260
+ * @type {Object}
261
+ * @property {Object} reconnect
262
+ * @memberof Meeting
263
+ */
264
+ /**
265
+ * Reconnection Failure Event
266
+ * Emitted when reconnection of media to the active meeting was successful
267
+ * @event meeting:reconnectionFailure
268
+ * @instance
269
+ * @type {Object}
270
+ * @property {Error} error
271
+ * @memberof Meeting
272
+ */
273
+ /**
274
+ * Meeting network quality event
275
+ * Emitted on each interval of retrieving stats Analyzer data
276
+ * @event network:quality
277
+ * @type {Object}
278
+ * @property {string} mediaType {video|audio}
279
+ * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold
280
+ * @memberof Meeting
281
+ */
282
+ /**
283
+ * @description Meeting is the crux of the plugin
284
+ * @export
285
+ * @class Meeting
286
+ */
287
+ export default class Meeting extends StatelessWebexPlugin {
288
+ attrs: any;
289
+ audio: any;
290
+ breakouts: any;
291
+ annotation: any;
292
+ conversationUrl: string;
293
+ correlationId: string;
294
+ destination: string;
295
+ destinationType: string;
296
+ deviceUrl: string;
297
+ hostId: string;
298
+ id: string;
299
+ isMultistream: boolean;
300
+ locusUrl: string;
301
+ mediaConnections: any[];
302
+ mediaId?: string;
303
+ meetingFiniteStateMachine: any;
304
+ meetingInfo: any;
305
+ meetingRequest: MeetingRequest;
306
+ members: Members;
307
+ options: object;
308
+ orgId: string;
309
+ owner: string;
310
+ partner: any;
311
+ policy: string;
312
+ reconnectionManager: ReconnectionManager;
313
+ resource: string;
314
+ roap: Roap;
315
+ roapSeq: number;
316
+ selfUrl?: string;
317
+ sipUri: string;
318
+ type: string;
319
+ userId: string;
320
+ video: any;
321
+ callEvents: any[];
322
+ deferJoin: Promise<any>;
323
+ dialInDeviceStatus: string;
324
+ dialInUrl: string;
325
+ dialOutDeviceStatus: string;
326
+ dialOutUrl: string;
327
+ fetchMeetingInfoTimeoutId: NodeJS.Timeout;
328
+ floorGrantPending: boolean;
329
+ hasJoinedOnce: boolean;
330
+ hasWebsocketConnected: boolean;
331
+ inMeetingActions: InMeetingActions;
332
+ isLocalShareLive: boolean;
333
+ isRoapInProgress: boolean;
334
+ isSharing: boolean;
335
+ keepAliveTimerId: NodeJS.Timeout;
336
+ lastVideoLayoutInfo: any;
337
+ locusInfo: any;
338
+ locusMediaRequest?: LocusMediaRequest;
339
+ mediaProperties: MediaProperties;
340
+ mediaRequestManagers: {
341
+ audio: MediaRequestManager;
342
+ video: MediaRequestManager;
343
+ screenShareAudio: MediaRequestManager;
344
+ screenShareVideo: MediaRequestManager;
345
+ };
346
+ meetingInfoFailureReason: string;
347
+ meetingInfoFailureCode?: number;
348
+ networkQualityMonitor: NetworkQualityMonitor;
349
+ networkStatus: string;
350
+ passwordStatus: string;
351
+ queuedMediaUpdates: any[];
352
+ recording: any;
353
+ remoteMediaManager: RemoteMediaManager | null;
354
+ recordingController: RecordingController;
355
+ controlsOptionsManager: ControlsOptionsManager;
356
+ requiredCaptcha: any;
357
+ receiveSlotManager: ReceiveSlotManager;
358
+ shareStatus: string;
359
+ statsAnalyzer: StatsAnalyzer;
360
+ transcription: Transcription;
361
+ updateMediaConnections: (mediaConnections: any[]) => void;
362
+ endCallInitJoinReq: any;
363
+ endJoinReqResp: any;
364
+ endLocalSDPGenRemoteSDPRecvDelay: any;
365
+ joinedWith: any;
366
+ locusId: any;
367
+ startCallInitJoinReq: any;
368
+ startJoinReqResp: any;
369
+ startLocalSDPGenRemoteSDPRecvDelay: any;
370
+ wirelessShare: any;
371
+ guest: any;
372
+ meetingJoinUrl: any;
373
+ meetingNumber: any;
374
+ meetingState: any;
375
+ permissionToken: any;
376
+ resourceId: any;
377
+ resourceUrl: string;
378
+ selfId: string;
379
+ state: any;
380
+ localAudioTrackMuteStateHandler: (event: TrackMuteEvent) => void;
381
+ localVideoTrackMuteStateHandler: (event: TrackMuteEvent) => void;
382
+ roles: any[];
383
+ environment: string;
384
+ namespace: string;
385
+ /**
386
+ * @param {Object} attrs
387
+ * @param {Object} options
388
+ * @constructor
389
+ * @memberof Meeting
390
+ */
391
+ constructor(attrs: any, options: object);
392
+ /**
393
+ * Fetches meeting information.
394
+ * @param {Object} options
395
+ * @param {String} [options.password] optional
396
+ * @param {String} [options.captchaCode] optional
397
+ * @public
398
+ * @memberof Meeting
399
+ * @returns {Promise}
400
+ */
401
+ fetchMeetingInfo({ password, captchaCode, extraParams, }: {
402
+ password?: string;
403
+ captchaCode?: string;
404
+ extraParams?: Record<string, any>;
405
+ }): Promise<void>;
406
+ /**
407
+ * Checks if the supplied password/host key is correct. It returns a promise with information whether the
408
+ * password and captcha code were correct or not.
409
+ * @param {String} password - this can be either a password or a host key, can be undefined if only captcha was required
410
+ * @param {String} captchaCode - can be undefined if captcha was not required by the server
411
+ * @public
412
+ * @memberof Meeting
413
+ * @returns {Promise<{isPasswordValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}
414
+ */
415
+ verifyPassword(password: string, captchaCode: string): Promise<{
416
+ isPasswordValid: boolean;
417
+ requiredCaptcha: any;
418
+ failureReason: string;
419
+ } | {
420
+ isPasswordValid: boolean;
421
+ requiredCaptcha: any;
422
+ failureReason: string;
423
+ }>;
424
+ /**
425
+ * Refreshes the captcha. As a result the meeting will have new captcha id, image and audio.
426
+ * If the refresh operation fails, meeting remains with the old captcha properties.
427
+ * @public
428
+ * @memberof Meeting
429
+ * @returns {Promise}
430
+ */
431
+ refreshCaptcha(): any;
432
+ /**
433
+ * Posts metrics event for this meeting. Allows the app to send Call Analyzer events.
434
+ * @param {String} eventName - Call Analyzer event, see eventType in src/metrics/config.ts for possible values
435
+ * @public
436
+ * @memberof Meeting
437
+ * @returns {Promise}
438
+ */
439
+ postMetrics(eventName: string): void;
440
+ /**
441
+ * Proxy function for all the listener set ups
442
+ * @returns {undefined}
443
+ * @private
444
+ * @memberof Meeting
445
+ */
446
+ private setUpLocusInfoListeners;
447
+ /**
448
+ * Set up the listeners for breakouts
449
+ * @returns {undefined}
450
+ * @private
451
+ * @memberof Meeting
452
+ */
453
+ setUpBreakoutsListener(): void;
454
+ /**
455
+ * Set up the locus info listener for meetings disconnected due to inactivity
456
+ * @returns {undefined}
457
+ * @private
458
+ * @memberof Meeting
459
+ */
460
+ private setUpLocusInfoMediaInactiveListener;
461
+ /**
462
+ * Set up the locus info listener for assign host permissions on a meeting
463
+ * @returns {undefined}
464
+ * @private
465
+ * @memberof Meeting
466
+ */
467
+ private setUpLocusInfoAssignHostListener;
468
+ /**
469
+ * Set up the internal locus info full state object listener
470
+ * @returns {undefined}
471
+ * @private
472
+ * @memberof Meeting
473
+ */
474
+ private setUpLocusFullStateListener;
475
+ /**
476
+ * get the metrics payload pre
477
+ * @param {Object} options
478
+ * @param {String} options.event
479
+ * @param {String} options.trackingId
480
+ * @param {Object} options.locus
481
+ * @param {Array} options.mediaConnections
482
+ * @param {Object} options.errors
483
+ * @returns {Object}
484
+ * @memberof Meeting
485
+ */
486
+ getAnalyzerMetricsPrePayload(options: {
487
+ type?: string;
488
+ event: string;
489
+ trackingId: string;
490
+ locus: object;
491
+ mediaConnections?: Array<any>;
492
+ errors?: object;
493
+ meetingLookupUrl?: string;
494
+ clientType?: any;
495
+ subClientType?: any;
496
+ [key: string]: any;
497
+ }): {};
498
+ /**
499
+ * Send the metrics to call-analyzer dashboard
500
+ * @param {Object} options
501
+ * @param {String} options.event
502
+ * @param {String} options.trackingId
503
+ * @param {Object} options.locus
504
+ * @param {Object} options.errors
505
+ * @returns {Promise}
506
+ * @private
507
+ * @memberof Meeting
508
+ */
509
+ private sendCallAnalyzerMetrics;
510
+ /**
511
+ * Send the metrics to Media Quality Analyzer dashboard
512
+ * @param {Object} options
513
+ * @param {String} options.event
514
+ * @param {String} options.trackingId
515
+ * @param {Object} options.locus
516
+ * @returns {Promise}
517
+ * @private
518
+ * @memberof Meeting
519
+ */
520
+ private sendMediaQualityAnalyzerMetrics;
521
+ /**
522
+ * sets the network status on meeting object
523
+ * @param {String} networkStatus
524
+ * @private
525
+ * @returns {undefined}
526
+ * @memberof Meeting
527
+ */
528
+ private setNetworkStatus;
529
+ /**
530
+ * Set up the locus info self listener
531
+ * update self value for members and updates the member
532
+ * notifies consumer with members:self:update {activeSelfId endedSelfId}
533
+ * @returns {undefined}
534
+ * @private
535
+ * @memberof Meeting
536
+ */
537
+ private setUpLocusSelfListener;
538
+ /**
539
+ * Notify any changes on the pstn devices
540
+ * @param {Object} payload
541
+ * @returns {undefined}
542
+ * @private
543
+ * @memberof Meeting
544
+ */
545
+ private pstnUpdate;
546
+ /**
547
+ * Set up the locus info host listener
548
+ * update host value for members and updates the member
549
+ * notifies consumer with members:host:update: {activeHostId, endedHostId}
550
+ * @returns {undefined}
551
+ * @private
552
+ * @memberof Meeting
553
+ */
554
+ private setUpLocusHostListener;
555
+ /**
556
+ * Set up the locus info participants update listener
557
+ * update members collection value for members
558
+ * notifies consumer with members:update
559
+ * @returns {undefined}
560
+ * @private
561
+ * @memberof Meeting
562
+ */
563
+ private setUpLocusParticipantsListener;
564
+ /**
565
+ * Set up the locus info recording update listener
566
+ * update recording value for the meeting
567
+ * notifies consumer with:
568
+ * meeting:recording:started
569
+ * meeting:recording:stopped
570
+ * meeting:recording:paused
571
+ * meeting:recording:resumed
572
+ *
573
+ * Set up the locus info meeeting container listener
574
+ * update meetingContainerUrl value for the meeting
575
+ * notifies consumer with:
576
+ * meeting:meetingContainer:update
577
+ *
578
+ * @returns {undefined}
579
+ * @private
580
+ * @memberof Meeting
581
+ */
582
+ private setupLocusControlsListener;
583
+ /**
584
+ * Set up the locus info media shares listener
585
+ * update content and whiteboard sharing id value for members, and updates the member
586
+ * notifies consumer with members:content:update {activeContentSharingId, endedContentSharingId}
587
+ * @returns {undefined}
588
+ * @private
589
+ * @memberof Meeting
590
+ */
591
+ private setUpLocusMediaSharesListener;
592
+ /**
593
+ * Set up the locus info url listener
594
+ * update locus_url value for members
595
+ * @returns {undefined}
596
+ * @private
597
+ * @memberof Meeting
598
+ */
599
+ private setUpLocusUrlListener;
600
+ /**
601
+ * Set up the locus info service link listener
602
+ * update the locusInfo for recording controller
603
+ * does not currently re-emit the event as it's internal only
604
+ * payload is unused
605
+ * @returns {undefined}
606
+ * @private
607
+ * @memberof Meeting
608
+ */
609
+ private setUpLocusServicesListener;
610
+ /**
611
+ * Set up the locus info meeting info listener
612
+ * @returns {undefined}
613
+ * @private
614
+ * @memberof meeting
615
+ */
616
+ private setUpLocusInfoMeetingInfoListener;
617
+ /**
618
+ * Handles a data channel URL change
619
+ * @param {String} datachannelUrl
620
+ * @returns {void}
621
+ */
622
+ handleDataChannelUrlChange(datachannelUrl: any): void;
623
+ /**
624
+ * Set up the locus info embedded apps listener
625
+ * @returns {undefined}
626
+ * @private
627
+ * @memberof meeting
628
+ */
629
+ private setUpLocusEmbeddedAppsListener;
630
+ /**
631
+ * Internal function to listen to the self object changes
632
+ * @returns {undefined}
633
+ * @private
634
+ * @memberof Meeting
635
+ */
636
+ private setUpLocusInfoSelfListener;
637
+ /**
638
+ * Add LocusInfo nested object listeners (from child to parent)
639
+ * @returns {undefined}
640
+ * @private
641
+ * @memberof Meeting
642
+ */
643
+ private setUpLocusInfoMeetingListener;
644
+ /**
645
+ * Set meeting values rather than events
646
+ * @param {Object} object
647
+ * @returns {undefined}
648
+ * @private
649
+ * @memberof Meeting
650
+ * // TODO: is this function necessary?
651
+ */
652
+ private updateMeetingObject;
653
+ /**
654
+ * Invite a guest to the call that isn't normally part of this call
655
+ * @param {Object} invitee
656
+ * @param {String} invitee.emailAddress
657
+ * @param {String} invitee.email
658
+ * @param {String} invitee.phoneNumber
659
+ * @param {Boolean} [alertIfActive]
660
+ * @returns {Promise} see #members.addMember
661
+ * @public
662
+ * @memberof Meeting
663
+ */
664
+ invite(invitee: {
665
+ emailAddress: string;
666
+ email: string;
667
+ phoneNumber: string;
668
+ }, alertIfActive?: boolean): any;
669
+ /**
670
+ * Cancel an outgoing phone call invitation made during a meeting
671
+ * @param {Object} invitee
672
+ * @param {String} invitee.phoneNumber
673
+ * @returns {Promise} see #members.cancelPhoneInvite
674
+ * @public
675
+ * @memberof Meeting
676
+ */
677
+ cancelPhoneInvite(invitee: {
678
+ phoneNumber: string;
679
+ }): any;
680
+ /**
681
+ * Admit the guest(s) to the call once they are waiting.
682
+ * If the host/cohost is in a breakout session, the locus url
683
+ * of the session must be provided as the authorizingLocusUrl.
684
+ * Regardless of host/cohost location, the locus Id (lid) in
685
+ * the path should be the locus Id of the main, which means the
686
+ * locus url of the api call must be from the main session.
687
+ * If these loucs urls are not provided, the function will do the check.
688
+ * @param {Array} memberIds
689
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
690
+ * @returns {Promise} see #members.admitMembers
691
+ * @public
692
+ * @memberof Meeting
693
+ */
694
+ admit(memberIds: Array<any>, sessionLocusUrls?: {
695
+ authorizingLocusUrl: string;
696
+ mainLocusUrl: string;
697
+ }): any;
698
+ /**
699
+ * Remove the member from the meeting, boot them
700
+ * @param {String} memberId
701
+ * @returns {Promise} see #members.removeMember
702
+ * @public
703
+ * @memberof Meeting
704
+ */
705
+ remove(memberId: string): any;
706
+ /**
707
+ * Mute another member from the meeting
708
+ * @param {String} memberId
709
+ * @param {Boolean} mute
710
+ * @returns {Promise} see #members.muteMember
711
+ * @public
712
+ * @memberof Meeting
713
+ */
714
+ mute(memberId: string, mute?: boolean): any;
715
+ /**
716
+ * Transfer the moderator role to another eligible member
717
+ * @param {String} memberId
718
+ * @param {Boolean} moderator
719
+ * @returns {Promise} see #members.transferHostToMember
720
+ * @public
721
+ * @memberof Meeting
722
+ */
723
+ transfer(memberId: string, moderator?: boolean): any;
724
+ /**
725
+ * Reference to the Members object
726
+ * @returns {Members}
727
+ * @public
728
+ * @memberof Meeting
729
+ */
730
+ getMembers(): Members;
731
+ /**
732
+ * Truthy when a meeting has an audio connection established
733
+ * @returns {Boolean} true if meeting audio is connected otherwise false
734
+ * @public
735
+ * @memberof Meeting
736
+ */
737
+ isAudioConnected(): boolean;
738
+ /**
739
+ * Convenience function to tell whether a meeting is muted
740
+ * @returns {Boolean} if meeting audio muted or not
741
+ * @public
742
+ * @memberof Meeting
743
+ */
744
+ isAudioMuted(): any;
745
+ /**
746
+ * Convenience function to tell if the end user last changed the audio state
747
+ * @returns {Boolean} if audio was manipulated by the end user
748
+ * @public
749
+ * @memberof Meeting
750
+ */
751
+ isAudioSelf(): any;
752
+ /**
753
+ * Truthy when a meeting has a video connection established
754
+ * @returns {Boolean} true if meeting video connected otherwise false
755
+ * @public
756
+ * @memberof Meeting
757
+ */
758
+ isVideoConnected(): boolean;
759
+ /**
760
+ * Convenience function to tell whether video is muted
761
+ * @returns {Boolean} if meeting video is muted or not
762
+ * @public
763
+ * @memberof Meeting
764
+ */
765
+ isVideoMuted(): any;
766
+ /**
767
+ * Convenience function to tell whether the end user changed the video state
768
+ * @returns {Boolean} if meeting video is muted or not
769
+ * @public
770
+ * @memberof Meeting
771
+ */
772
+ isVideoSelf(): any;
773
+ /**
774
+ * Sets the meeting info on the class instance
775
+ * @param {Object} meetingInfo
776
+ * @param {Object} meetingInfo.body
777
+ * @param {String} meetingInfo.body.conversationUrl
778
+ * @param {String} meetingInfo.body.locusUrl
779
+ * @param {String} meetingInfo.body.sipUri
780
+ * @param {Object} meetingInfo.body.owner
781
+ * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)
782
+ * @returns {undefined}
783
+ * @private
784
+ * @memberof Meeting
785
+ */
786
+ parseMeetingInfo(meetingInfo: {
787
+ body: {
788
+ conversationUrl: string;
789
+ locusUrl: string;
790
+ sipUri: string;
791
+ owner: object;
792
+ };
793
+ } | any, destination?: object | string | null): void;
794
+ /**
795
+ * Sets the sip uri on the class instance
796
+ * uses meeting info as precedence
797
+ * @param {String} sipUri
798
+ * @returns {undefined}
799
+ * @private
800
+ * @memberof Meeting
801
+ */
802
+ setSipUri(sipUri: string): void;
803
+ /**
804
+ * Set the locus info the class instance
805
+ * @param {Object} locus
806
+ * @param {Array} locus.mediaConnections
807
+ * @param {String} locus.locusUrl
808
+ * @param {String} locus.locusId
809
+ * @param {String} locus.mediaId
810
+ * @param {Object} locus.host
811
+ * @todo change name to genertic parser
812
+ * @returns {undefined}
813
+ * @private
814
+ * @memberof Meeting
815
+ */
816
+ setLocus(locus: {
817
+ mediaConnections: Array<any>;
818
+ locusUrl: string;
819
+ locusId: string;
820
+ mediaId: string;
821
+ host: object;
822
+ } | any): void;
823
+ /**
824
+ * Upload logs for the current meeting
825
+ * @param {object} options file name and function name
826
+ * @returns {undefined}
827
+ * @public
828
+ * @memberof Meeting
829
+ */
830
+ uploadLogs(options?: object): void;
831
+ /**
832
+ * Removes remote audio and video stream on the class instance and triggers an event
833
+ * to developers
834
+ * @returns {undefined}
835
+ * @public
836
+ * @memberof Meeting
837
+ * @deprecated after v1.89.3
838
+ */
839
+ unsetRemoteStream(): void;
840
+ /**
841
+ * Removes remote audio, video and share tracks from class instance's mediaProperties
842
+ * @returns {undefined}
843
+ */
844
+ unsetRemoteTracks(): void;
845
+ /**
846
+ * Removes the remote stream on the class instance and triggers an event
847
+ * to developers
848
+ * @returns {undefined}
849
+ * @public
850
+ * @memberof Meeting
851
+ * @deprecated after v1.89.3
852
+ */
853
+ closeRemoteStream(): void;
854
+ /**
855
+ * Removes the remote tracks on the class instance and triggers an event
856
+ * to developers
857
+ * @returns {undefined}
858
+ * @memberof Meeting
859
+ */
860
+ closeRemoteTracks(): Promise<[any, any, any]>;
861
+ /**
862
+ * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
863
+ * @returns {undefined}
864
+ * @private
865
+ * @memberof Meeting
866
+ */
867
+ private sendLocalMediaReadyEvent;
868
+ /**
869
+ * Sets the local audio track on the class and emits an event to the developer
870
+ * @param {MediaStreamTrack} rawAudioTrack
871
+ * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
872
+ * @returns {undefined}
873
+ * @private
874
+ * @memberof Meeting
875
+ */
876
+ private setLocalAudioTrack;
877
+ /**
878
+ * Sets the local video track on the class and emits an event to the developer
879
+ * @param {MediaStreamTrack} rawVideoTrack
880
+ * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
881
+ * @returns {undefined}
882
+ * @private
883
+ * @memberof Meeting
884
+ */
885
+ private setLocalVideoTrack;
886
+ /**
887
+ * Sets the local media stream on the class and emits an event to the developer
888
+ * @param {Stream} localStream the local media stream
889
+ * @returns {undefined}
890
+ * @public
891
+ * @memberof Meeting
892
+ */
893
+ setLocalTracks(localStream: any): void;
894
+ /**
895
+ * Sets the local media stream on the class and emits an event to the developer
896
+ * @param {MediaStreamTrack} rawLocalShareTrack the local share media track
897
+ * @returns {undefined}
898
+ * @public
899
+ * @memberof Meeting
900
+ */
901
+ setLocalShareTrack(rawLocalShareTrack: MediaStreamTrack | null): void;
902
+ /**
903
+ * Closes the local stream from the class and emits an event to the developer
904
+ * @returns {undefined}
905
+ * @event media:stopped
906
+ * @public
907
+ * @memberof Meeting
908
+ */
909
+ closeLocalStream(): any;
910
+ /**
911
+ * Closes the local stream from the class and emits an event to the developer
912
+ * @returns {undefined}
913
+ * @event media:stopped
914
+ * @public
915
+ * @memberof Meeting
916
+ */
917
+ closeLocalShare(): any;
918
+ /**
919
+ * Removes the local stream from the class and emits an event to the developer
920
+ * @returns {undefined}
921
+ * @public
922
+ * @memberof Meeting
923
+ */
924
+ unsetLocalVideoTrack(): void;
925
+ /**
926
+ * Removes the local share from the class and emits an event to the developer
927
+ * @returns {undefined}
928
+ * @public
929
+ * @memberof Meeting
930
+ */
931
+ unsetLocalShareTrack(): void;
932
+ /**
933
+ * sets up listner for mercury event
934
+ * @returns {undefined}
935
+ * @public
936
+ * @memberof Meeting
937
+ */
938
+ setMercuryListener(): void;
939
+ /**
940
+ * Close the peer connections and remove them from the class.
941
+ * Cleanup any media connection related things.
942
+ *
943
+ * @returns {Promise}
944
+ * @public
945
+ * @memberof Meeting
946
+ */
947
+ closePeerConnections(): Promise<void>;
948
+ /**
949
+ * Unsets the peer connections on the class
950
+ * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
951
+ * @returns {undefined}
952
+ * @public
953
+ * @memberof Meeting
954
+ */
955
+ unsetPeerConnections(): void;
956
+ /**
957
+ * Convenience method to set the correlation id for the Meeting
958
+ * @param {String} id correlation id to set on the class
959
+ * @returns {undefined}
960
+ * @private
961
+ * @memberof Meeting
962
+ */
963
+ private setCorrelationId;
964
+ /**
965
+ * Mute the audio for a meeting
966
+ * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
967
+ * @public
968
+ * @memberof Meeting
969
+ */
970
+ muteAudio(): any;
971
+ /**
972
+ * Unmute meeting audio
973
+ * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set
974
+ * @public
975
+ * @memberof Meeting
976
+ */
977
+ unmuteAudio(): any;
978
+ /**
979
+ * Mute the video for a meeting
980
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
981
+ * @public
982
+ * @memberof Meeting
983
+ */
984
+ muteVideo(): any;
985
+ /**
986
+ * Unmute meeting video
987
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
988
+ * @public
989
+ * @memberof Meeting
990
+ */
991
+ unmuteVideo(): any;
992
+ /**
993
+ * Shorthand function to join AND set up media
994
+ * @param {Object} options - options to join with media
995
+ * @param {JoinOptions} [options.joinOptions] - see #join()
996
+ * @param {MediaDirection} options.mediaSettings - see #addMedia()
997
+ * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
998
+ * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
999
+ * @public
1000
+ * @memberof Meeting
1001
+ * @example
1002
+ * joinWithMedia({
1003
+ * joinOptions: {resourceId: 'resourceId' },
1004
+ * mediaSettings: {
1005
+ * sendAudio: true,
1006
+ * sendVideo: true,
1007
+ * sendShare: false,
1008
+ * receiveVideo:true,
1009
+ * receiveAudio: true,
1010
+ * receiveShare: true
1011
+ * }
1012
+ * audioVideoOptions: {
1013
+ * audio: 'audioDeviceId',
1014
+ * video: 'videoDeviceId'
1015
+ * }})
1016
+ */
1017
+ joinWithMedia(options?: {
1018
+ joinOptions?: any;
1019
+ mediaSettings: any;
1020
+ audioVideoOptions?: any;
1021
+ }): any;
1022
+ /**
1023
+ * Initiates the reconnection of the media in the meeting
1024
+ *
1025
+ * @param {object} options
1026
+ * @returns {Promise} resolves with {reconnect} or errors with {error}
1027
+ * @public
1028
+ * @memberof Meeting
1029
+ */
1030
+ reconnect(options?: object): any;
1031
+ /**
1032
+ * Check if the meeting supports the Webex Assistant feature
1033
+ * @returns {boolean}
1034
+ * @throws TranscriptionNotSupportedError
1035
+ */
1036
+ isTranscriptionSupported(): boolean;
1037
+ /**
1038
+ * Check if the meeting supports the Reactions
1039
+ * @returns {boolean}
1040
+ */
1041
+ isReactionsSupported(): boolean;
1042
+ /**
1043
+ * Monitor the Low-Latency Mercury (LLM) web socket connection on `onError` and `onClose` states
1044
+ * @private
1045
+ * @returns {void}
1046
+ */
1047
+ private monitorTranscriptionSocketConnection;
1048
+ /**
1049
+ * Request for a WebSocket Url, open and monitor the WebSocket connection
1050
+ * @private
1051
+ * @returns {Promise<void>} a promise to open the WebSocket connection
1052
+ */
1053
+ private receiveTranscription;
1054
+ /**
1055
+ * Callback called when a relay event is received from meeting LLM Connection
1056
+ * @param {RelayEvent} e Event object coming from LLM Connection
1057
+ * @private
1058
+ * @returns {void}
1059
+ */
1060
+ private processRelayEvent;
1061
+ /**
1062
+ * stop recieving Transcription by closing
1063
+ * the web socket connection properly
1064
+ * @returns {void}
1065
+ */
1066
+ stopReceivingTranscription(): void;
1067
+ /**
1068
+ * triggers an event to notify that the user
1069
+ * will not receive any more transcription
1070
+ * @private
1071
+ * @returns{void}
1072
+ */
1073
+ private triggerStopReceivingTranscriptionEvent;
1074
+ /**
1075
+ * Specify joining via audio (option: pstn), video, screenshare
1076
+ * @param {JoinOptions} options A configurable options object for joining a meeting
1077
+ * @returns {Promise} the join response
1078
+ * @public
1079
+ * @memberof Meeting
1080
+ * Scenario A: Joining own claimed personal meeting room
1081
+ * Scenario B: Joining other's claimed personal meeting room, do pass pin (if desired to join as host, or nullify), do pass moderator
1082
+ * Scenario C: Joining an unclaimed personal meeting room, -do not- pass pin or moderator on first try, -do- pass pin and moderator
1083
+ * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
1084
+ * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
1085
+ */
1086
+ join(options?: any): any;
1087
+ /**
1088
+ * Connects to low latency mercury and reconnects if the address has changed
1089
+ * It will also disconnect if called when the meeting has ended
1090
+ * @param {String} datachannelUrl
1091
+ * @returns {Promise}
1092
+ */
1093
+ updateLLMConnection(): Promise<any>;
1094
+ /**
1095
+ * Use phone for meeting audio
1096
+ * @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used
1097
+ * @returns {Promise} Resolves once the dial-in or dial-out request has completed, or rejects if it failed
1098
+ * @public
1099
+ * @memberof Meeting
1100
+ */
1101
+ usePhoneAudio(phoneNumber: string): Promise<any>;
1102
+ /**
1103
+ * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1104
+ * @param {String} pstnStatus
1105
+ * @returns {Boolean}
1106
+ * @private
1107
+ * @memberof Meeting
1108
+ */
1109
+ private isPhoneProvisioned;
1110
+ /**
1111
+ * Enable dial-in for audio
1112
+ * @returns {Promise} Resolves once the dial-in request has completed, or rejects if it failed
1113
+ * @private
1114
+ * @memberof Meeting
1115
+ */
1116
+ private dialInPstn;
1117
+ /**
1118
+ * Enable dial-out for audio
1119
+ * @param {String} phoneNumber Phone number to dial out to
1120
+ * @returns {Promise} Resolves once the dial-out request has completed (it doesn't wait for the user to answer the phone), or rejects if it failed
1121
+ * @private
1122
+ * @memberof Meeting
1123
+ */
1124
+ private dialOutPstn;
1125
+ /**
1126
+ * Disconnect meeting audio via phone.
1127
+ * @returns {Promise} Resolves once the phone audio disconnection has completed
1128
+ * @public
1129
+ * @memberof Meeting
1130
+ * @returns {Promise}
1131
+ */
1132
+ disconnectPhoneAudio(): Promise<[any, any]>;
1133
+ /**
1134
+ * Moves the call to the specified resourceId
1135
+ * @param {String} resourceId
1136
+ * @returns {Promise} once the move has been completed
1137
+ * @public
1138
+ * @memberof Meeting
1139
+ */
1140
+ moveTo(resourceId: string): any;
1141
+ /**
1142
+ * Moves the call from the specified resourceId, back to computer
1143
+ * @param {String} resourceId
1144
+ * @returns {Promise} once the move has been completed
1145
+ * @public
1146
+ * @memberof Meeting
1147
+ */
1148
+ moveFrom(resourceId: string): any;
1149
+ /**
1150
+ * Get local media streams based on options passed
1151
+ *
1152
+ * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1153
+ *
1154
+ * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1155
+ * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1156
+ * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1157
+ * @returns {Promise} see #Media.getUserMedia
1158
+ * @public
1159
+ * @todo should be static, or moved so can be called outside of a meeting
1160
+ * @memberof Meeting
1161
+ */
1162
+ getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1163
+ /**
1164
+ * Checks if the machine has at least one audio or video device
1165
+ * @param {Object} options
1166
+ * @param {Boolean} options.sendAudio
1167
+ * @param {Boolean} options.sendVideo
1168
+ * @returns {Object}
1169
+ * @memberof Meetings
1170
+ */
1171
+ getSupportedDevices: ({ sendAudio, sendVideo, }: {
1172
+ sendAudio: boolean;
1173
+ sendVideo: boolean;
1174
+ }) => any;
1175
+ /**
1176
+ * Get the devices from the Media module
1177
+ * @returns {Promise} resolves to an array of DeviceInfo
1178
+ * @memberof Meetings
1179
+ */
1180
+ getDevices: () => any;
1181
+ /**
1182
+ * Handles ROAP_FAILURE event from the webrtc media connection
1183
+ *
1184
+ * @param {Error} error
1185
+ * @returns {void}
1186
+ */
1187
+ handleRoapFailure: (error: any) => void;
1188
+ setupMediaConnectionListeners: () => void;
1189
+ /**
1190
+ * Registers for all required StatsAnalyzer events
1191
+ * @private
1192
+ * @returns {void}
1193
+ * @memberof Meetings
1194
+ */
1195
+ setupStatsAnalyzerEventHandlers: () => void;
1196
+ getMediaConnectionDebugId(): string;
1197
+ /**
1198
+ * Creates a webrtc media connection
1199
+ *
1200
+ * @param {Object} turnServerInfo TURN server information
1201
+ * @param {BundlePolicy} [bundlePolicy] Bundle policy settings
1202
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1203
+ */
1204
+ createMediaConnection(turnServerInfo: any, bundlePolicy: any): any;
1205
+ /**
1206
+ * Listens for an event emitted by eventEmitter and emits it from the meeting object
1207
+ *
1208
+ * @private
1209
+ * @param {*} eventEmitter object from which to forward the event
1210
+ * @param {*} eventTypeToForward which event type to listen on and to forward
1211
+ * @param {string} meetingEventType event type to be used in the event emitted from the meeting object
1212
+ * @returns {void}
1213
+ */
1214
+ forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1215
+ /**
1216
+ * Specify joining via audio (option: pstn), video, screenshare
1217
+ * @param {Object} options A configurable options object for joining a meeting
1218
+ * @param {Object} options.resourceId pass the deviceId
1219
+ * @param {MediaDirection} options.mediaSettings pass media options
1220
+ * @param {MediaStream} options.localStream
1221
+ * @param {MediaStream} options.localShare
1222
+ * @param {BundlePolicy} options.bundlePolicy bundle policy for multistream meetings
1223
+ * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1224
+ * @returns {Promise}
1225
+ * @public
1226
+ * @memberof Meeting
1227
+ */
1228
+ addMedia(options?: any): Promise<any>;
1229
+ /**
1230
+ * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1231
+ * @returns {Boolean}
1232
+ */
1233
+ canUpdateMedia(): boolean;
1234
+ /**
1235
+ * Enqueues a media update operation.
1236
+ * @param {String} mediaUpdateType one of MEDIA_UPDATE_TYPE values
1237
+ * @param {Object} options
1238
+ * @returns {Promise}
1239
+ * @private
1240
+ * @memberof Meeting
1241
+ */
1242
+ private enqueueMediaUpdate;
1243
+ /**
1244
+ * emits event when the negotation is completed
1245
+ * @returns {void}
1246
+ * @private
1247
+ * @memberof Meeting
1248
+ */
1249
+ mediaNegotiatedEvent: () => void;
1250
+ /**
1251
+ * Checks if there are any queued media updates and runs the first one from
1252
+ * the queue if we are in a state that allows doing that.
1253
+ * @returns {undefined}
1254
+ * @public
1255
+ * @memberof Meeting
1256
+ */
1257
+ processNextQueuedMediaUpdate: () => void;
1258
+ /**
1259
+ * A confluence of updateAudio, updateVideo, and updateShare
1260
+ * this function re-establishes all of the media streams with new options
1261
+ * @param {Object} options
1262
+ * @param {MediaStream} options.localStream
1263
+ * @param {MediaStream} options.localShare
1264
+ * @param {MediaDirection} options.mediaSettings
1265
+ * @returns {Promise}
1266
+ * @public
1267
+ * @memberof Meeting
1268
+ */
1269
+ updateMedia(options?: {
1270
+ localStream?: MediaStream;
1271
+ localShare?: MediaStream;
1272
+ mediaSettings?: any;
1273
+ }): any;
1274
+ /**
1275
+ * Update the main audio track with new parameters
1276
+ *
1277
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1278
+ *
1279
+ * @param {Object} options
1280
+ * @param {boolean} options.sendAudio
1281
+ * @param {boolean} options.receiveAudio
1282
+ * @param {MediaStream} options.stream Stream that contains the audio track to update
1283
+ * @returns {Promise}
1284
+ * @public
1285
+ * @memberof Meeting
1286
+ */
1287
+ updateAudio(options: {
1288
+ sendAudio: boolean;
1289
+ receiveAudio: boolean;
1290
+ stream: MediaStream;
1291
+ }): Promise<unknown>;
1292
+ /**
1293
+ * Update the main video track with new parameters
1294
+ *
1295
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1296
+ *
1297
+ * @param {Object} options
1298
+ * @param {boolean} options.sendVideo
1299
+ * @param {boolean} options.receiveVideo
1300
+ * @param {MediaStream} options.stream Stream that contains the video track to update
1301
+ * @returns {Promise}
1302
+ * @public
1303
+ * @memberof Meeting
1304
+ */
1305
+ updateVideo(options: {
1306
+ sendVideo: boolean;
1307
+ receiveVideo: boolean;
1308
+ stream: MediaStream;
1309
+ }): Promise<unknown>;
1310
+ /**
1311
+ * Internal function when stopping a share stream, cleanup
1312
+ * @param {boolean} sendShare
1313
+ * @param {boolean} previousShareStatus
1314
+ * @returns {Promise}
1315
+ * @private
1316
+ * @memberof Meeting
1317
+ */
1318
+ private checkForStopShare;
1319
+ /**
1320
+ * Update the share streams, can be used to start sharing
1321
+ *
1322
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1323
+ *
1324
+ * @param {Object} options
1325
+ * @param {boolean} options.sendShare
1326
+ * @param {boolean} options.receiveShare
1327
+ * @returns {Promise}
1328
+ * @public
1329
+ * @memberof Meeting
1330
+ */
1331
+ updateShare(options: {
1332
+ sendShare?: boolean;
1333
+ receiveShare?: boolean;
1334
+ stream?: any;
1335
+ skipSignalingCheck?: boolean;
1336
+ }): Promise<unknown>;
1337
+ /**
1338
+ * Do all the attach media pre set up before executing the actual attach
1339
+ * @param {MediaStream} localStream
1340
+ * @param {MediaStream} localShare
1341
+ * @param {MediaDirection} mediaSettings
1342
+ * @returns {undefined}
1343
+ * @private
1344
+ * @memberof Meeting
1345
+ */
1346
+ private preMedia;
1347
+ /**
1348
+ * Acknowledge the meeting, outgoing or incoming
1349
+ * @param {String} type
1350
+ * @returns {Promise} resolve {message, ringing, response}
1351
+ * @public
1352
+ * @memberof Meeting
1353
+ */
1354
+ acknowledge(type: string): Promise<{
1355
+ response: any;
1356
+ }> | Promise<{
1357
+ message: string;
1358
+ }>;
1359
+ /**
1360
+ * Decline this meeting
1361
+ * @param {String} reason
1362
+ * @returns {undefined}
1363
+ * @public
1364
+ * @memberof Meeting
1365
+ */
1366
+ decline(reason: string): any;
1367
+ /**
1368
+ * Leave the current meeting
1369
+ * @param {Object} options leave options
1370
+ * @param {String} options.resourceId the device with which to leave from, empty if just the computer
1371
+ * @returns {Promise}
1372
+ * @public
1373
+ * @memberof Meeting
1374
+ */
1375
+ leave(options?: {
1376
+ resourceId?: string;
1377
+ reason?: any;
1378
+ }): any;
1379
+ /**
1380
+ * Start sharing whiteboard given channelUrl
1381
+ * @param {string} channelUrl whiteboard url
1382
+ * @param {String} resourceToken token created by authorize media injector
1383
+ * @returns {Promise}
1384
+ * @public
1385
+ * @memberof Meeting
1386
+ */
1387
+ startWhiteboardShare(channelUrl: string, resourceToken: string): any;
1388
+ /**
1389
+ * Stop sharing whiteboard given channelUrl
1390
+ * @param {string} channelUrl whiteboard url
1391
+ * @returns {Promise}
1392
+ * @public
1393
+ * @memberof Meeting
1394
+ */
1395
+ stopWhiteboardShare(channelUrl: string): any;
1396
+ /**
1397
+ * Sends a request to Locus to obtain the screen share floor
1398
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1399
+ * @private
1400
+ * @memberof Meeting
1401
+ */
1402
+ private requestScreenShareFloor;
1403
+ /**
1404
+ * Stops the screen share
1405
+ * @returns {Promise} see #updateShare
1406
+ * @public
1407
+ * @memberof Meeting
1408
+ */
1409
+ stopShare(options?: {}): Promise<unknown>;
1410
+ /**
1411
+ * Sends a request to Locus to release the screen share floor.
1412
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1413
+ * @private
1414
+ * @memberof Meeting
1415
+ */
1416
+ private releaseScreenShareFloor;
1417
+ /**
1418
+ * Intiate a recording of this meeting
1419
+ * @returns {Promise}
1420
+ * @public
1421
+ * @memberof Meeting
1422
+ */
1423
+ startRecording(): Promise<any>;
1424
+ /**
1425
+ * set the mute on entry flag for participants if you're the host
1426
+ * @returns {Promise}
1427
+ * @param {boolean} enabled
1428
+ * @public
1429
+ * @memberof Meeting
1430
+ */
1431
+ setMuteOnEntry(enabled: boolean): Promise<any>;
1432
+ /**
1433
+ * set the disallow unmute flag for participants if you're the host
1434
+ * @returns {Promise}
1435
+ * @param {boolean} enabled
1436
+ * @public
1437
+ * @memberof Meeting
1438
+ */
1439
+ setDisallowUnmute(enabled: boolean): Promise<any>;
1440
+ /**
1441
+ * set the mute all flag for participants if you're the host
1442
+ * @returns {Promise}
1443
+ * @param {boolean} mutedEnabled
1444
+ * @param {boolean} disallowUnmuteEnabled
1445
+ * @param {boolean} muteOnEntryEnabled
1446
+ * @public
1447
+ * @memberof Meeting
1448
+ */
1449
+ setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
1450
+ /**
1451
+ * End the recording of this meeting
1452
+ * @returns {Promise}
1453
+ * @public
1454
+ * @memberof Meeting
1455
+ */
1456
+ stopRecording(): Promise<any>;
1457
+ /**
1458
+ * Pauses the recording of this meeting
1459
+ * @returns {Promise}
1460
+ * @public
1461
+ * @memberof Meeting
1462
+ */
1463
+ pauseRecording(): Promise<any>;
1464
+ /**
1465
+ * Resumes the recording of this meeting
1466
+ * @returns {Promise}
1467
+ * @public
1468
+ * @memberof Meeting
1469
+ */
1470
+ resumeRecording(): Promise<any>;
1471
+ /**
1472
+ * Locks the current meeting if possible
1473
+ * @returns {Promise}
1474
+ * @public
1475
+ * @memberof Meeting
1476
+ */
1477
+ lockMeeting(): any;
1478
+ /**
1479
+ * Unlocks the current meeting if possible
1480
+ * @returns {Promise}
1481
+ * @public
1482
+ * @memberof Meeting
1483
+ */
1484
+ unlockMeeting(): any;
1485
+ /**
1486
+ * Logs an error message and returns a rejected promise with same message
1487
+ * @param {String} message
1488
+ * @returns {Promise}
1489
+ * @private
1490
+ * @memberof Meeting
1491
+ */
1492
+ private rejectWithErrorLog;
1493
+ /**
1494
+ * Sends DTMF tones to the current meeting
1495
+ * @param {String} tones a string of one or more DTMF tones to send
1496
+ * @returns {Promise}
1497
+ * @public
1498
+ * @memberof Meeting
1499
+ */
1500
+ sendDTMF(tones: string): Promise<any>;
1501
+ /**
1502
+ * Sends request to change layout type for the current meeting for the specific participant/device only
1503
+ * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
1504
+ * @param {Object} renderInfo preferred dimensions for the remote main and content streams (server can ignore it)
1505
+ * @param {Object} renderInfo.main preferred dimensions for the remote main video stream
1506
+ * @param {Number} renderInfo.main.width preferred width of main video stream
1507
+ * @param {Number} renderInfo.main.height preferred height of main video stream
1508
+ * @param {Object} renderInfo.content preferred dimensions for the remote content share stream
1509
+ * @param {Number} renderInfo.content.width preferred width of content share stream
1510
+ * @param {Number} renderInfo.content.height preferred height of content share stream
1511
+ * @returns {Promise}
1512
+ * @public
1513
+ * @memberof Meeting
1514
+ */
1515
+ changeVideoLayout(layoutType?: string, renderInfo?: {
1516
+ main: {
1517
+ width: number;
1518
+ height: number;
1519
+ };
1520
+ content: {
1521
+ width: number;
1522
+ height: number;
1523
+ };
1524
+ }): any;
1525
+ /**
1526
+ * Sets the quality of the local video stream
1527
+ * @param {String} level {LOW|MEDIUM|HIGH}
1528
+ * @returns {Promise<MediaStream>} localStream
1529
+ */
1530
+ setLocalVideoQuality(level: string): any;
1531
+ /**
1532
+ * Sets the quality level of the remote incoming media
1533
+ * @param {String} level {LOW|MEDIUM|HIGH}
1534
+ * @returns {Promise}
1535
+ */
1536
+ setRemoteQualityLevel(level: string): any;
1537
+ /**
1538
+ * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1539
+ * @param {String} level {LOW|MEDIUM|HIGH}
1540
+ * @returns {Promise}
1541
+ * @deprecated After FHD support
1542
+ */
1543
+ setMeetingQuality(level: string): any;
1544
+ /**
1545
+ *
1546
+ * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1547
+ *
1548
+ * @param {Object} options parameter
1549
+ * @param {Boolean} options.sendAudio send audio from the display share
1550
+ * @param {Boolean} options.sendShare send video from the display share
1551
+ * @param {Object} options.sharePreferences
1552
+ * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1553
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1554
+ * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1555
+ * @returns {Promise}
1556
+ */
1557
+ shareScreen(options?: {
1558
+ sendAudio: boolean;
1559
+ sendShare: boolean;
1560
+ sharePreferences: {
1561
+ shareConstraints: MediaTrackConstraints;
1562
+ };
1563
+ }): any;
1564
+ /**
1565
+ * Functionality for when a share is ended.
1566
+ * @private
1567
+ * @memberof Meeting
1568
+ * @param {MediaStream} localShare
1569
+ * @returns {undefined}
1570
+ */
1571
+ private handleShareTrackEnded;
1572
+ /**
1573
+ * Emits the 'network:quality' event
1574
+ * 1 indicates an acceptable uplink network.
1575
+ * 0 indicates an unacceptable uplink network based on a predefined threshold
1576
+ * @returns {undefined}
1577
+ * @param {Object} res - payload of emitNetworkQuality
1578
+ * @property {string} mediaType {video|audio}
1579
+ * @property {number} networkQualityScore - {1|0}
1580
+ * @private
1581
+ * @memberof Meeting
1582
+ */
1583
+ private sendNetworkQualityEvent;
1584
+ /**
1585
+ * Handle logging the media
1586
+ * @param {Object} mediaProperties
1587
+ * @private
1588
+ * @returns {undefined}
1589
+ */
1590
+ private handleMediaLogging;
1591
+ /**
1592
+ * @param {string} typeMedia 'audio' or 'video'
1593
+ * @returns {undefined}
1594
+ */
1595
+ setStartSetupDelay(typeMedia: string): void;
1596
+ /**
1597
+ * @param {string} typeMedia 'audio' or 'video'
1598
+ * @returns {undefined}
1599
+ */
1600
+ setEndSetupDelay(typeMedia: string): void;
1601
+ /**
1602
+ * @param {string} typeMedia 'audio' or 'video'
1603
+ * @returns {string} duration between start and end of setup
1604
+ */
1605
+ getSetupDelayDuration(typeMedia: string): number;
1606
+ /**
1607
+ * @param {string} typeMedia 'audio' or 'video'
1608
+ * @returns {undefined}
1609
+ */
1610
+ setStartSendingMediaDelay(typeMedia: string): void;
1611
+ /**
1612
+ * @param {string} typeMedia 'audio' or 'video'
1613
+ * @returns {undefined}
1614
+ */
1615
+ setEndSendingMediaDelay(typeMedia: string): void;
1616
+ /**
1617
+ * @param {string} typeMedia 'audio' or 'video'
1618
+ * @returns {string} duration between join response and first media tx
1619
+ */
1620
+ getSendingMediaDelayDuration(typeMedia: string): number;
1621
+ /**
1622
+ *
1623
+ * @returns {undefined}
1624
+ */
1625
+ setStartLocalSDPGenRemoteSDPRecvDelay(): void;
1626
+ /**
1627
+ *
1628
+ * @returns {undefined}
1629
+ */
1630
+ setEndLocalSDPGenRemoteSDPRecvDelay(): void;
1631
+ /**
1632
+ *
1633
+ * @returns {string} duration between local SDP generation and remote SDP reception
1634
+ */
1635
+ getLocalSDPGenRemoteSDPRecvDelay(): number;
1636
+ /**
1637
+ *
1638
+ * @returns {undefined}
1639
+ */
1640
+ setStartCallInitJoinReq(): void;
1641
+ /**
1642
+ *
1643
+ * @returns {undefined}
1644
+ */
1645
+ setEndCallInitJoinReq(): void;
1646
+ /**
1647
+ *
1648
+ * @returns {string} duration between call initiate and sending join request to locus
1649
+ */
1650
+ getCallInitJoinReq(): number;
1651
+ /**
1652
+ *
1653
+ * @returns {undefined}
1654
+ */
1655
+ setStartJoinReqResp(): void;
1656
+ /**
1657
+ *
1658
+ * @returns {undefined}
1659
+ */
1660
+ setEndJoinReqResp(): void;
1661
+ /**
1662
+ *
1663
+ * @returns {string} duration between sending locus join request and receiving join response
1664
+ */
1665
+ getJoinReqResp(): number;
1666
+ /**
1667
+ *
1668
+ * @returns {string} duration between call initiate and successful locus join (even if it is in lobby)
1669
+ */
1670
+ getTotalJmt(): number;
1671
+ /**
1672
+ *
1673
+ * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1674
+ */
1675
+ getCurUserType(): "host" | "cohost" | "attendee";
1676
+ /**
1677
+ *
1678
+ * @returns {string} one of 'login-ci','unverified-guest', returns the login type of the current user
1679
+ */
1680
+ getCurLoginType(): "unverified-guest" | "login-ci";
1681
+ /**
1682
+ * End the current meeting for all
1683
+ * @returns {Promise}
1684
+ * @public
1685
+ * @memberof Meeting
1686
+ */
1687
+ endMeetingForAll(): any;
1688
+ /**
1689
+ * clear the meeting data
1690
+ * @returns {undefined}
1691
+ * @public
1692
+ * @memberof Meeting
1693
+ */
1694
+ clearMeetingData: () => void;
1695
+ /**
1696
+ * starts keepAlives being sent
1697
+ * @returns {void}
1698
+ * @private
1699
+ * @memberof Meeting
1700
+ */
1701
+ startKeepAlive: () => void;
1702
+ /**
1703
+ * stops keepAlives being sent
1704
+ * @returns {void}
1705
+ * @private
1706
+ * @memberof Meeting
1707
+ */
1708
+ stopKeepAlive: () => void;
1709
+ /**
1710
+ * Send a reaction inside the meeting.
1711
+ *
1712
+ * @param {ReactionServerType} reactionType - type of reaction to be sent. Example: "thumbs_up"
1713
+ * @param {SkinToneType} skinToneType - skin tone for the reaction. Example: "medium_dark"
1714
+ * @returns {Promise}
1715
+ * @public
1716
+ * @memberof Meeting
1717
+ */
1718
+ sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType): any;
1719
+ /**
1720
+ * Method to enable or disable reactions inside the meeting.
1721
+ *
1722
+ * @param {boolean} enable - enable or disable reactions
1723
+ * @returns {Promise}
1724
+ * @public
1725
+ * @memberof Meeting
1726
+ */
1727
+ toggleReactions(enable: boolean): Promise<any>;
1728
+ /**
1729
+ * Throws if we don't have a media connection created
1730
+ *
1731
+ * @returns {void}
1732
+ */
1733
+ private checkMediaConnection;
1734
+ /**
1735
+ * Method to enable or disable the 'Music mode' effect on audio track
1736
+ *
1737
+ * @param {boolean} shouldEnableMusicMode
1738
+ * @returns {Promise}
1739
+ */
1740
+ enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1741
+ /**
1742
+ * Publishes specified local tracks in the meeting
1743
+ *
1744
+ * @param {Object} tracks
1745
+ * @returns {Promise}
1746
+ */
1747
+ publishTracks(tracks: {
1748
+ microphone?: LocalMicrophoneTrack;
1749
+ camera?: LocalCameraTrack;
1750
+ screenShare: {
1751
+ audio?: LocalTrack;
1752
+ video?: LocalDisplayTrack;
1753
+ };
1754
+ }): Promise<void>;
1755
+ /**
1756
+ * Un-publishes specified local tracks in the meeting
1757
+ *
1758
+ * @param {Array<MediaStreamTrack>} tracks
1759
+ * @returns {Promise}
1760
+ */
1761
+ unpublishTracks(tracks: LocalTrack[]): Promise<void>;
1762
+ }