@webex/plugin-meetings 3.0.0-beta.25 → 3.0.0-beta.251

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 (365) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +28 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +5 -10
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +195 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/constants.js +14 -0
  31. package/dist/controls-options-manager/constants.js.map +1 -0
  32. package/dist/controls-options-manager/enums.js +27 -0
  33. package/dist/controls-options-manager/enums.js.map +1 -0
  34. package/dist/controls-options-manager/index.js +297 -0
  35. package/dist/controls-options-manager/index.js.map +1 -0
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +319 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +112 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +366 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +91 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +381 -62
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/infoUtils.js +7 -1
  53. package/dist/locus-info/infoUtils.js.map +1 -1
  54. package/dist/locus-info/mediaSharesUtils.js +43 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +224 -63
  57. package/dist/locus-info/parser.js.map +1 -1
  58. package/dist/locus-info/selfUtils.js +89 -14
  59. package/dist/locus-info/selfUtils.js.map +1 -1
  60. package/dist/media/index.js +58 -116
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +60 -121
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +90 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +2785 -2652
  67. package/dist/meeting/index.js.map +1 -1
  68. package/dist/meeting/locusMediaRequest.js +292 -0
  69. package/dist/meeting/locusMediaRequest.js.map +1 -0
  70. package/dist/meeting/muteState.js +230 -124
  71. package/dist/meeting/muteState.js.map +1 -1
  72. package/dist/meeting/request.js +256 -196
  73. package/dist/meeting/request.js.map +1 -1
  74. package/dist/meeting/util.js +601 -417
  75. package/dist/meeting/util.js.map +1 -1
  76. package/dist/meeting-info/index.js +48 -7
  77. package/dist/meeting-info/index.js.map +1 -1
  78. package/dist/meeting-info/meeting-info-v2.js +171 -51
  79. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  80. package/dist/meeting-info/util.js +1 -1
  81. package/dist/meeting-info/util.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +36 -36
  83. package/dist/meeting-info/utilv2.js.map +1 -1
  84. package/dist/meetings/collection.js +22 -0
  85. package/dist/meetings/collection.js.map +1 -1
  86. package/dist/meetings/index.js +370 -90
  87. package/dist/meetings/index.js.map +1 -1
  88. package/dist/meetings/meetings.types.js +7 -0
  89. package/dist/meetings/meetings.types.js.map +1 -0
  90. package/dist/meetings/request.js +2 -0
  91. package/dist/meetings/request.js.map +1 -1
  92. package/dist/meetings/util.js +88 -1
  93. package/dist/meetings/util.js.map +1 -1
  94. package/dist/member/index.js +49 -0
  95. package/dist/member/index.js.map +1 -1
  96. package/dist/member/types.js +25 -0
  97. package/dist/member/types.js.map +1 -0
  98. package/dist/member/util.js +121 -25
  99. package/dist/member/util.js.map +1 -1
  100. package/dist/members/collection.js +10 -0
  101. package/dist/members/collection.js.map +1 -1
  102. package/dist/members/index.js +86 -5
  103. package/dist/members/index.js.map +1 -1
  104. package/dist/members/request.js +106 -38
  105. package/dist/members/request.js.map +1 -1
  106. package/dist/members/types.js +15 -0
  107. package/dist/members/types.js.map +1 -0
  108. package/dist/members/util.js +316 -233
  109. package/dist/members/util.js.map +1 -1
  110. package/dist/metrics/constants.js +6 -5
  111. package/dist/metrics/constants.js.map +1 -1
  112. package/dist/metrics/index.js +1 -468
  113. package/dist/metrics/index.js.map +1 -1
  114. package/dist/multistream/mediaRequestManager.js +238 -49
  115. package/dist/multistream/mediaRequestManager.js.map +1 -1
  116. package/dist/multistream/receiveSlot.js +49 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +52 -34
  119. package/dist/multistream/receiveSlotManager.js.map +1 -1
  120. package/dist/multistream/remoteMedia.js +44 -18
  121. package/dist/multistream/remoteMedia.js.map +1 -1
  122. package/dist/multistream/remoteMediaGroup.js +60 -3
  123. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  124. package/dist/multistream/remoteMediaManager.js +209 -59
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/multistream/sendSlotManager.js +233 -0
  127. package/dist/multistream/sendSlotManager.js.map +1 -0
  128. package/dist/reachability/index.js +81 -30
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +16 -7
  131. package/dist/reachability/request.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +199 -154
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -2
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +23 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +112 -89
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +96 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/rtcMetrics/constants.js +12 -0
  145. package/dist/rtcMetrics/constants.js.map +1 -0
  146. package/dist/rtcMetrics/index.js +117 -0
  147. package/dist/rtcMetrics/index.js.map +1 -0
  148. package/dist/statsAnalyzer/index.js +51 -34
  149. package/dist/statsAnalyzer/index.js.map +1 -1
  150. package/dist/statsAnalyzer/mqaUtil.js +6 -6
  151. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  152. package/dist/types/annotation/annotation.types.d.ts +42 -0
  153. package/dist/types/annotation/constants.d.ts +31 -0
  154. package/dist/types/annotation/index.d.ts +117 -0
  155. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  156. package/dist/types/breakouts/events.d.ts +8 -0
  157. package/dist/types/breakouts/request.d.ts +22 -0
  158. package/dist/types/breakouts/utils.d.ts +15 -0
  159. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  160. package/dist/types/common/queue.d.ts +9 -7
  161. package/dist/types/config.d.ts +1 -6
  162. package/dist/types/constants.d.ts +157 -21
  163. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  164. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  165. package/dist/types/controls-options-manager/index.d.ts +136 -0
  166. package/dist/types/controls-options-manager/types.d.ts +43 -0
  167. package/dist/types/controls-options-manager/util.d.ts +1 -0
  168. package/dist/types/index.d.ts +6 -4
  169. package/dist/types/interpretation/collection.d.ts +5 -0
  170. package/dist/types/interpretation/index.d.ts +5 -0
  171. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  172. package/dist/types/locus-info/index.d.ts +57 -4
  173. package/dist/types/locus-info/parser.d.ts +65 -6
  174. package/dist/types/media/index.d.ts +2 -0
  175. package/dist/types/media/properties.d.ts +34 -48
  176. package/dist/types/meeting/in-meeting-actions.d.ts +90 -2
  177. package/dist/types/meeting/index.d.ts +330 -503
  178. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  179. package/dist/types/meeting/muteState.d.ts +99 -23
  180. package/dist/types/meeting/request.d.ts +72 -43
  181. package/dist/types/meeting/util.d.ts +101 -1
  182. package/dist/types/meeting-info/index.d.ts +6 -1
  183. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -1
  184. package/dist/types/meetings/collection.d.ts +8 -0
  185. package/dist/types/meetings/index.d.ts +76 -12
  186. package/dist/types/meetings/meetings.types.d.ts +4 -0
  187. package/dist/types/member/index.d.ts +13 -0
  188. package/dist/types/member/types.d.ts +32 -0
  189. package/dist/types/members/collection.d.ts +5 -0
  190. package/dist/types/members/index.d.ts +35 -2
  191. package/dist/types/members/request.d.ts +73 -9
  192. package/dist/types/members/types.d.ts +24 -0
  193. package/dist/types/members/util.d.ts +209 -1
  194. package/dist/types/metrics/constants.d.ts +5 -4
  195. package/dist/types/metrics/index.d.ts +4 -119
  196. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  197. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  198. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  199. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  200. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  201. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  202. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  203. package/dist/types/reachability/index.d.ts +15 -3
  204. package/dist/types/reachability/request.d.ts +7 -3
  205. package/dist/types/reconnection-manager/index.d.ts +9 -0
  206. package/dist/types/recording-controller/index.d.ts +15 -1
  207. package/dist/types/recording-controller/util.d.ts +5 -4
  208. package/dist/types/roap/request.d.ts +15 -11
  209. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  210. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  211. package/dist/types/rtcMetrics/index.d.ts +47 -0
  212. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  213. package/package.json +23 -20
  214. package/src/annotation/annotation.types.ts +50 -0
  215. package/src/annotation/constants.ts +36 -0
  216. package/src/annotation/index.ts +328 -0
  217. package/src/breakouts/README.md +44 -14
  218. package/src/breakouts/breakout.ts +87 -9
  219. package/src/breakouts/edit-lock-error.ts +25 -0
  220. package/src/breakouts/events.ts +56 -0
  221. package/src/breakouts/index.ts +710 -10
  222. package/src/breakouts/request.ts +55 -0
  223. package/src/breakouts/utils.ts +57 -0
  224. package/src/common/errors/webex-errors.ts +27 -2
  225. package/src/common/logs/logger-proxy.ts +1 -1
  226. package/src/common/queue.ts +22 -8
  227. package/src/config.ts +4 -9
  228. package/src/constants.ts +178 -18
  229. package/src/controls-options-manager/constants.ts +5 -0
  230. package/src/controls-options-manager/enums.ts +18 -0
  231. package/src/controls-options-manager/index.ts +278 -0
  232. package/src/controls-options-manager/types.ts +59 -0
  233. package/src/controls-options-manager/util.ts +300 -0
  234. package/src/index.ts +40 -0
  235. package/src/interpretation/README.md +60 -0
  236. package/src/interpretation/collection.ts +19 -0
  237. package/src/interpretation/index.ts +332 -0
  238. package/src/interpretation/siLanguage.ts +18 -0
  239. package/src/locus-info/controlsUtils.ts +108 -0
  240. package/src/locus-info/index.ts +412 -59
  241. package/src/locus-info/infoUtils.ts +10 -2
  242. package/src/locus-info/mediaSharesUtils.ts +48 -0
  243. package/src/locus-info/parser.ts +231 -39
  244. package/src/locus-info/selfUtils.ts +81 -5
  245. package/src/media/index.ts +100 -122
  246. package/src/media/properties.ts +70 -108
  247. package/src/meeting/in-meeting-actions.ts +179 -3
  248. package/src/meeting/index.ts +2269 -2218
  249. package/src/meeting/locusMediaRequest.ts +313 -0
  250. package/src/meeting/muteState.ts +229 -131
  251. package/src/meeting/request.ts +172 -121
  252. package/src/meeting/util.ts +588 -394
  253. package/src/meeting-info/index.ts +54 -8
  254. package/src/meeting-info/meeting-info-v2.ts +148 -14
  255. package/src/meeting-info/util.ts +1 -1
  256. package/src/meeting-info/utilv2.ts +23 -23
  257. package/src/meetings/collection.ts +20 -0
  258. package/src/meetings/index.ts +407 -108
  259. package/src/meetings/meetings.types.ts +12 -0
  260. package/src/meetings/request.ts +2 -0
  261. package/src/meetings/util.ts +103 -4
  262. package/src/member/index.ts +49 -0
  263. package/src/member/types.ts +38 -0
  264. package/src/member/util.ts +127 -25
  265. package/src/members/collection.ts +8 -0
  266. package/src/members/index.ts +107 -6
  267. package/src/members/request.ts +97 -17
  268. package/src/members/types.ts +28 -0
  269. package/src/members/util.ts +319 -240
  270. package/src/metrics/constants.ts +5 -4
  271. package/src/metrics/index.ts +1 -490
  272. package/src/multistream/mediaRequestManager.ts +289 -79
  273. package/src/multistream/receiveSlot.ts +55 -18
  274. package/src/multistream/receiveSlotManager.ts +46 -24
  275. package/src/multistream/remoteMedia.ts +27 -2
  276. package/src/multistream/remoteMediaGroup.ts +59 -0
  277. package/src/multistream/remoteMediaManager.ts +148 -30
  278. package/src/multistream/sendSlotManager.ts +170 -0
  279. package/src/reachability/index.ts +69 -17
  280. package/src/reachability/request.ts +16 -7
  281. package/src/reconnection-manager/index.ts +81 -54
  282. package/src/recording-controller/index.ts +20 -3
  283. package/src/recording-controller/util.ts +26 -9
  284. package/src/roap/index.ts +23 -30
  285. package/src/roap/request.ts +104 -95
  286. package/src/roap/turnDiscovery.ts +50 -25
  287. package/src/rtcMetrics/constants.ts +3 -0
  288. package/src/rtcMetrics/index.ts +100 -0
  289. package/src/statsAnalyzer/index.ts +73 -35
  290. package/src/statsAnalyzer/mqaUtil.ts +8 -10
  291. package/test/integration/spec/converged-space-meetings.js +233 -0
  292. package/test/integration/spec/journey.js +320 -261
  293. package/test/integration/spec/space-meeting.js +76 -3
  294. package/test/unit/spec/annotation/index.ts +418 -0
  295. package/test/unit/spec/breakouts/breakout.ts +142 -24
  296. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  297. package/test/unit/spec/breakouts/events.ts +89 -0
  298. package/test/unit/spec/breakouts/index.ts +1545 -48
  299. package/test/unit/spec/breakouts/request.ts +104 -0
  300. package/test/unit/spec/breakouts/utils.js +72 -0
  301. package/test/unit/spec/common/queue.js +31 -2
  302. package/test/unit/spec/controls-options-manager/index.js +287 -0
  303. package/test/unit/spec/controls-options-manager/util.js +582 -0
  304. package/test/unit/spec/fixture/locus.js +1 -0
  305. package/test/unit/spec/interpretation/collection.ts +15 -0
  306. package/test/unit/spec/interpretation/index.ts +589 -0
  307. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  308. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  309. package/test/unit/spec/locus-info/index.js +1283 -33
  310. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  311. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  312. package/test/unit/spec/locus-info/parser.js +62 -22
  313. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  314. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  315. package/test/unit/spec/media/index.ts +104 -37
  316. package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
  317. package/test/unit/spec/meeting/index.js +3688 -1861
  318. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  319. package/test/unit/spec/meeting/muteState.js +408 -208
  320. package/test/unit/spec/meeting/request.js +440 -45
  321. package/test/unit/spec/meeting/utils.js +679 -64
  322. package/test/unit/spec/meeting-info/index.js +181 -0
  323. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  324. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  325. package/test/unit/spec/meetings/collection.js +14 -0
  326. package/test/unit/spec/meetings/index.js +939 -150
  327. package/test/unit/spec/meetings/utils.js +206 -2
  328. package/test/unit/spec/member/index.js +58 -4
  329. package/test/unit/spec/member/util.js +479 -35
  330. package/test/unit/spec/members/index.js +319 -1
  331. package/test/unit/spec/members/request.js +206 -27
  332. package/test/unit/spec/members/utils.js +184 -0
  333. package/test/unit/spec/metrics/index.js +1 -50
  334. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  335. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  336. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  337. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  338. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  339. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  340. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  341. package/test/unit/spec/reachability/index.ts +185 -7
  342. package/test/unit/spec/reachability/request.js +68 -0
  343. package/test/unit/spec/reconnection-manager/index.js +84 -9
  344. package/test/unit/spec/recording-controller/index.js +294 -218
  345. package/test/unit/spec/recording-controller/util.js +223 -96
  346. package/test/unit/spec/roap/index.ts +31 -51
  347. package/test/unit/spec/roap/request.ts +202 -85
  348. package/test/unit/spec/roap/turnDiscovery.ts +45 -10
  349. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  350. package/test/unit/spec/stats-analyzer/index.js +29 -2
  351. package/test/utils/constants.js +9 -0
  352. package/test/utils/integrationTestUtils.js +46 -0
  353. package/test/utils/testUtils.js +0 -45
  354. package/test/utils/webex-config.js +4 -0
  355. package/test/utils/webex-test-users.js +6 -3
  356. package/dist/meeting/effectsState.js +0 -262
  357. package/dist/meeting/effectsState.js.map +0 -1
  358. package/dist/metrics/config.js +0 -299
  359. package/dist/metrics/config.js.map +0 -1
  360. package/dist/types/meeting/effectsState.d.ts +0 -42
  361. package/dist/types/metrics/config.d.ts +0 -178
  362. package/src/index.js +0 -16
  363. package/src/meeting/effectsState.ts +0 -211
  364. package/src/metrics/config.ts +0 -495
  365. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1,8 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { StatelessWebexPlugin } from '@webex/webex-core';
