@webex/plugin-meetings 3.12.0-next.5 → 3.12.0-next.50

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 (136) hide show
  1. package/AGENTS.md +9 -0
  2. package/dist/aiEnableRequest/index.js +15 -2
  3. package/dist/aiEnableRequest/index.js.map +1 -1
  4. package/dist/breakouts/breakout.js +6 -2
  5. package/dist/breakouts/breakout.js.map +1 -1
  6. package/dist/breakouts/index.js +1 -1
  7. package/dist/config.js +1 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/constants.js +6 -3
  10. package/dist/constants.js.map +1 -1
  11. package/dist/controls-options-manager/constants.js +11 -1
  12. package/dist/controls-options-manager/constants.js.map +1 -1
  13. package/dist/controls-options-manager/index.js +38 -24
  14. package/dist/controls-options-manager/index.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +91 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/hashTree/constants.js +10 -1
  18. package/dist/hashTree/constants.js.map +1 -1
  19. package/dist/hashTree/hashTreeParser.js +593 -358
  20. package/dist/hashTree/hashTreeParser.js.map +1 -1
  21. package/dist/hashTree/utils.js +22 -0
  22. package/dist/hashTree/utils.js.map +1 -1
  23. package/dist/index.js +7 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/interceptors/locusRetry.js +23 -8
  26. package/dist/interceptors/locusRetry.js.map +1 -1
  27. package/dist/interpretation/index.js +10 -1
  28. package/dist/interpretation/index.js.map +1 -1
  29. package/dist/interpretation/siLanguage.js +1 -1
  30. package/dist/locus-info/controlsUtils.js +4 -1
  31. package/dist/locus-info/controlsUtils.js.map +1 -1
  32. package/dist/locus-info/index.js +277 -86
  33. package/dist/locus-info/index.js.map +1 -1
  34. package/dist/locus-info/types.js +16 -0
  35. package/dist/locus-info/types.js.map +1 -1
  36. package/dist/media/properties.js +1 -0
  37. package/dist/media/properties.js.map +1 -1
  38. package/dist/meeting/in-meeting-actions.js +3 -1
  39. package/dist/meeting/in-meeting-actions.js.map +1 -1
  40. package/dist/meeting/index.js +842 -521
  41. package/dist/meeting/index.js.map +1 -1
  42. package/dist/meeting/util.js +19 -2
  43. package/dist/meeting/util.js.map +1 -1
  44. package/dist/meetings/index.js +199 -77
  45. package/dist/meetings/index.js.map +1 -1
  46. package/dist/meetings/meetings.types.js +6 -1
  47. package/dist/meetings/meetings.types.js.map +1 -1
  48. package/dist/meetings/request.js +39 -0
  49. package/dist/meetings/request.js.map +1 -1
  50. package/dist/meetings/util.js +67 -5
  51. package/dist/meetings/util.js.map +1 -1
  52. package/dist/member/index.js +10 -0
  53. package/dist/member/index.js.map +1 -1
  54. package/dist/member/types.js.map +1 -1
  55. package/dist/member/util.js +3 -0
  56. package/dist/member/util.js.map +1 -1
  57. package/dist/metrics/constants.js +2 -1
  58. package/dist/metrics/constants.js.map +1 -1
  59. package/dist/recording-controller/index.js +1 -3
  60. package/dist/recording-controller/index.js.map +1 -1
  61. package/dist/types/config.d.ts +1 -0
  62. package/dist/types/constants.d.ts +2 -0
  63. package/dist/types/controls-options-manager/constants.d.ts +6 -1
  64. package/dist/types/controls-options-manager/index.d.ts +10 -0
  65. package/dist/types/hashTree/constants.d.ts +1 -0
  66. package/dist/types/hashTree/hashTreeParser.d.ts +61 -15
  67. package/dist/types/hashTree/utils.d.ts +11 -0
  68. package/dist/types/index.d.ts +2 -0
  69. package/dist/types/interceptors/locusRetry.d.ts +4 -4
  70. package/dist/types/locus-info/index.d.ts +46 -6
  71. package/dist/types/locus-info/types.d.ts +17 -1
  72. package/dist/types/media/properties.d.ts +1 -0
  73. package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
  74. package/dist/types/meeting/index.d.ts +70 -1
  75. package/dist/types/meeting/util.d.ts +8 -0
  76. package/dist/types/meetings/index.d.ts +18 -1
  77. package/dist/types/meetings/meetings.types.d.ts +15 -0
  78. package/dist/types/meetings/request.d.ts +14 -0
  79. package/dist/types/member/index.d.ts +1 -0
  80. package/dist/types/member/types.d.ts +1 -0
  81. package/dist/types/member/util.d.ts +1 -0
  82. package/dist/types/metrics/constants.d.ts +1 -0
  83. package/dist/webinar/index.js +361 -235
  84. package/dist/webinar/index.js.map +1 -1
  85. package/package.json +22 -22
  86. package/src/aiEnableRequest/index.ts +16 -0
  87. package/src/breakouts/breakout.ts +2 -1
  88. package/src/config.ts +1 -0
  89. package/src/constants.ts +5 -1
  90. package/src/controls-options-manager/constants.ts +14 -1
  91. package/src/controls-options-manager/index.ts +47 -24
  92. package/src/controls-options-manager/util.ts +81 -1
  93. package/src/hashTree/constants.ts +9 -0
  94. package/src/hashTree/hashTreeParser.ts +306 -160
  95. package/src/hashTree/utils.ts +17 -0
  96. package/src/index.ts +5 -0
  97. package/src/interceptors/locusRetry.ts +25 -4
  98. package/src/interpretation/index.ts +25 -8
  99. package/src/locus-info/controlsUtils.ts +3 -1
  100. package/src/locus-info/index.ts +276 -93
  101. package/src/locus-info/types.ts +19 -1
  102. package/src/media/properties.ts +1 -0
  103. package/src/meeting/in-meeting-actions.ts +4 -0
  104. package/src/meeting/index.ts +315 -26
  105. package/src/meeting/util.ts +20 -2
  106. package/src/meetings/index.ts +104 -43
  107. package/src/meetings/meetings.types.ts +19 -0
  108. package/src/meetings/request.ts +43 -0
  109. package/src/meetings/util.ts +80 -1
  110. package/src/member/index.ts +10 -0
  111. package/src/member/types.ts +1 -0
  112. package/src/member/util.ts +3 -0
  113. package/src/metrics/constants.ts +1 -0
  114. package/src/recording-controller/index.ts +1 -2
  115. package/src/webinar/index.ts +162 -21
  116. package/test/unit/spec/aiEnableRequest/index.ts +86 -0
  117. package/test/unit/spec/breakouts/breakout.ts +7 -3
  118. package/test/unit/spec/controls-options-manager/index.js +140 -29
  119. package/test/unit/spec/controls-options-manager/util.js +165 -0
  120. package/test/unit/spec/hashTree/hashTreeParser.ts +1294 -191
  121. package/test/unit/spec/hashTree/utils.ts +88 -1
  122. package/test/unit/spec/interceptors/locusRetry.ts +205 -4
  123. package/test/unit/spec/interpretation/index.ts +26 -4
  124. package/test/unit/spec/locus-info/controlsUtils.js +172 -57
  125. package/test/unit/spec/locus-info/index.js +443 -81
  126. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
  127. package/test/unit/spec/meeting/index.js +836 -41
  128. package/test/unit/spec/meeting/muteState.js +3 -0
  129. package/test/unit/spec/meeting/utils.js +33 -0
  130. package/test/unit/spec/meetings/index.js +275 -10
  131. package/test/unit/spec/meetings/request.js +141 -0
  132. package/test/unit/spec/meetings/utils.js +161 -0
  133. package/test/unit/spec/member/index.js +7 -0
  134. package/test/unit/spec/member/util.js +24 -0
  135. package/test/unit/spec/recording-controller/index.js +9 -8
  136. package/test/unit/spec/webinar/index.ts +141 -16
