@webex/plugin-meetings 2.60.0-next.1 → 2.60.0-next.11

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