3
+ import { ClientEvent, ClientEventLeaveReason } from '@webex/internal-plugin-metrics';
4
+ import { LocalStream, LocalCameraStream, LocalDisplayStream, LocalSystemAudioStream, LocalMicrophoneStream } from '@webex/media-helpers';
3
5
  import { StatsAnalyzer } from '../statsAnalyzer';
4
6
  import NetworkQualityMonitor from '../networkQualityMonitor';
5
7
  import Roap from '../roap/index';
8
+ import { type BundlePolicy } from '../media';
6
9
  import MediaProperties from '../media/properties';
7
10
  import ReconnectionManager from '../reconnection-manager';
8
11
  import MeetingRequest from './request';
@@ -10,17 +13,40 @@ import Members from '../members/index';
10
13
  import Transcription from '../transcription';
11
14
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
12
15
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
13
- import { RemoteMediaManager } from '../multistream/remoteMediaManager';
16
+ import { Configuration as RemoteMediaManagerConfiguration, RemoteMediaManager } from '../multistream/remoteMediaManager';
14
17
  import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
15
18
  import InMeetingActions from './in-meeting-actions';
16
19
  import RecordingController from '../recording-controller';
20
+ import ControlsOptionsManager from '../controls-options-manager';
21
+ import { LocusMediaRequest } from './locusMediaRequest';
22
+ export type LocalStreams = {
23
+ microphone?: LocalMicrophoneStream;
24
+ camera?: LocalCameraStream;
25
+ screenShare?: {
26
+ audio?: LocalSystemAudioStream;
27
+ video?: LocalDisplayStream;
28
+ };
29
+ };
30
+ export type AddMediaOptions = {
31
+ localStreams?: LocalStreams;
32
+ audioEnabled?: boolean;
33
+ videoEnabled?: boolean;
34
+ shareAudioEnabled?: boolean;
35
+ shareVideoEnabled?: boolean;
36
+ remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
37
+ bundlePolicy?: BundlePolicy;
38
+ allowMediaInLobby?: boolean;
39
+ };
17
40
  export declare const MEDIA_UPDATE_TYPE: {
18
- ALL: string;
19
- AUDIO: string;
20
- VIDEO: string;
21
- SHARE: string;
22
- LAMBDA: string;
41
+ TRANSCODED_MEDIA_CONNECTION: string;
42
+ SHARE_FLOOR_REQUEST: string;
43
+ UPDATE_MEDIA: string;
23
44
  };