@@ -1,14 +1,30 @@
1
+ import { Enum } from '../constants';
1
2
  import { HtMeta } from '../hashTree/types';
3
+ export declare const EndMeetingReason: {
4
+ readonly maxMeetingDuration: "MAX_MEETING_DURATION";
5
+ readonly allParticipantsLeft: "ALL_PARTICIPANTS_LEFT";
6
+ readonly sipHostLeft: "SIP_HOST_LEFT";
7
+ readonly noHost: "NO_HOST";
8
+ readonly waitingForMpsEndMeetingTimeout: "WAITING_FOR_MPS_END_MEETING_TIMEOUT";
9
+ readonly fraudDetection: "FRAUD_DETECTION";
10
+ readonly meetingEndedByHost: "MEETING_ENDED_BY_HOST";
11
+ readonly meetingUpdated: "MEETING_UPDATED";
12
+ readonly meetingCancelled: "MEETING_CANCELLED";
13
+ readonly autoEndWithSingleParticipant: "AUTO_END_WITH_SINGLE_PARTICIPANT";
14
+ readonly breakoutEnded: "BREAKOUT_ENDED";
15
+ };
16
+ export type EndMeetingReason = Enum<typeof EndMeetingReason>;
2
17
  export type LocusFullState = {
3
18
  active: boolean;
4
19
  count: number;
5
20
  lastActive: string;
6
21
  locked: boolean;
7
22
  sessionId: string;
8
- seessionIds: string[];
23
+ sessionIds: string[];
9
24
  startTime: number;
10
25
  state: string;
11
26
  type: string;
27
+ endMeetingReason?: EndMeetingReason;
12
28
  };