45
+ export declare enum ScreenShareFloorStatus {
46
+ PENDING = "floor_request_pending",
47
+ GRANTED = "floor_request_granted",
48
+ RELEASED = "floor_released"
49
+ }
24
50
  /**
25
51
  * MediaDirection
26
52
  * @typedef {Object} MediaDirection
@@ -32,15 +58,6 @@ export declare const MEDIA_UPDATE_TYPE: {
32
58
  * @property {boolean} receiveShare
33
59
  * @property {boolean} isSharing
34
60
  */
35
- /**
36
- * AudioVideo
37
- * @typedef {Object} AudioVideo
38
- * @property {Object} audio
39
- * @property {String} audio.deviceId
40
- * @property {Object} video
41
- * @property {String} video.deviceId
42
- * @property {String} video.localVideoQuality // [240p, 360p, 480p, 720p, 1080p]
43
- */
44
61
  /**
45
62
  * SharePreferences
46
63
  * @typedef {Object} SharePreferences
@@ -54,18 +71,10 @@ export declare const MEDIA_UPDATE_TYPE: {
54
71
  * @property {String} [pin]
55
72
  * @property {Boolean} [moderator]
56
73
  * @property {String|Object} [meetingQuality]
57
- * @property {String} [meetingQuality.local]
58
74
  * @property {String} [meetingQuality.remote]
59
75
  * @property {Boolean} [rejoin]
60
76
  * @property {Boolean} [enableMultistream]
61
77
  */
62
- /**
63
- * SendOptions
64
- * @typedef {Object} SendOptions
65
- * @property {Boolean} sendAudio
66
- * @property {Boolean} sendVideo
67
- * @property {Boolean} sendShare
68
- */
69
78
  /**
70
79
  * Recording
71
80
  * @typedef {Object} Recording
@@ -147,7 +156,11 @@ export declare const MEDIA_UPDATE_TYPE: {
147
156
  * @instance
148
157
  * @type {Object}
149
158
  * @property {Boolean} memberId id of the meeting member that started screen share
159
+ * @property {String} url of this content share
160
+ * @property {String} shareInstanceId of this content share
161
+ * @property {Object} annotation Info of this content share
150
162
  * @memberof Meeting
163
+ *
151
164
  */
152
165
  /**
153
166
  * Meeting Stopped Sharing Remote Event
@@ -284,12 +297,13 @@ export default class Meeting extends StatelessWebexPlugin {
284
297
  attrs: any;
285
298
  audio: any;
286
299
  breakouts: any;
300
+ simultaneousInterpretation: any;
301
+ annotation: any;
287
302
  conversationUrl: string;
288
303
  correlationId: string;
289
304
  destination: string;
290
305
  destinationType: string;
291
306
  deviceUrl: string;
292
- effects: any;
293
307
  hostId: string;
294
308
  id: string;
295
309
  isMultistream: boolean;
@@ -297,7 +311,7 @@ export default class Meeting extends StatelessWebexPlugin {
297
311
  mediaConnections: any[];
298
312
  mediaId?: string;
299
313
  meetingFiniteStateMachine: any;
300
- meetingInfo: object;
314
+ meetingInfo: any;
301
315
  meetingRequest: MeetingRequest;
302
316
  members: Members;
303
317
  options: object;
@@ -309,11 +323,13 @@ export default class Meeting extends StatelessWebexPlugin {
309
323
  resource: string;
310
324
  roap: Roap;
311
325
  roapSeq: number;
326
+ selfUrl?: string;
312
327
  sipUri: string;
313
328
  type: string;
314
329
  userId: string;
315
330
  video: any;
316
331
  callEvents: any[];
332
+ datachannelUrl: string;
317
333
  deferJoin: Promise<any>;
318
334
  dialInDeviceStatus: string;
319
335
  dialInUrl: string;
@@ -326,10 +342,10 @@ export default class Meeting extends StatelessWebexPlugin {
326
342
  inMeetingActions: InMeetingActions;
327
343
  isLocalShareLive: boolean;
328
344
  isRoapInProgress: boolean;
329
- isSharing: boolean;
330
345
  keepAliveTimerId: NodeJS.Timeout;
331
346
  lastVideoLayoutInfo: any;
332
347
  locusInfo: any;
348
+ locusMediaRequest?: LocusMediaRequest;
333
349
  mediaProperties: MediaProperties;
334
350
  mediaRequestManagers: {
335
351
  audio: MediaRequestManager;
@@ -338,6 +354,7 @@ export default class Meeting extends StatelessWebexPlugin {
338
354
  screenShareVideo: MediaRequestManager;
339
355
  };
340
356
  meetingInfoFailureReason: string;
357
+ meetingInfoFailureCode?: number;
341
358
  networkQualityMonitor: NetworkQualityMonitor;
342
359
  networkStatus: string;
343
360
  passwordStatus: string;
@@ -345,18 +362,22 @@ export default class Meeting extends StatelessWebexPlugin {
345
362
  recording: any;
346
363
  remoteMediaManager: RemoteMediaManager | null;
347
364
  recordingController: RecordingController;
365
+ controlsOptionsManager: ControlsOptionsManager;
348
366
  requiredCaptcha: any;
349
367
  receiveSlotManager: ReceiveSlotManager;
368
+ selfUserPolicies: any;
350
369
  shareStatus: string;
370
+ screenShareFloorState: ScreenShareFloorStatus;
351
371
  statsAnalyzer: StatsAnalyzer;
352
372
  transcription: Transcription;
353
373
  updateMediaConnections: (mediaConnections: any[]) => void;
354
- endCallInitiateJoinReq: any;
374
+ userDisplayHints: any;
375
+ endCallInitJoinReq: any;
355
376
  endJoinReqResp: any;
356
377
  endLocalSDPGenRemoteSDPRecvDelay: any;
357
378
  joinedWith: any;
358
379
  locusId: any;
359
- startCallInitiateJoinReq: any;
380
+ startCallInitJoinReq: any;
360
381
  startJoinReqResp: any;
361
382
  startLocalSDPGenRemoteSDPRecvDelay: any;
362
383
  wirelessShare: any;
@@ -364,12 +385,20 @@ export default class Meeting extends StatelessWebexPlugin {
364
385
  meetingJoinUrl: any;
365
386
  meetingNumber: any;
366
387
  meetingState: any;
367
- permissionToken: any;
388
+ permissionToken: string;
389
+ permissionTokenPayload: any;
368
390
  resourceId: any;
369
391
  resourceUrl: string;
370
392
  selfId: string;
371
393
  state: any;
394
+ localAudioStreamMuteStateHandler: (muted: boolean) => void;
395
+ localVideoStreamMuteStateHandler: (muted: boolean) => void;
396
+ localOutputTrackChangeHandler: () => void;
397
+ roles: any[];
398
+ environment: string;
372
399
  namespace: string;
400
+ allowMediaInLobby: boolean;
401
+ private sendSlotManager;
373
402
  /**
374
403
  * @param {Object} attrs
375
404
  * @param {Object} options
@@ -377,6 +406,18 @@ export default class Meeting extends StatelessWebexPlugin {
377
406
  * @memberof Meeting
378
407
  */