13
29
  export type Links = {
14
30
  services: Record<'breakout' | 'record', {
@@ -26,6 +26,7 @@ export default class MediaProperties {
26
26
  shareAudioStream?: LocalSystemAudioStream;
27
27
  videoDeviceId: any;
28
28
  videoStream?: LocalCameraStream;
29
+ srtpCipher: string | undefined;
29
30
  namespace: string;
30
31
  mediaIssueCounters: {
31
32
  [key: string]: number;
@@ -115,6 +115,7 @@ interface IInMeetingActions {
115
115
  canDisablePollingQA?: boolean;
116
116
  canAttendeeRequestAiAssistantEnabled?: boolean;
117
117
  isAttendeeRequestAiAssistantDeclinedAll?: boolean;
118
+ isAnonymizeDisplayNamesEnabled?: boolean;
118
119
  }
119
120
  /**
120
121
  * @class InMeetingActions
@@ -230,6 +231,7 @@ export default class InMeetingActions implements IInMeetingActions {
230
231
  canDisablePollingQA: any;
231
232
  canAttendeeRequestAiAssistantEnabled: any;
232
233
  isAttendeeRequestAiAssistantDeclinedAll: any;
234
+ isAnonymizeDisplayNamesEnabled: any;
233
235
  /**
234
236
  * Returns all meeting action options
235
237
  * @returns {Object}
@@ -374,7 +374,7 @@ export default class Meeting extends StatelessWebexPlugin {
374
374
  webinar: any;
375
375
  conversationUrl: string;
376
376
  callStateForMetrics: CallStateForMetrics;
377
- destination: string;
377
+ destination: string | LocusDTO;
378
378
  destinationType: DESTINATION_TYPE;
379
379
  deviceUrl: string;
380
380
  hostId: string;
@@ -412,6 +412,8 @@ export default class Meeting extends StatelessWebexPlugin {
412
412
  floorGrantPending: boolean;
413
413
  hasJoinedOnce: boolean;
414
414
  hasWebsocketConnected: boolean;
415
+ private mercuryOnlineHandler?;
416
+ private mercuryOfflineHandler?;
415
417
  inMeetingActions: InMeetingActions;
416
418
  isLocalShareLive: boolean;
417
419
  isRoapInProgress: boolean;
@@ -1051,6 +1053,13 @@ export default class Meeting extends StatelessWebexPlugin {
1051
1053
  * @memberof Meeting
1052
1054
  */
1053
1055
  setSipUri(sipUri: string): void;
1056
+ /**
1057
+ * After initial locus setup, refreshes destination with synced locus data and optionally
1058
+ * performs deferred meeting info fetch when initial locus was incomplete.
1059
+ * @param {LocusDTO} locus
1060
+ * @returns {void}
1061
+ */
1062
+ finalizeMeetingAfterInitialLocusSetup(locus: LocusDTO): Promise<void>;
1054
1063
  /**
1055
1064
  * Set the locus info the class instance. Should be called with the parsed locus
1056
1065
  * we got in the join response.
@@ -1163,6 +1172,22 @@ export default class Meeting extends StatelessWebexPlugin {
1163
1172
  * @memberof Meeting
1164
1173
  */
1165
1174
  setMercuryListener(): void;
1175
+ /**
1176
+ * Removes this meeting's Mercury ONLINE/OFFLINE event listeners registered
1177
+ * by setMercuryListener(). Must be called before Locus /leave to avoid
1178
+ * unnecessary syncs/metrics triggered by events received while leaving
1179
+ * (per Locus team recommendation).
1180
+ *
1181
+ * Mercury is a process-wide singleton shared with other plugins, so we
1182
+ * pass the bound handler refs to .off() to avoid clearing every listener
1183
+ * for ONLINE/OFFLINE on the shared emitter.
1184
+ *
1185
+ * Idempotent: subsequent calls are no-ops because the handler refs are
1186
+ * cleared after detaching.
1187
+ * @private
1188
+ * @returns {void}
1189
+ */
1190
+ private stopListeningForMercuryEvents;
1166
1191
  /**
1167
1192
  * Close the peer connections and remove them from the class.
1168
1193
  * Cleanup any media connection related things.
@@ -1318,6 +1343,11 @@ export default class Meeting extends StatelessWebexPlugin {
1318
1343
  * @returns{void}
1319
1344
  */
1320
1345
  private triggerStopReceivingTranscriptionEvent;
1346
+ /**
1347
+ * Restores LLM subchannel subscriptions after reconnect when captions are active.
1348
+ * @returns {void}
1349
+ */
1350
+ private restoreLLMSubscriptionsIfNeeded;
1321
1351
  /**
1322
1352
  * This is a callback for the LLM event that is triggered when it comes online
1323
1353
  * This method in turn will trigger an event to the developers that the LLM is connected
@@ -1351,8 +1381,41 @@ export default class Meeting extends StatelessWebexPlugin {
1351
1381
  * @returns {void}
1352
1382
  */
1353
1383
  private clearLLMHealthCheckTimer;
1384
+ /**
1385
+ * Removes LLM event listeners and clears the health check timer.
1386
+ * Must be called before Locus /leave to avoid unnecessary syncs triggered
1387
+ * by events received while leaving (per Locus team recommendation).
1388
+ * Idempotent: safe to call multiple times; .off() is a no-op when no
1389
+ * matching listener is registered.
1390
+ * @private
1391
+ * @returns {void}
1392
+ */
1393
+ private stopListeningForLLMEvents;
1394
+ /**
1395
+ * Stops listening on every event bus (LLM, Mercury, voicea/transcription,
1396
+ * annotation) that could otherwise deliver events to this meeting while
1397
+ * Locus is processing /leave or /end. Per the Locus team recommendation,
1398
+ * this must run before the Locus request is dispatched to avoid
1399
+ * unnecessary syncs triggered by in-flight events.
1400
+ *
1401
+ * Voicea (transcription) subscribes to llm 'event:relay.event' internally,
1402
+ * and the annotation plugin subscribes to both mercury and llm, so both
1403
+ * must be torn down alongside the direct LLM/Mercury listeners.
1404
+ *
1405
+ * Idempotent: safe to call multiple times; .off() is a no-op when no
1406
+ * matching listener is registered, and stopTranscription is guarded.
1407
+ * @private
1408
+ * @returns {void}
1409
+ */
1410
+ private stopListeningForMeetingEvents;
1354
1411
  /**
1355
1412
  * Disconnects and cleans up the default LLM session listeners/timers.
1413
+ *
1414
+ * Ownership-aware: only calls `disconnectLLM` when this meeting is the
1415
+ * current owner of the default LLM session (or when no owner is recorded).
1416
+ * Event listeners belonging to this meeting instance are always detached
1417
+ * so they do not receive another meeting's relay events.
1418
+ *
1356
1419
  * @param {Object} options
1357
1420
  * @param {boolean} [options.removeOnlineListener=true] removes the one-time online listener
1358
1421
  * @param {boolean} [options.throwOnError=true] rethrows disconnect errors when true
@@ -1372,6 +1435,12 @@ export default class Meeting extends StatelessWebexPlugin {
1372
1435
  * @returns {void}
1373
1436
  */
1374
1437
  saveDataChannelToken(join: any): void;
1438
+ /**
1439
+ * Ensures default-session data channel token exists after lobby admission.
1440
+ * Some lobby users do not receive a token until they are admitted.
1441
+ * @returns {Promise<boolean>} true when a new token is fetched and cached
1442
+ */
1443
+ private ensureDefaultDatachannelTokenAfterAdmit;
1375
1444
  /**
1376
1445
  * Connects to low latency mercury and reconnects if the address has changed
1377
1446
  * It will also disconnect if called when the meeting has ended
@@ -133,6 +133,13 @@ declare const MeetingUtil: {
133
133
  * @returns {void}
134
134
  */
135
135
  addSequence: (meeting: any, requestBody: any) => void;
136
+ /**
137
+ * Checks if Locus API response contains a Locus DTO
138
+ *
139
+ * @param {any} response http response from Locus API call
140
+ * @returns {boolean} true if response contains a Locus DTO
141
+ */
142
+ isLocusDtoInAPIResponse(response: any): any;
136
143
  /**
137
144
  * Updates the locus info for the meeting with the locus
138
145
  * information returned from API requests made to Locus
@@ -146,6 +153,7 @@ declare const MeetingUtil: {
146
153
  generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
147
154
  canAttendeeRequestAiAssistantEnabled: (displayHints?: any[], roles?: any[]) => boolean;
148
155
  attendeeRequestAiAssistantDeclinedAll: (displayHints?: any[]) => boolean;
156
+ isAnonymizeDisplayNamesEnabled: (displayHints: any) => any;
149
157
  selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => boolean;
150
158
  parseInterpretationInfo: (meeting: any, meetingInfo: any) => void;
151
159
  /**
@@ -8,7 +8,7 @@ import 'webrtc-adapter';
8
8
  import { LOCUSEVENT, DESTINATION_TYPE } from '../constants';
9
9
  import { CallStateForMetrics } from '../meeting';
10
10
  import Reachability from '../reachability';
11
- import { INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus } from './meetings.types';
11
+ import { FetchSitePreferencesMeViaSiteOptions, INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus, SitePreferencesResponse } from './meetings.types';
12
12
  import { HashTreeMessage } from '../hashTree/hashTreeParser';
13
13
  export type LocusEvent = {
14
14
  eventType: LOCUSEVENT;
@@ -368,6 +368,23 @@ export default class Meetings extends WebexPlugin {
368
368
  * @memberof Meetings
369
369
  */
370
370
  getPersonalMeetingRoom(): any;
371
+ /**
372
+ * Fetches site preferences for the provided Webex site, or the preferred Webex site.
373
+ * This is used to determine capabilities of the site, such as whether scheduling a webinar is supported.
374
+ *
375
+ * @param {object} [options]
376
+ * @param {string} [options.siteUrl] - Webex site URL. Defaults to preferredWebexSite, for example "cisco.webex.com".
377
+ * @param {string} [options.siteName] - Site name query override. Defaults to the site name derived from siteUrl, for example "cisco" for "cisco.webex.com".
378
+ * @param {SitePreferenceSelectOption[]} [options.selectOptions] - Preference sections to fetch. Defaults to 'scheduling'.
379
+ * @returns {Promise<SitePreferencesResponse>} site preferences response body
380
+ * @throws {ParameterError}
381
+ * @public
382
+ * @memberof Meetings
383
+ * @example
384
+ * const preferences = await webex.meetings.fetchSitePreferencesMeViaSite();
385
+ * const supportScheduleWebinar = preferences?.scheduling?.supportScheduleWebinar;
386
+ */
387
+ fetchSitePreferencesMeViaSite(options?: FetchSitePreferencesMeViaSiteOptions): Promise<SitePreferencesResponse>;
371
388
  /**
372
389
  * Returns basic information about a meeting that exists or
373
390
  * used to exist in the MeetingCollection
@@ -19,3 +19,18 @@ export type MeetingRegistrationStatus = {
19
19
  mercuryConnect: boolean;
20
20
  checkH264Support: boolean;
21
21
  };
22
+ export declare enum SitePreferenceSelectOption {
23
+ SCHEDULING = "scheduling"
24
+ }
25
+ export type FetchSitePreferencesMeViaSiteOptions = {
26
+ siteUrl?: string;
27
+ siteName?: string;
28
+ selectOptions?: SitePreferenceSelectOption[];
29
+ };
30
+ export declare const DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS: SitePreferenceSelectOption[];
31
+ export type SitePreferencesResponse = {
32
+ scheduling?: {
33
+ supportScheduleWebinar?: boolean;
34
+ webinarWebLink?: string;
35
+ };
36
+ };
@@ -1,4 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import { type FetchSitePreferencesMeViaSiteOptions, type SitePreferencesResponse } from './meetings.types';
2
3
  /**
3
4
  * @class MeetingRequest
4
5
  */
@@ -18,6 +19,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
18
19
  * @returns {Promise<object>} getMeetingPreferences
19
20
  */
20
21
  getMeetingPreferences(): any;
22
+ /**
23
+ * Fetches site preferences from a given site given a select option and a siteUrl with an optional siteName. If siteName is not provided, it will be derived from the siteUrl. If siteUrl is not provided, it will throw an error. If selectOptions is not provided, it will default to scheduling.
24
+ *
25
+ * @param {object} [options]
26
+ * @param {string} [options.siteUrl] - Webex site URL, for example "cisco.webex.com".
27
+ * @param {string} [options.siteName] - Site name query override. Defaults to the site name derived from options.siteUrl, e.g., "cisco".
28
+ * @param {SitePreferenceSelectOption[]} [options.selectOptions] - Preference sections to fetch. Defaults to 'scheduling'.
29
+ * @returns {Promise<SitePreferencesResponse>} site preferences response body
30
+ * @throws {ParameterError}
31
+ * @public
32
+ * @memberof MeetingRequest
33
+ */
34
+ fetchSitePreferencesMeViaSite(options?: FetchSitePreferencesMeViaSiteOptions): Promise<SitePreferencesResponse>;
21
35
  /**
22
36
  * Fetches indivdual locus rather then getting all at once
23
37
  * @param {object} responseBody determine the locus and fetch them if a remoteUrl is given
@@ -20,6 +20,7 @@ export default class Member {
20
20
  isModerator: any;
21
21
  isModeratorAssignmentProhibited: any;
22
22
  isPresenterAssignmentProhibited: any;
23
+ isAttendeeAssignmentProhibited: any;
23
24
  isMutable: any;
24
25
  isNotAdmitted: any;
25
26
  isRecording: any;
@@ -89,6 +89,7 @@ export interface Participant {
89
89
  moderator: boolean;
90
90
  moderatorAssignmentNotAllowed: boolean;
91
91
  presenterAssignmentNotAllowed: boolean;
92
+ attendeeAssignmentNotAllowed?: boolean;
92
93
  person: ParticipantPerson;
93
94
  resourceGuest: boolean;
94
95
  state: string;
@@ -66,6 +66,7 @@ declare const MemberUtil: {
66
66
  isDevice: (participant: Participant) => boolean;
67
67
  isModeratorAssignmentProhibited: (participant: Participant) => boolean;
68
68
  isPresenterAssignmentProhibited: (participant: Participant) => boolean;
69
+ isAttendeeAssignmentProhibited: (participant: Participant) => boolean;
69
70
  /**
70
71
  * checks to see if the participant id is the same as the passed id
71
72
  * there are multiple ids that can be used
@@ -92,5 +92,6 @@ declare const BEHAVIORAL_METRICS: {
92
92
  DEPRECATED_DELETE_CODEC_PARAMETERS_USED: string;
93
93
  SET_CUSTOM_CODEC_PARAMETERS_USED: string;
94
94
  MARK_CUSTOM_CODEC_PARAMETERS_FOR_DELETION_USED: string;
95
+ HASH_TREE_SYNC_FAILURE: string;
95
96
  };
96
97
  export { BEHAVIORAL_METRICS as default };