379
408
  constructor(attrs: any, options: object);
409
+ /**
410
+ * returns meeting is joined
411
+ * @private
412
+ * @memberof Meeting
413
+ * @returns {Boolean}
414
+ */
415
+ private isJoined;
416
+ /**
417
+ * Returns whether this meeting is a Locus CALL
418
+ * @returns {Boolean}
419
+ */
420
+ isLocusCall(): boolean;
380
421
  /**
381
422
  * Fetches meeting information.
382
423
  * @param {Object} options
@@ -386,9 +427,10 @@ export default class Meeting extends StatelessWebexPlugin {
386
427
  * @memberof Meeting
387
428
  * @returns {Promise}
388
429
  */
389
- fetchMeetingInfo({ password, captchaCode, }: {
430
+ fetchMeetingInfo({ password, captchaCode, extraParams, }: {
390
431
  password?: string;
391
432
  captchaCode?: string;
433
+ extraParams?: Record<string, any>;
392
434
  }): Promise<void>;
393
435
  /**
394
436
  * Checks if the supplied password/host key is correct. It returns a promise with information whether the
@@ -416,6 +458,14 @@ export default class Meeting extends StatelessWebexPlugin {
416
458
  * @returns {Promise}
417
459
  */
418
460
  refreshCaptcha(): any;
461
+ /**
462
+ * Posts metrics event for this meeting. Allows the app to send Call Analyzer events.
463
+ * @param {String} eventName - Call Analyzer event
464
+ * @public
465
+ * @memberof Meeting
466
+ * @returns {Promise}
467
+ */
468
+ postMetrics(eventName: ClientEvent['name']): void;
419
469
  /**
420
470
  * Proxy function for all the listener set ups
421
471
  * @returns {undefined}
@@ -430,6 +480,13 @@ export default class Meeting extends StatelessWebexPlugin {
430
480
  * @memberof Meeting
431
481
  */
432
482
  setUpBreakoutsListener(): void;
483
+ /**
484
+ * Set up the listeners for interpretation
485
+ * @returns {undefined}
486
+ * @private
487
+ * @memberof Meeting
488
+ */
489
+ private setUpInterpretationListener;
433
490
  /**
434
491
  * Set up the locus info listener for meetings disconnected due to inactivity
435
492
  * @returns {undefined}
@@ -451,47 +508,6 @@ export default class Meeting extends StatelessWebexPlugin {
451
508
  * @memberof Meeting
452
509
  */
453
510
  private setUpLocusFullStateListener;
454
- /**
455
- * get the metrics payload pre
456
- * @param {Object} options
457
- * @param {String} options.event
458
- * @param {String} options.trackingId
459
- * @param {Object} options.locus
460
- * @param {Array} options.mediaConnections
461
- * @param {Object} options.errors
462
- * @returns {Object}
463
- * @memberof Meeting
464
- */
465
- getAnalyzerMetricsPrePayload(options: {
466
- event: string;
467
- trackingId: string;
468
- locus: object;
469
- mediaConnections: Array<any>;
470
- errors: object;
471
- } | any): {};
472
- /**
473
- * Send the metrics to call-analyzer dashboard
474
- * @param {Object} options
475
- * @param {String} options.event
476
- * @param {String} options.trackingId
477
- * @param {Object} options.locus
478
- * @param {Object} options.errors
479
- * @returns {Promise}
480
- * @private
481
- * @memberof Meeting
482
- */
483
- private sendCallAnalyzerMetrics;
484
- /**
485
- * Send the metrics to Media Quality Analyzer dashboard
486
- * @param {Object} options
487
- * @param {String} options.event
488
- * @param {String} options.trackingId
489
- * @param {Object} options.locus
490
- * @returns {Promise}
491
- * @private
492
- * @memberof Meeting
493
- */
494
- private sendMediaQualityAnalyzerMetrics;
495
511
  /**
496
512
  * sets the network status on meeting object
497
513
  * @param {String} networkStatus
@@ -554,6 +570,13 @@ export default class Meeting extends StatelessWebexPlugin {
554
570
  * @memberof Meeting
555
571
  */
556
572
  private setupLocusControlsListener;
573
+ /**
574
+ * Trigger annotation info update event
575
+ @returns {undefined}
576
+ @param {object} contentShare
577
+ @param {object} previousContentShare
578
+ */
579
+ private triggerAnnotationInfoEvent;
557
580
  /**
558
581
  * Set up the locus info media shares listener
559
582
  * update content and whiteboard sharing id value for members, and updates the member
@@ -652,13 +675,23 @@ export default class Meeting extends StatelessWebexPlugin {
652
675
  phoneNumber: string;
653
676
  }): any;
654
677
  /**
655
- * Admit the guest(s) to the call once they are waiting
678
+ * Admit the guest(s) to the call once they are waiting.
679
+ * If the host/cohost is in a breakout session, the locus url
680
+ * of the session must be provided as the authorizingLocusUrl.
681
+ * Regardless of host/cohost location, the locus Id (lid) in
682
+ * the path should be the locus Id of the main, which means the
683
+ * locus url of the api call must be from the main session.
684
+ * If these loucs urls are not provided, the function will do the check.
656
685
  * @param {Array} memberIds
686
+ * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
657
687
  * @returns {Promise} see #members.admitMembers
658
688
  * @public
659
689
  * @memberof Meeting
660
690
  */
661
- admit(memberIds: Array<any>): any;
691
+ admit(memberIds: Array<any>, sessionLocusUrls?: {
692
+ authorizingLocusUrl: string;
693
+ mainLocusUrl: string;
694
+ }): any;
662
695
  /**
663
696
  * Remove the member from the meeting, boot them
664
697
  * @param {String} memberId
@@ -692,48 +725,6 @@ export default class Meeting extends StatelessWebexPlugin {
692
725
  * @memberof Meeting
693
726
  */
694
727
  getMembers(): Members;
695
- /**
696
- * Truthy when a meeting has an audio connection established
697
- * @returns {Boolean} true if meeting audio is connected otherwise false
698
- * @public
699
- * @memberof Meeting
700
- */
701
- isAudioConnected(): boolean;
702
- /**
703
- * Convenience function to tell whether a meeting is muted
704
- * @returns {Boolean} if meeting audio muted or not
705
- * @public
706
- * @memberof Meeting
707
- */
708
- isAudioMuted(): any;
709
- /**
710
- * Convenience function to tell if the end user last changed the audio state
711
- * @returns {Boolean} if audio was manipulated by the end user
712
- * @public
713
- * @memberof Meeting
714
- */
715
- isAudioSelf(): any;
716
- /**
717
- * Truthy when a meeting has a video connection established
718
- * @returns {Boolean} true if meeting video connected otherwise false
719
- * @public
720
- * @memberof Meeting
721
- */
722
- isVideoConnected(): boolean;
723
- /**
724
- * Convenience function to tell whether video is muted
725
- * @returns {Boolean} if meeting video is muted or not
726
- * @public
727
- * @memberof Meeting
728
- */
729
- isVideoMuted(): any;
730
- /**
731
- * Convenience function to tell whether the end user changed the video state
732
- * @returns {Boolean} if meeting video is muted or not
733
- * @public
734
- * @memberof Meeting
735
- */
736
- isVideoSelf(): any;
737
728
  /**
738
729
  * Sets the meeting info on the class instance
739
730
  * @param {Object} meetingInfo
@@ -756,16 +747,29 @@ export default class Meeting extends StatelessWebexPlugin {
756
747
  };
757
748
  } | any, destination?: object | string | null): void;
758
749
  /**
759
- * Sets the first locus info on the class instance
760
- * @param {Object} locus
761
- * @param {String} locus.url
762
- * @param {Array} locus.participants
763
- * @param {Object} locus.self
750
+ * Indicates whether policy can be applied
751
+ * @returns {boolean}
752
+ */
753
+ private arePolicyRestrictionsSupported;
754
+ /**
755
+ * Updates the meeting actions (display hints), depends on locus display hints, user policy and app api info
764
756
  * @returns {undefined}
765
757
  * @private
766
758
  * @memberof Meeting
767
759
  */
768
- private parseLocus;
760
+ private updateMeetingActions;
761
+ /**
762
+ * Sets the self user policies based on the contents of the permission token
763
+ * @returns {void}
764
+ */
765
+ setSelfUserPolicies(): void;
766
+ /**
767
+ * Sets the permission token payload on the class instance
768
+ *
769
+ * @param {String} permissionToken
770
+ * @returns {void}
771
+ */
772
+ setPermissionTokenPayload(permissionToken: string): void;
769
773
  /**
770
774
  * Sets the sip uri on the class instance
771
775
  * uses meeting info as precedence
@@ -788,7 +792,13 @@ export default class Meeting extends StatelessWebexPlugin {
788
792
  * @private
789
793
  * @memberof Meeting
790
794
  */
791
- private setLocus;
795
+ setLocus(locus: {
796
+ mediaConnections: Array<any>;
797
+ locusUrl: string;
798
+ locusId: string;
799
+ mediaId: string;
800
+ host: object;
801
+ } | any): void;
792
802
  /**
793
803
  * Upload logs for the current meeting
794
804
  * @param {object} options file name and function name
@@ -798,19 +808,10 @@ export default class Meeting extends StatelessWebexPlugin {
798
808
  */
799
809
  uploadLogs(options?: object): void;
800
810
  /**
801
- * Removes remote audio and video stream on the class instance and triggers an event
802
- * to developers
803
- * @returns {undefined}
804
- * @public
805
- * @memberof Meeting
806
- * @deprecated after v1.89.3
807
- */
808
- unsetRemoteStream(): void;
809
- /**
810
- * Removes remote audio, video and share tracks from class instance's mediaProperties
811
+ * Removes remote audio, video and share streams from class instance's mediaProperties
811
812
  * @returns {undefined}
812
813
  */
813
- unsetRemoteTracks(): void;
814
+ unsetRemoteStreams(): void;
814
815
  /**
815
816
  * Removes the remote stream on the class instance and triggers an event
816
817
  * to developers
@@ -821,83 +822,45 @@ export default class Meeting extends StatelessWebexPlugin {
821
822
  */
822
823
  closeRemoteStream(): void;
823
824
  /**
824
- * Removes the remote tracks on the class instance and triggers an event
825
+ * Removes the remote streams on the class instance and triggers an event
825
826
  * to developers
826
827
  * @returns {undefined}
827
828
  * @memberof Meeting
828
829
  */
829
- closeRemoteTracks(): Promise<[any, any, any]>;
830
- /**
831
- * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
832
- * @returns {undefined}
833
- * @private
834
- * @memberof Meeting
835
- */
836
- private sendLocalMediaReadyEvent;
837
- /**
838
- * Sets the local audio track on the class and emits an event to the developer
839
- * @param {MediaStreamTrack} audioTrack
840
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
841
- * @returns {undefined}
842
- * @private
843
- * @memberof Meeting
844
- */
845
- private setLocalAudioTrack;
846
- /**
847
- * Sets the local video track on the class and emits an event to the developer
848
- * @param {MediaStreamTrack} videoTrack
849
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
850
- * @returns {undefined}
851
- * @private
852
- * @memberof Meeting
853
- */
854
- private setLocalVideoTrack;
830
+ closeRemoteStreams(): Promise<[any, any, any, any]>;
855
831
  /**
856
- * Sets the local media stream on the class and emits an event to the developer
857
- * @param {Stream} localStream the local media stream
858
- * @returns {undefined}
859
- * @public
860
- * @memberof Meeting
861
- */
862
- setLocalTracks(localStream: any): void;
863
- /**
864
- * Sets the local media stream on the class and emits an event to the developer
865
- * @param {MediaStreamTrack} localShareTrack the local media stream
866
- * @returns {undefined}
867
- * @public
868
- * @memberof Meeting
869
- */
870
- setLocalShareTrack(localShareTrack: MediaStreamTrack): void;
871
- /**
872
- * Closes the local stream from the class and emits an event to the developer
873
- * @returns {undefined}
874
- * @event media:stopped
875
- * @public
876
- * @memberof Meeting
832
+ * Stores the reference to a new microphone stream, sets up the required event listeners
833
+ * on it, cleans up previous stream, etc.
834
+ *
835
+ * @param {LocalMicrophoneStream | null} localStream local microphone stream
836
+ * @returns {Promise<void>}
877
837
  */
878
- closeLocalStream(): any;
838
+ private setLocalAudioStream;
879
839
  /**
880
- * Closes the local stream from the class and emits an event to the developer
881
- * @returns {undefined}
882
- * @event media:stopped
883
- * @public
884
- * @memberof Meeting
840
+ * Stores the reference to a new camera stream, sets up the required event listeners
841
+ * on it, cleans up previous stream, etc.
842
+ *
843
+ * @param {LocalCameraStream | null} localStream local camera stream
844
+ * @returns {Promise<void>}
885
845
  */
886
- closeLocalShare(): any;
846
+ private setLocalVideoStream;
887
847
  /**
888
- * Removes the local stream from the class and emits an event to the developer
889
- * @returns {undefined}
890
- * @public
891
- * @memberof Meeting
848
+ * Stores the reference to a new screen share stream, sets up the required event listeners
849
+ * on it, cleans up previous stream, etc.
850
+ * It also sends the floor grant/release request.
851
+ *
852
+ * @param {LocalDisplayStream | undefined} localDisplayStream local display stream
853
+ * @returns {Promise<void>}
892
854
  */
893
- unsetLocalVideoTrack(): void;
855
+ private setLocalShareVideoStream;
894
856
  /**
895
- * Removes the local share from the class and emits an event to the developer
896
- * @returns {undefined}
897
- * @public
898
- * @memberof Meeting
857
+ * Stores the reference to a new screen share audio stream, sets up the required event listeners
858
+ * on it, cleans up previous stream, etc.
859
+ *
860
+ * @param {LocalSystemAudioStream | undefined} localSystemAudioStream local system audio stream
861
+ * @returns {Promise<void>}
899
862
  */
900
- unsetLocalShareTrack(): void;
863
+ private setLocalShareAudioStream;
901
864
  /**
902
865
  * sets up listner for mercury event
903
866
  * @returns {undefined}
@@ -930,6 +893,13 @@ export default class Meeting extends StatelessWebexPlugin {
930
893
  * @memberof Meeting
931
894
  */
932
895
  private setCorrelationId;
896
+ /**
897
+ * Enqueue request for screenshare floor and set the status to pending
898
+ * @returns {Promise}
899
+ * @private
900
+ * @memberof Meeting
901
+ */
902
+ private enqueueScreenShareFloorRequest;
933
903
  /**
934
904
  * Mute the audio for a meeting
935
905
  * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
@@ -962,31 +932,21 @@ export default class Meeting extends StatelessWebexPlugin {
962
932
  * Shorthand function to join AND set up media
963
933
  * @param {Object} options - options to join with media
964
934
  * @param {JoinOptions} [options.joinOptions] - see #join()
965
- * @param {MediaDirection} options.mediaSettings - see #addMedia()
966
- * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
967
- * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
935
+ * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
936
+ * @returns {Promise} -- {join: see join(), media: see addMedia()}
968
937
  * @public
969
938
  * @memberof Meeting
970
939
  * @example
971
940
  * joinWithMedia({
972
941
  * joinOptions: {resourceId: 'resourceId' },
973
- * mediaSettings: {
974
- * sendAudio: true,
975
- * sendVideo: true,
976
- * sendShare: false,
977
- * receiveVideo:true,
978
- * receiveAudio: true,
979
- * receiveShare: true
980
- * }
981
- * audioVideoOptions: {
982
- * audio: 'audioDeviceId',
983
- * video: 'videoDeviceId'
984
- * }})
942
+ * mediaOptions: {
943
+ * localStreams: { microphone: microphoneStream, camera: cameraStream }
944
+ * }
945
+ * })
985
946
  */
986
947
  joinWithMedia(options?: {
987
948
  joinOptions?: any;
988
- mediaSettings: any;
989
- audioVideoOptions?: any;
949
+ mediaOptions?: AddMediaOptions;
990
950
  }): any;
991
951
  /**
992
952
  * Initiates the reconnection of the media in the meeting
@@ -1067,7 +1027,7 @@ export default class Meeting extends StatelessWebexPlugin {
1067
1027
  * @public
1068
1028
  * @memberof Meeting
1069
1029
  */
1070
- usePhoneAudio(phoneNumber: string): any;
1030
+ usePhoneAudio(phoneNumber: string): Promise<any>;
1071
1031
  /**
1072
1032
  * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1073
1033
  * @param {String} pstnStatus
@@ -1115,38 +1075,6 @@ export default class Meeting extends StatelessWebexPlugin {
1115
1075
  * @memberof Meeting
1116
1076
  */
1117
1077
  moveFrom(resourceId: string): any;
1118
- /**
1119
- * Get local media streams based on options passed
1120
- *
1121
- * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1122
- *
1123
- * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1124
- * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1125
- * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1126
- * @returns {Promise} see #Media.getUserMedia
1127
- * @public
1128
- * @todo should be static, or moved so can be called outside of a meeting
1129
- * @memberof Meeting
1130
- */
1131
- getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1132
- /**
1133
- * Checks if the machine has at least one audio or video device
1134
- * @param {Object} options
1135
- * @param {Boolean} options.sendAudio
1136
- * @param {Boolean} options.sendVideo
1137
- * @returns {Object}
1138
- * @memberof Meetings
1139
- */
1140
- getSupportedDevices: ({ sendAudio, sendVideo, }: {
1141
- sendAudio: boolean;
1142
- sendVideo: boolean;
1143
- }) => any;
1144
- /**
1145
- * Get the devices from the Media module
1146
- * @returns {Promise} resolves to an array of DeviceInfo
1147
- * @memberof Meetings
1148
- */
1149
- getDevices: () => any;
1150
1078
  /**
1151
1079
  * Handles ROAP_FAILURE event from the webrtc media connection
1152
1080
  *
@@ -1163,7 +1091,15 @@ export default class Meeting extends StatelessWebexPlugin {
1163
1091
  */
1164
1092
  setupStatsAnalyzerEventHandlers: () => void;
1165
1093
  getMediaConnectionDebugId(): string;
1166
- createMediaConnection(turnServerInfo: any): any;
1094
+ /**
1095
+ * Creates a webrtc media connection and publishes streams to it
1096
+ *
1097
+ * @param {Object} turnServerInfo TURN server information
1098
+ * @param {BundlePolicy} [bundlePolicy] Bundle policy settings
1099
+ * @param {AddMediaOptions} [options] Options for enabling/disabling audio/video
1100
+ * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1101
+ */
1102
+ private createMediaConnection;
1167
1103
  /**
1168
1104
  * Listens for an event emitted by eventEmitter and emits it from the meeting object
1169
1105
  *
@@ -1175,18 +1111,14 @@ export default class Meeting extends StatelessWebexPlugin {
1175
1111
  */
1176
1112
  forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1177
1113
  /**
1178
- * Specify joining via audio (option: pstn), video, screenshare
1179
- * @param {Object} options A configurable options object for joining a meeting
1180
- * @param {Object} options.resourceId pass the deviceId
1181
- * @param {MediaDirection} options.mediaSettings pass media options
1182
- * @param {MediaStream} options.localStream
1183
- * @param {MediaStream} options.localShare
1184
- * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1114
+ * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1115
+ *
1116
+ * @param {AddMediaOptions} options
1185
1117
  * @returns {Promise}
1186
1118
  * @public
1187
1119
  * @memberof Meeting
1188
1120
  */
1189
- addMedia(options?: any): any;
1121
+ addMedia(options?: AddMediaOptions): Promise<any>;
1190
1122
  /**
1191
1123
  * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1192
1124
  * @returns {Boolean}
@@ -1217,94 +1149,26 @@ export default class Meeting extends StatelessWebexPlugin {
1217
1149
  */
1218
1150
  processNextQueuedMediaUpdate: () => void;
1219
1151
  /**
1220
- * A confluence of updateAudio, updateVideo, and updateShare
1221
- * this function re-establishes all of the media streams with new options
1222
- * @param {Object} options
1223
- * @param {MediaStream} options.localStream
1224
- * @param {MediaStream} options.localShare
1225
- * @param {MediaDirection} options.mediaSettings
1226
- * @returns {Promise}
1227
- * @public
1228
- * @memberof Meeting
1229
- */
1230
- updateMedia(options?: {
1231
- localStream?: MediaStream;
1232
- localShare?: MediaStream;
1233
- mediaSettings?: any;
1234
- }): any;
1235
- /**
1236
- * Update the main audio track with new parameters
1237
- *
1238
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1152
+ * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.
1153
+ * This does not affect the published tracks, so for example if a microphone track is published and
1154
+ * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,
1155
+ * but the track's "published" state is not changed and when updateMedia({audioEnabled: true}) is called,
1156
+ * the sending of the audio from the same track will resume.
1239
1157
  *
1240
1158
  * @param {Object} options
1241
- * @param {boolean} options.sendAudio
1242
- * @param {boolean} options.receiveAudio
1243
- * @param {MediaStream} options.stream Stream that contains the audio track to update
1159
+ * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting
1160
+ * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting
1161
+ * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting
1244
1162
  * @returns {Promise}
1245
1163
  * @public
1246
1164
  * @memberof Meeting
1247
1165
  */
1248
- updateAudio(options: {
1249
- sendAudio: boolean;
1250
- receiveAudio: boolean;
1251
- stream: MediaStream;
1252
- }): Promise<any>;
1253
- /**
1254
- * Update the main video track with new parameters
1255
- *
1256
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1257
- *
1258
- * @param {Object} options
1259
- * @param {boolean} options.sendVideo
1260
- * @param {boolean} options.receiveVideo
1261
- * @param {MediaStream} options.stream Stream that contains the video track to update
1262
- * @returns {Promise}
1263
- * @public
1264
- * @memberof Meeting
1265
- */
1266
- updateVideo(options: {
1267
- sendVideo: boolean;
1268
- receiveVideo: boolean;
1269
- stream: MediaStream;
1270
- }): any;
1271
- /**
1272
- * Internal function when stopping a share stream, cleanup
1273
- * @param {boolean} sendShare
1274
- * @param {boolean} previousShareStatus
1275
- * @returns {Promise}
1276
- * @private
1277
- * @memberof Meeting
1278
- */
1279
- private checkForStopShare;
1280
- /**
1281
- * Update the share streams, can be used to start sharing
1282
- *
1283
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1284
- *
1285
- * @param {Object} options
1286
- * @param {boolean} options.sendShare
1287
- * @param {boolean} options.receiveShare
1288
- * @returns {Promise}
1289
- * @public
1290
- * @memberof Meeting
1291
- */
1292
- updateShare(options: {
1293
- sendShare?: boolean;
1294
- receiveShare?: boolean;
1295
- stream?: any;
1296
- skipSignalingCheck?: boolean;
1297
- }): any;
1298
- /**
1299
- * Do all the attach media pre set up before executing the actual attach
1300
- * @param {MediaStream} localStream
1301
- * @param {MediaStream} localShare
1302
- * @param {MediaDirection} mediaSettings
1303
- * @returns {undefined}
1304
- * @private
1305
- * @memberof Meeting
1306
- */
1307
- private preMedia;
1166
+ updateMedia(options: {
1167
+ audioEnabled?: boolean;
1168
+ videoEnabled?: boolean;
1169
+ shareAudioEnabled?: boolean;
1170
+ shareVideoEnabled?: boolean;
1171
+ }): Promise<void>;
1308
1172
  /**
1309
1173
  * Acknowledge the meeting, outgoing or incoming
1310
1174
  * @param {String} type
@@ -1312,7 +1176,11 @@ export default class Meeting extends StatelessWebexPlugin {
1312
1176
  * @public
1313
1177
  * @memberof Meeting
1314
1178
  */
1315
- acknowledge(type: string): any;
1179
+ acknowledge(type: string): Promise<{
1180
+ response: any;
1181
+ }> | Promise<{
1182
+ message: string;
1183
+ }>;
1316
1184
  /**
1317
1185
  * Decline this meeting
1318
1186
  * @param {String} reason
@@ -1322,15 +1190,45 @@ export default class Meeting extends StatelessWebexPlugin {
1322
1190
  */
1323
1191
  decline(reason: string): any;
1324
1192
  /**
1325
- * Leave the current meeting
1193
+ * Returns a promise that will resolve to fetch options for leaving a meeting.
1194
+ *
1195
+ * This is to support quickly submitting a leave request when the browser/tab is closing.
1196
+ * Calling meeting.leave will not work because there are some async steps that will
1197
+ * not complete before the browser is closed. Instead, we pre-gather all the
1198
+ * information/options needed for the request(s), and then simply and quickly
1199
+ * fire the fetch(es) when pagehide is triggered.
1200
+ *
1201
+ * We must use fetch instead of request because fetch has a keepalive option that
1202
+ * allows the request it to outlive the page.
1203
+ *
1204
+ * Note: the $timings values will be wrong, but setRequestTimingsAndFetch() will
1205
+ * properly adjust them before submitting.
1206
+ *
1207
+ * @public
1326
1208
  * @param {Object} options leave options
1327
1209
  * @param {String} options.resourceId the device with which to leave from, empty if just the computer
1210
+ * @param {any} options.reason the reason for leaving
1211
+ * @returns {Promise} resolves to options to be used with fetch
1212
+ */
1213
+ buildLeaveFetchRequestOptions(options?: {
1214
+ resourceId?: string;
1215
+ reason?: any;
1216
+ }): any;
1217
+ /**
1218
+ * Leave the current meeting
1219
+ * @param {Object} options - leave options
1220
+ * @param {String} [options.resourceId] - the device with which to leave from, empty if just the computer
1221
+ * @param {String} [options.clientEventLeaveReason] - the leaveReason to include in the Call Analyzer event.
1222
+ * Must be one of: 'paired-leave' | 'one-to-one' | 'ended-by-locus' (defaults to no reason)
1223
+ * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/main/diagnostic-events.raml#L796
1224
+ * @param {String} [options.reason] - only used for logging
1328
1225
  * @returns {Promise}
1329
1226
  * @public
1330
1227
  * @memberof Meeting
1331
1228
  */
1332
1229
  leave(options?: {
1333
1230
  resourceId?: string;
1231
+ clientEventLeaveReason?: ClientEventLeaveReason;
1334
1232
  reason?: any;
1335
1233
  }): any;
1336
1234
  /**
@@ -1358,12 +1256,12 @@ export default class Meeting extends StatelessWebexPlugin {
1358
1256
  */
1359
1257
  private requestScreenShareFloor;
1360
1258
  /**
1361
- * Stops the screen share
1362
- * @returns {Promise} see #updateShare
1363
- * @public
1364
- * @memberof Meeting
1259
+ * Requests screen share floor if such request is pending.
1260
+ * It should be called whenever meeting state changes to JOINED
1261
+ *
1262
+ * @returns {void}
1365
1263
  */
1366
- stopShare(options?: {}): any;
1264
+ private requestScreenShareFloorIfPending;
1367
1265
  /**
1368
1266
  * Sends a request to Locus to release the screen share floor.
1369
1267
  * @returns {Promise} see #meetingRequest.changeMeetingFloor
@@ -1378,6 +1276,32 @@ export default class Meeting extends StatelessWebexPlugin {
1378
1276
  * @memberof Meeting
1379
1277
  */
1380
1278
  startRecording(): Promise<any>;
1279
+ /**
1280
+ * set the mute on entry flag for participants if you're the host
1281
+ * @returns {Promise}
1282
+ * @param {boolean} enabled
1283
+ * @public
1284
+ * @memberof Meeting
1285
+ */
1286
+ setMuteOnEntry(enabled: boolean): Promise<any>;
1287
+ /**
1288
+ * set the disallow unmute flag for participants if you're the host
1289
+ * @returns {Promise}
1290
+ * @param {boolean} enabled
1291
+ * @public
1292
+ * @memberof Meeting
1293
+ */
1294
+ setDisallowUnmute(enabled: boolean): Promise<any>;
1295
+ /**
1296
+ * set the mute all flag for participants if you're the host
1297
+ * @returns {Promise}
1298
+ * @param {boolean} mutedEnabled
1299
+ * @param {boolean} disallowUnmuteEnabled
1300
+ * @param {boolean} muteOnEntryEnabled
1301
+ * @public
1302
+ * @memberof Meeting
1303
+ */
1304
+ setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
1381
1305
  /**
1382
1306
  * End the recording of this meeting
1383
1307
  * @returns {Promise}
@@ -1428,7 +1352,7 @@ export default class Meeting extends StatelessWebexPlugin {
1428
1352
  * @public
1429
1353
  * @memberof Meeting
1430
1354
  */
1431
- sendDTMF(tones: string): any;
1355
+ sendDTMF(tones: string): Promise<any>;
1432
1356
  /**
1433
1357
  * Sends request to change layout type for the current meeting for the specific participant/device only
1434
1358
  * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
@@ -1453,53 +1377,33 @@ export default class Meeting extends StatelessWebexPlugin {
1453
1377
  height: number;
1454
1378
  };
1455
1379
  }): any;
1456
- /**
1457
- * Sets the quality of the local video stream
1458
- * @param {String} level {LOW|MEDIUM|HIGH}
1459
- * @returns {Promise<MediaStream>} localStream
1460
- */
1461
- setLocalVideoQuality(level: string): any;
1462
1380
  /**
1463
1381
  * Sets the quality level of the remote incoming media
1464
1382
  * @param {String} level {LOW|MEDIUM|HIGH}
1465
1383
  * @returns {Promise}
1466
1384
  */
1467
- setRemoteQualityLevel(level: string): any;
1385
+ setRemoteQualityLevel(level: string): Promise<void>;
1468
1386
  /**
1469
- * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1470
- * @param {String} level {LOW|MEDIUM|HIGH}
1471
- * @returns {Promise}
1472
- * @deprecated After FHD support
1387
+ * Functionality for when a share audio is ended.
1388
+ * @private
1389
+ * @memberof Meeting
1390
+ * @returns {undefined}
1473
1391
  */
1474
- setMeetingQuality(level: string): any;
1392
+ private handleShareAudioStreamEnded;
1475
1393
  /**
1476
- *
1477
- * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1478
- *
1479
- * @param {Object} options parameter
1480
- * @param {Boolean} options.sendAudio send audio from the display share
1481
- * @param {Boolean} options.sendShare send video from the display share
1482
- * @param {Object} options.sharePreferences
1483
- * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1484
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1485
- * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1486
- * @returns {Promise}
1394
+ * Functionality for when a share video is ended.
1395
+ * @private
1396
+ * @memberof Meeting
1397
+ * @returns {undefined}
1487
1398
  */
1488
- shareScreen(options?: {
1489
- sendAudio: boolean;
1490
- sendShare: boolean;
1491
- sharePreferences: {
1492
- shareConstraints: MediaTrackConstraints;
1493
- };
1494
- }): any;
1399
+ private handleShareVideoStreamEnded;
1495
1400
  /**
1496
- * Functionality for when a share is ended.
1401
+ * Emits meeting:stoppedSharingLocal
1497
1402
  * @private
1498
- * @memberof Meeting
1499
- * @param {MediaStream} localShare
1500
1403
  * @returns {undefined}
1404
+ * @memberof Meeting
1501
1405
  */
1502
- private handleShareTrackEnded;
1406
+ private triggerStoppedSharing;
1503
1407
  /**
1504
1408
  * Emits the 'network:quality' event
1505
1409
  * 1 indicates an acceptable uplink network.
@@ -1514,92 +1418,16 @@ export default class Meeting extends StatelessWebexPlugin {
1514
1418
  private sendNetworkQualityEvent;
1515
1419
  /**
1516
1420
  * Handle logging the media
1517
- * @param {Object} audioTrack The audio track
1518
- * @param {Object} videoTrack The video track
1421
+ * @param {Object} mediaProperties
1519
1422
  * @private
1520
1423
  * @returns {undefined}
1521
1424
  */
1522
1425
  private handleMediaLogging;
1523
- /**
1524
- * @param {string} typeMedia 'audio' or 'video'
1525
- * @returns {undefined}
1526
- */
1527
- setStartSetupDelay(typeMedia: string): void;
1528
- /**
1529
- * @param {string} typeMedia 'audio' or 'video'
1530
- * @returns {undefined}
1531
- */
1532
- setEndSetupDelay(typeMedia: string): void;
1533
- /**
1534
- * @param {string} typeMedia 'audio' or 'video'
1535
- * @returns {string} duration between start and end of setup
1536
- */
1537
- getSetupDelayDuration(typeMedia: string): number;
1538
- /**
1539
- * @param {string} typeMedia 'audio' or 'video'
1540
- * @returns {undefined}
1541
- */
1542
- setStartSendingMediaDelay(typeMedia: string): void;
1543
- /**
1544
- * @param {string} typeMedia 'audio' or 'video'
1545
- * @returns {undefined}
1546
- */
1547
- setEndSendingMediaDelay(typeMedia: string): void;
1548
- /**
1549
- * @param {string} typeMedia 'audio' or 'video'
1550
- * @returns {string} duration between join response and first media tx
1551
- */
1552
- getSendingMediaDelayDuration(typeMedia: string): number;
1553
- /**
1554
- *
1555
- * @returns {undefined}
1556
- */
1557
- setStartLocalSDPGenRemoteSDPRecvDelay(): void;
1558
- /**
1559
- *
1560
- * @returns {undefined}
1561
- */
1562
- setEndLocalSDPGenRemoteSDPRecvDelay(): void;
1563
- /**
1564
- *
1565
- * @returns {string} duration between local SDP generation and remote SDP reception
1566
- */
1567
- getLocalSDPGenRemoteSDPRecvDelay(): number;
1568
- /**
1569
- *
1570
- * @returns {undefined}
1571
- */
1572
- setStartCallInitiateJoinReq(): void;
1573
- /**
1574
- *
1575
- * @returns {undefined}
1576
- */
1577
- setEndCallInitiateJoinReq(): void;
1578
- /**
1579
- *
1580
- * @returns {string} duration between call initiate and sending join request to locus
1581
- */
1582
- getCallInitiateJoinReq(): number;
1583
- /**
1584
- *
1585
- * @returns {undefined}
1586
- */
1587
- setStartJoinReqResp(): void;
1588
- /**
1589
- *
1590
- * @returns {undefined}
1591
- */
1592
- setEndJoinReqResp(): void;
1593
1426
  /**
1594
1427
  *
1595
- * @returns {string} duration between sending locus join request and receiving join response
1428
+ * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1596
1429
  */
1597
- getJoinReqResp(): number;
1598
- /**
1599
- *
1600
- * @returns {string} duration between call initiate and successful locus join (even if it is in lobby)
1601
- */
1602
- getTotalJmt(): number;
1430
+ getCurUserType(): "host" | "cohost" | "attendee";
1603
1431
  /**
1604
1432
  * End the current meeting for all
1605
1433
  * @returns {Promise}
@@ -1614,35 +1442,6 @@ export default class Meeting extends StatelessWebexPlugin {
1614
1442
  * @memberof Meeting
1615
1443
  */
1616
1444
  clearMeetingData: () => void;
1617
- /**
1618
- * Internal API to return status of BNR
1619
- * @returns {Boolean}
1620
- * @public
1621
- * @memberof Meeting
1622
- */
1623
- isBnrEnabled(): any;
1624
- /**
1625
- * Internal API to obtain BNR enabled MediaStream
1626
- * @returns {Promise<MediaStreamTrack>}
1627
- * @private
1628
- * @param {MedaiStreamTrack} audioTrack from updateAudio
1629
- * @memberof Meeting
1630
- */
1631
- private internal_enableBNR;
1632
- /**
1633
- * Enable the audio track with BNR for a meeting
1634
- * @returns {Promise} resolves the data from enable bnr or rejects if there is no audio or audio is muted
1635
- * @public
1636
- * @memberof Meeting
1637
- */
1638
- enableBNR(): any;
1639
- /**
1640
- * Disable the BNR for an audio track
1641
- * @returns {Promise} resolves the data from disable bnr or rejects if there is no audio set
1642
- * @public
1643
- * @memberof Meeting
1644
- */
1645
- disableBNR(): any;
1646
1445
  /**
1647
1446
  * starts keepAlives being sent
1648
1447
  * @returns {void}
@@ -1675,7 +1474,7 @@ export default class Meeting extends StatelessWebexPlugin {
1675
1474
  * @public
1676
1475
  * @memberof Meeting
1677
1476
  */
1678
- toggleReactions(enable: boolean): any;
1477
+ toggleReactions(enable: boolean): Promise<any>;
1679
1478
  /**
1680
1479
  * Throws if we don't have a media connection created
1681
1480
  *
@@ -1683,24 +1482,52 @@ export default class Meeting extends StatelessWebexPlugin {
1683
1482
  */
1684
1483
  private checkMediaConnection;
1685
1484
  /**
1686
- * Publishes specified local tracks in the meeting
1485
+ * Method to enable or disable the 'Music mode' effect on audio stream
1687
1486
  *
1688
- * @param {Object} tracks
1487
+ * @param {boolean} shouldEnableMusicMode
1689
1488
  * @returns {Promise}
1690
1489
  */
1691
- publishTracks(tracks: {
1692
- microphone?: MediaStreamTrack;
1693
- camera?: MediaStreamTrack;
1694
- screenShare: {
1695
- audio?: MediaStreamTrack;
1696
- video?: MediaStreamTrack;
1697
- };
1698
- }): Promise<void>;
1490
+ enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1491
+ /** Updates the tracks being sent on the transcoded media connection
1492
+ *
1493
+ * @returns {Promise<void>}
1494
+ */
1495
+ private updateTranscodedMediaConnection;
1496
+ /**
1497
+ * Publishes a stream.
1498
+ *
1499
+ * @param {MediaType} mediaType of the stream
1500
+ * @param {LocalStream} stream to publish
1501
+ * @returns {Promise}
1502
+ */
1503
+ private publishStream;
1504
+ /**
1505
+ * Un-publishes a stream.
1506
+ *
1507
+ * @param {MediaType} mediaType of the stream
1508
+ * @param {LocalStream} stream to unpublish
1509
+ * @returns {Promise}
1510
+ */
1511
+ private unpublishStream;
1512
+ /**
1513
+ * Publishes specified local streams in the meeting
1514
+ *
1515
+ * @param {Object} streams
1516
+ * @returns {Promise}
1517
+ */
1518
+ publishStreams(streams: LocalStreams): Promise<void>;
1699
1519
  /**
1700
- * Un-publishes specified local tracks in the meeting
1520
+ * Un-publishes specified local streams in the meeting
1701
1521
  *
1702
- * @param {Array<MediaStreamTrack>} tracks
1522
+ * @param {Array<LocalStream>} streams
1703
1523
  * @returns {Promise}
1704
1524
  */
1705
- unpublishTracks(tracks: MediaStreamTrack[]): Promise<void>;
1525
+ unpublishStreams(streams: LocalStream[]): Promise<void>;
1526
+ /**
1527
+ * Gets the time left in seconds till the permission token expires
1528
+ * (from the time the function has been fired)
1529
+ *
1530
+ * @returns {number} time left in seconds
1531
+ */
1532
+ getPermissionTokenTimeLeftInSec(): number | undefined;
1706
1533
  }