@webex/internal-plugin-metrics 3.12.0-next.5 → 3.12.0-next.51

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 (84) hide show
  1. package/README.md +274 -0
  2. package/dist/automated-user.js +19 -0
  3. package/dist/automated-user.js.map +1 -0
  4. package/dist/batcher.js +3 -0
  5. package/dist/batcher.js.map +1 -1
  6. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +635 -62
  7. package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
  8. package/dist/call-diagnostic/call-diagnostic-metrics.js +188 -78
  9. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  10. package/dist/call-diagnostic/call-diagnostic-metrics.util.js +5 -0
  11. package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
  12. package/dist/call-diagnostic/config.js +16 -3
  13. package/dist/call-diagnostic/config.js.map +1 -1
  14. package/dist/config.js +8 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/index.js +25 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/metrics.js +118 -5
  19. package/dist/metrics.js.map +1 -1
  20. package/dist/metrics.types.js +4 -0
  21. package/dist/metrics.types.js.map +1 -1
  22. package/dist/network-telemetry.js +610 -0
  23. package/dist/network-telemetry.js.map +1 -0
  24. package/dist/new-metrics.js +63 -17
  25. package/dist/new-metrics.js.map +1 -1
  26. package/dist/privacy-and-security-permission-enricher/constants.js +18 -0
  27. package/dist/privacy-and-security-permission-enricher/constants.js.map +1 -0
  28. package/dist/privacy-and-security-permission-enricher/index.js +143 -0
  29. package/dist/privacy-and-security-permission-enricher/index.js.map +1 -0
  30. package/dist/privacy-and-security-permission-enricher/types.js +7 -0
  31. package/dist/privacy-and-security-permission-enricher/types.js.map +1 -0
  32. package/dist/privacy-and-security-permission-enricher/utils.js +71 -0
  33. package/dist/privacy-and-security-permission-enricher/utils.js.map +1 -0
  34. package/dist/types/automated-user.d.ts +2 -0
  35. package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +208 -5
  36. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +73 -14
  37. package/dist/types/call-diagnostic/config.d.ts +4 -0
  38. package/dist/types/config.d.ts +9 -0
  39. package/dist/types/index.d.ts +5 -3
  40. package/dist/types/metrics.types.d.ts +7 -2
  41. package/dist/types/network-telemetry.d.ts +108 -0
  42. package/dist/types/new-metrics.d.ts +17 -1
  43. package/dist/types/privacy-and-security-permission-enricher/constants.d.ts +6 -0
  44. package/dist/types/privacy-and-security-permission-enricher/index.d.ts +40 -0
  45. package/dist/types/privacy-and-security-permission-enricher/types.d.ts +14 -0
  46. package/dist/types/privacy-and-security-permission-enricher/utils.d.ts +5 -0
  47. package/dist/types/unhandled-exception-telemetry/index.d.ts +60 -0
  48. package/dist/types/unhandled-exception-telemetry/utils.d.ts +6 -0
  49. package/dist/unhandled-exception-telemetry/index.js +330 -0
  50. package/dist/unhandled-exception-telemetry/index.js.map +1 -0
  51. package/dist/unhandled-exception-telemetry/utils.js +105 -0
  52. package/dist/unhandled-exception-telemetry/utils.js.map +1 -0
  53. package/package.json +12 -11
  54. package/src/automated-user.ts +16 -0
  55. package/src/batcher.js +4 -0
  56. package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +781 -71
  57. package/src/call-diagnostic/call-diagnostic-metrics.ts +119 -16
  58. package/src/call-diagnostic/call-diagnostic-metrics.util.ts +5 -0
  59. package/src/call-diagnostic/config.ts +14 -0
  60. package/src/config.js +8 -0
  61. package/src/index.ts +16 -0
  62. package/src/metrics.js +123 -5
  63. package/src/metrics.types.ts +25 -3
  64. package/src/network-telemetry.ts +757 -0
  65. package/src/new-metrics.ts +56 -6
  66. package/src/privacy-and-security-permission-enricher/constants.ts +33 -0
  67. package/src/privacy-and-security-permission-enricher/index.ts +142 -0
  68. package/src/privacy-and-security-permission-enricher/types.ts +21 -0
  69. package/src/privacy-and-security-permission-enricher/utils.ts +82 -0
  70. package/src/unhandled-exception-telemetry/index.ts +403 -0
  71. package/src/unhandled-exception-telemetry/utils.ts +101 -0
  72. package/test/unit/spec/automated-user.ts +43 -0
  73. package/test/unit/spec/batcher.js +43 -0
  74. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +14 -2
  75. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +1424 -293
  76. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +906 -159
  77. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +27 -0
  78. package/test/unit/spec/metrics.js +14 -5
  79. package/test/unit/spec/network-telemetry.ts +610 -0
  80. package/test/unit/spec/new-metrics.ts +203 -50
  81. package/test/unit/spec/prelogin-metrics-batcher.ts +71 -36
  82. package/test/unit/spec/privacy-and-security-permission-enricher.ts +318 -0
  83. package/test/unit/spec/unhandled-exception-telemetry/utils.ts +109 -0
  84. package/test/unit/spec/unhandled-exception-telemetry.ts +688 -0
@@ -102,11 +102,13 @@ export declare const ERROR_DESCRIPTIONS: {
102
102
  WEBRTC_API_NOT_AVAILABLE: string;
103
103
  WDM_RESTRICTED_REGION: string;
104
104
  USER_NOT_ALLOWED_JOIN_WEBINAR: string;
105
+ INVALID_MEETING_INFO: string;
105
106
  };
106
107
  export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
107
108
  58400: number;
108
109
  99002: number;
109
110
  99009: number;
111
+ 99019: number;
110
112
  58500: number;
111
113
  400001: number;
112
114
  403004: number;
@@ -134,6 +136,7 @@ export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
134
136
  423001: number;
135
137
  423005: number;
136
138
  423006: number;
139
+ 423008: number;
137
140
  423010: number;
138
141
  423012: number;
139
142
  423013: number;
@@ -147,6 +150,7 @@ export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
147
150
  403037: number;
148
151
  403003: number;
149
152
  403030: number;
153
+ 403106: number;
150
154
  2403001: number;
151
155
  2403002: number;
152
156
  2403003: number;
@@ -8,10 +8,19 @@ declare namespace _default {
8
8
  }
9
9
  export namespace metrics_1 {
10
10
  const appType: string;
11
+ namespace unhandledExceptionTelemetry {
12
+ const enabled: boolean;
13
+ }
14
+ namespace networkTelemetry {
15
+ const enabled_1: boolean;
16
+ export { enabled_1 as enabled };
17
+ export const intervalMs: number;
18
+ }
11
19
  const batcherWait: number;
12
20
  const batcherMaxCalls: number;
13
21
  const batcherMaxWait: number;
14
22
  const batcherRetryPlateau: number;
23
+ const batcherRetryOnNetworkError: boolean;
15
24
  const waitForServiceTimeout: number;
16
25
  }
17
26
  export { metrics_1 as metrics };
@@ -4,7 +4,8 @@
4
4
  import config from './config';
5
5
  import NewMetrics from './new-metrics';
6
6
  import * as Utils from './utils';
7
- import { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitOperationalEvent, SubmitBusinessEvent, SubmitMQE, PreComputedLatencies, SubmitFeatureEvent } from './metrics.types';
7
+ import * as AutomatedUserUtils from './automated-user';
8
+ import { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitOperationalEvent, SubmitBusinessEvent, SubmitMQE, PreComputedLatencies, SubmitFeatureEvent, LocusSyncLatencyEventName, PrivacyAndSecurityPermission } from './metrics.types';
8
9
  import * as CALL_DIAGNOSTIC_CONFIG from './call-diagnostic/config';
9
10
  import * as CallDiagnosticUtils from './call-diagnostic/call-diagnostic-metrics.util';
10
11
  import CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';
@@ -15,5 +16,6 @@ import BusinessMetrics from './business-metrics';
15
16
  import RtcMetrics from './rtcMetrics';
16
17
  import PreLoginMetrics from './prelogin-metrics';
17
18
  export { default, getOSNameInternal } from './metrics';
18
- export { config, CALL_DIAGNOSTIC_CONFIG, NewMetrics, Utils, CallDiagnosticUtils, CallDiagnosticLatencies, CallDiagnosticMetrics, BehavioralMetrics, OperationalMetrics, BusinessMetrics, RtcMetrics, PreLoginMetrics, };
19
- export type { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitMQE, SubmitOperationalEvent, SubmitBusinessEvent, PreComputedLatencies, SubmitFeatureEvent, };
19
+ export { config, CALL_DIAGNOSTIC_CONFIG, AutomatedUserUtils, NewMetrics, Utils, CallDiagnosticUtils, CallDiagnosticLatencies, CallDiagnosticMetrics, BehavioralMetrics, OperationalMetrics, BusinessMetrics, RtcMetrics, PreLoginMetrics, };
20
+ export { isAutomatedUser, isAutomatedUserAgent } from './automated-user';
21
+ export type { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitMQE, SubmitOperationalEvent, SubmitBusinessEvent, PreComputedLatencies, SubmitFeatureEvent, LocusSyncLatencyEventName, PrivacyAndSecurityPermission, };
@@ -8,6 +8,9 @@ export type NewEnvironmentType = NonNullable<RawEvent['origin']['newEnvironment'
8
8
  export type ClientLaunchMethodType = NonNullable<RawEvent['origin']['clientInfo']>['clientLaunchMethod'];
9
9
  export type ClientUserNameInput = NonNullable<RawClientEvent['userNameInput']>;
10
10
  export type ClientEmailInput = NonNullable<RawClientEvent['emailInput']>;
11
+ export type PrivacyAndSecurityPermission = NonNullable<RawClientEvent['privacyAndSecurityPermission']>;
12
+ export type PrivacyAndSecurityPermissionResource = keyof PrivacyAndSecurityPermission;
13
+ export type PrivacyAndSecurityPermissionState = PrivacyAndSecurityPermission[PrivacyAndSecurityPermissionResource];
11
14
  export type BrowserLaunchMethodType = NonNullable<RawEvent['origin']['clientInfo']>['browserLaunchMethod'];
12
15
  export type MetricEventProduct = 'webex' | 'wxcc_desktop' | 'wxcc_crm' | 'wxcc_sdk';
13
16
  export type MetricEventAgent = 'user' | 'browser' | 'system' | 'sdk' | 'redux' | 'service' | 'api';
@@ -41,8 +44,10 @@ export type SubmitMQEOptions = {
41
44
  webexConferenceIdStr?: string;
42
45
  globalMeetingId?: string;
43
46
  };
47
+ export declare const LOCUS_SYNC_LATENCY_EVENT_NAMES: readonly ["internal.client.locus.sync.start", "internal.client.locus.hashtree.request", "internal.client.locus.hashtree.response", "internal.client.locus.sync.request", "internal.client.locus.sync.response", "internal.client.locus.sync.message.received"];
48
+ export type LocusSyncLatencyEventName = (typeof LOCUS_SYNC_LATENCY_EVENT_NAMES)[number];
44
49
  export type InternalEvent = {
45
- name: 'internal.client.meetinginfo.request' | 'internal.client.meetinginfo.response' | 'internal.register.device.request' | 'internal.register.device.response' | 'internal.reset.join.latencies' | 'internal.client.meeting.click.joinbutton' | 'internal.host.meeting.participant.admitted' | 'internal.client.meeting.interstitial-window.showed' | 'internal.client.interstitial-window.click.joinbutton' | 'internal.client.add-media.turn-discovery.start' | 'internal.client.add-media.turn-discovery.end' | 'internal.client.share.initiated' | 'internal.client.share.stopped';
50
+ name: 'internal.client.meetinginfo.request' | 'internal.client.meetinginfo.response' | 'internal.register.device.request' | 'internal.register.device.response' | 'internal.reset.join.latencies' | 'internal.host.meeting.participant.admitted' | 'internal.client.meeting.interstitial-window.showed' | 'internal.client.interstitial-window.click.joinbutton' | 'internal.client.add-media.turn-discovery.start' | 'internal.client.add-media.turn-discovery.end' | 'internal.client.share.initiated' | 'internal.client.share.stopped' | LocusSyncLatencyEventName;
46
51
  payload?: never;
47
52
  options?: never;
48
53
  };
@@ -154,7 +159,7 @@ export type BuildClientEventFetchRequestOptions = (args: {
154
159
  payload?: RecursivePartial<ClientEvent['payload']>;
155
160
  options?: SubmitClientEventOptions;
156
161
  }) => Promise<any>;
157
- export type PreComputedLatencies = 'internal.client.pageJMT' | 'internal.download.time' | 'internal.get.cluster.time' | 'internal.click.to.interstitial' | 'internal.click.to.interstitial.with.user.delay' | 'internal.refresh.captcha.time' | 'internal.exchange.ci.token.time' | 'internal.get.u2c.time' | 'internal.call.init.join.req' | 'internal.other.app.api.time' | 'internal.api.fetch.intelligence.models';
162
+ export type PreComputedLatencies = 'internal.client.pageJMT' | 'internal.download.time' | 'internal.get.cluster.time' | 'internal.click.to.interstitial' | 'internal.click.to.interstitial.with.user.delay' | 'internal.click.to.interstitial.for.client.jmt' | 'internal.refresh.captcha.time' | 'internal.exchange.ci.token.time' | 'internal.get.u2c.time' | 'internal.call.init.join.req' | 'internal.other.app.api.time' | 'internal.api.fetch.intelligence.models' | 'internal.client.locus.sync.random.backoff';
158
163
  export interface IdType {
159
164
  meetingId?: string;
160
165
  callId?: string;
@@ -0,0 +1,108 @@
1
+ export declare const NETWORK_REQUEST_SUMMARY_METRIC = "JS_SDK_NETWORK_REQUEST_SUMMARY";
2
+ export declare const NETWORK_TELEMETRY_INTERVAL_MS: number;
3
+ type Headers = Record<string, unknown>;
4
+ type MetricsSummary = {
5
+ totalSendRequest: number;
6
+ totalFailedRequest: number;
7
+ totalRecvdResponse: number;
8
+ totalFailedResponse: number;
9
+ };
10
+ type RequestMetric = {
11
+ host: string;
12
+ endPoint: string;
13
+ countSendRequest: number;
14
+ countFailedRequest: number;
15
+ countRecvdResponse: number;
16
+ countFailedResponse: number;
17
+ averageNetworkDurationMs: number;
18
+ maxNetworkDurationP90Ms: number;
19
+ maxNetworkDurationP99Ms: number;
20
+ };
21
+ export type NetworkErrorMetric = {
22
+ host: string;
23
+ endPoint: string;
24
+ statusCode: number;
25
+ errorCode: string;
26
+ method: string;
27
+ errorType: string;
28
+ errorMessage: string;
29
+ trackingIds: string[];
30
+ countError: number;
31
+ };
32
+ export type NetworkTelemetry = {
33
+ metricsSummary: MetricsSummary;
34
+ metrics: RequestMetric[];
35
+ errorMetrics: NetworkErrorMetric[];
36
+ errorMetricsSummary: Record<string, {
37
+ count: number;
38
+ }>;
39
+ };
40
+ type ErrorDetails = {
41
+ code?: number | string;
42
+ errorCode?: number | string;
43
+ message?: string;
44
+ name?: string;
45
+ };
46
+ type RequestOptions = {
47
+ api?: string;
48
+ headers?: Headers;
49
+ method?: string;
50
+ resource?: string;
51
+ service?: string;
52
+ timeout?: number;
53
+ uri?: string;
54
+ url?: string;
55
+ $timings?: {
56
+ networkEnd?: number;
57
+ networkStart?: number;
58
+ };
59
+ };
60
+ type RequestFailure = ErrorDetails & {
61
+ body?: ErrorDetails | string;
62
+ status?: number;
63
+ statusCode?: number;
64
+ };
65
+ type NetworkMetricProperties = {
66
+ type: 'operational';
67
+ tags: Record<string, string>;
68
+ fields: MetricsSummary;
69
+ eventPayload: NetworkTelemetry;
70
+ };
71
+ type NetworkTelemetryCollectorOptions = {
72
+ intervalMs?: number;
73
+ onSubmissionFailure: () => void;
74
+ submitMetric: (name: string, properties: NetworkMetricProperties) => unknown;
75
+ };
76
+ type NetworkTelemetryCollector = {
77
+ recordRequest: (options?: RequestOptions) => void;
78
+ recordResponse: (options?: RequestOptions) => void;
79
+ recordFailure: (options?: RequestOptions, reason?: RequestFailure) => void;
80
+ flush: () => Promise<void>;
81
+ stop: () => Promise<void>;
82
+ };
83
+ /**
84
+ * Removes query data and redacts dynamic-looking endpoint segments.
85
+ * @param resource SDK resource path.
86
+ * @returns The normalized endpoint.
87
+ */
88
+ export declare function getOperation(resource?: string): string;
89
+ /**
90
+ * Excludes the transports used to submit telemetry, preventing self-reporting.
91
+ * @param options Request options.
92
+ * @returns Whether the request should be tracked.
93
+ */
94
+ export declare function shouldTrackNetworkRequest(options?: RequestOptions): boolean;
95
+ /**
96
+ * Creates the error entry produced by one failed request.
97
+ * @param options Request options.
98
+ * @param reason Request failure.
99
+ * @returns The normalized error metric.
100
+ */
101
+ export declare function createNetworkErrorMetric(options?: RequestOptions, reason?: RequestFailure): NetworkErrorMetric;
102
+ /**
103
+ * Creates a network telemetry collector and starts its periodic timer.
104
+ * @param options Submission callbacks.
105
+ * @returns The network telemetry collector.
106
+ */
107
+ export declare function createNetworkTelemetryCollector({ intervalMs, onSubmissionFailure, submitMetric, }: NetworkTelemetryCollectorOptions): NetworkTelemetryCollector;
108
+ export {};
@@ -4,7 +4,7 @@ import BehavioralMetrics from './behavioral-metrics';
4
4
  import OperationalMetrics from './operational-metrics';
5
5
  import BusinessMetrics from './business-metrics';
6
6
  import PreLoginMetrics from './prelogin-metrics';
7
- import { RecursivePartial, MetricEventProduct, MetricEventAgent, MetricEventVerb, ClientEvent, FeatureEvent, EventPayload, MediaQualityEvent, InternalEvent, SubmitClientEventOptions, Table, DelayedClientEvent, DelayedClientFeatureEvent } from './metrics.types';
7
+ import { RecursivePartial, MetricEventProduct, MetricEventAgent, MetricEventVerb, ClientEvent, FeatureEvent, EventPayload, MediaQualityEvent, InternalEvent, SubmitClientEventOptions, Table, DelayedClientEvent, DelayedClientFeatureEvent, PrivacyAndSecurityPermission } from './metrics.types';
8
8
  import CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';
9
9
  /**
10
10
  * Metrics plugin to centralize all types of metrics.
@@ -33,6 +33,7 @@ declare class Metrics extends WebexPlugin {
33
33
  */
34
34
  delayedClientEventsOverrides: Partial<DelayedClientEvent['options']>;
35
35
  delayedClientFeatureEventsOverrides: Partial<DelayedClientFeatureEvent['options']>;
36
+ private privacyAndSecurityPermissionEnricher;
36
37
  /**
37
38
  * Constructor
38
39
  * @param args
@@ -78,6 +79,10 @@ declare class Metrics extends WebexPlugin {
78
79
  * @returns true once we have the deviceId we need to submit business events
79
80
  */
80
81
  isReadyToSubmitBusinessEvents(): boolean;
82
+ /**
83
+ * @returns whether the current user agent belongs to an automated user
84
+ */
85
+ isAutomatedUser(): boolean;
81
86
  /**
82
87
  * Behavioral event
83
88
  * @param args
@@ -147,6 +152,17 @@ declare class Metrics extends WebexPlugin {
147
152
  payload?: RecursivePartial<ClientEvent['payload']>;
148
153
  options?: SubmitClientEventOptions;
149
154
  }): Promise<any>;
155
+ /**
156
+ * Stores the latest browser permission state supplied by the client.
157
+ * @param permission latest normalized permission snapshot
158
+ */
159
+ setPrivacyAndSecurityPermission(permission: PrivacyAndSecurityPermission): void;
160
+ /**
161
+ * Resolves event options to the call identity used by Call Diagnostic where possible.
162
+ * @param options client event options
163
+ * @returns the permission history scope
164
+ */
165
+ private getPermissionScope;
150
166
  /**
151
167
  * Issue request to alias a user's pre-login ID with their CI UUID
152
168
  * @param {string} preLoginId
@@ -0,0 +1,6 @@
1
+ import type { PermissionEnrichmentPolicy } from './types';
2
+ export declare const CAMERA_AND_MICROPHONE_PERMISSION_EVENTS: Set<"client.abort.join" | "client.alert.displayed" | "client.alert.removed" | "client.application.validate" | "client.audio.noise.removal" | "client.breakout-session.join.request" | "client.breakout-session.join.response" | "client.breakout-session.leave" | "client.breakout-session.move.request" | "client.breakout-session.move.response" | "client.call.aborted" | "client.call.declined" | "client.call.fallback" | "client.call.diagnostics" | "client.call.displayed" | "client.call.info" | "client.call.initiated" | "client.call.leave" | "client.call.move-media" | "client.call.remote-ended" | "client.call.remote-started" | "client.call.skip-locus-join" | "client.ci.exchange-token.request" | "client.ci.exchange-token.response" | "client.conversation.request" | "client.conversation.response" | "client.click.pre-join" | "client.crash" | "client.daemon.join.begin" | "client.daemon.job.done" | "client.daemon.launch-meeting-process" | "client.daemon.pending-on-existing-upgrade-job" | "client.daemon.query-site-info" | "client.daemon.upgrade-and-join" | "client.daemon.wakeup-meeting-client" | "client.duplicate.join" | "client.device.resource-room.joined" | "client.dialog-window.dismissed" | "client.dialog-window.selected" | "client.dialog-window.showed" | "client.e2ee.join.response" | "client.embedded-authorize-page.loaded" | "client.embedded-object-info" | "client.entering-background" | "client.entering-foreground" | "client.exit.app" | "client.gesture.recognition" | "client.hologram.initiated" | "client.hologram.stopped" | "client.hologram.remote.initiated" | "client.hologram.remote.stopped" | "client.hung" | "client.ice.end" | "client.ice.start" | "client.idbroker.authorize.request" | "client.idbroker.authorize.response" | "client.idbroker.client-credential.request" | "client.idbroker.client-credential.response" | "client.idbroker.cloud-reduced-scope.request" | "client.idbroker.direct-authorize.request" | "client.idbroker.direct-authorize.response" | "client.idbroker.cloud-reduced-scope.response" | "client.idbroker.exchange-token.request" | "client.idbroker.exchange-token.response" | "client.idbroker.kms-reduced-scope.request" | "client.idbroker.kms-reduced-scope.response" | "client.idbroker.scim.request" | "client.idbroker.scim.response" | "client.idbroker.user-invoke.request" | "client.idbroker.user-invoke.response" | "client.installer.start" | "client.installer.end" | "client.installer.download-app" | "client.installer.decompress-app" | "client.installer.fallback" | "client.installer.install-app" | "client.installer.launch-app" | "client.installer.switch.to.webapp" | "client.launcher.start" | "client.launcher.selfupgrade.start" | "client.launcher.selfupgrade.end" | "client.launcher.downloadapp.start" | "client.launcher.downloadapp.end" | "client.launcher.launchapp" | "client.launcher.end" | "client.launcher.restart.begin" | "client.launcher.restart.end" | "client.license.activations.request" | "client.license.activations.response" | "client.llm.connect.response" | "client.interstitial-window.launched" | "client.interstitial-window.start-launch" | "client.ivr.join.request" | "client.ivr.join.response" | "client.ivr.leave.request" | "client.ivr.leave.response" | "client.ivr.notify.request" | "client.ivr.notify.response" | "client.lobby.entered" | "client.lobby.exited" | "client.locus.decline.request" | "client.locus.join.request" | "client.locus.join.response" | "client.locus.leave.request" | "client.locus.leave.response" | "client.locus.media.request" | "client.locus.media.response" | "client.locus.sync.complete" | "client.media-engine.crash" | "client.media-engine.launched" | "client.media-engine.lost" | "client.media-engine.local-sdp-generated" | "client.media-engine.ready" | "client.media-engine.remote-sdp-received" | "client.media-engine.start-launch" | "client.media-device.ready" | "client.media-device.stop" | "client.media-device.error" | "client.media-status" | "client.media.capabilities" | "client.media.ready" | "client.media.reachability" | "client.media.reconnecting" | "client.media.recovered" | "client.media.render.start" | "client.media.render.stop" | "client.media.rx.start" | "client.media.rx.stop" | "client.media.share.csi.changed" | "client.media.tx.start" | "client.media.tx.stop" | "client.meetinginfo.request" | "client.meetinginfo.response" | "client.meetingmanagersdk.ipc.run" | "client.meeting.app-loaded" | "client.meeting.breakout-session.action" | "client.meeting.breakout-session.summary" | "client.meeting.browser-plugin.started" | "client.meeting.click.joinbutton" | "client.meeting.closed" | "client.meeting.disclaimer-window.accepted" | "client.meeting.disclaimer-window.closed" | "client.meeting.disclaimer-window.showed" | "client.meeting.docshow.request" | "client.meeting.docshow.response" | "client.meeting.e2e.u2c.response" | "client.meeting.e2e.wca.response" | "client.meeting.e2e.key.response" | "client.meeting.e2ee.u2c.response" | "client.meeting.e2ee.wca.response" | "client.meeting.e2ee.key.response" | "client.meeting.gpc.download" | "client.meeting.gpcparameter.request" | "client.meeting.gpcparameter.response" | "client.meeting.interstitial-window.closed" | "client.meeting.interstitial-window.showed" | "client.meeting.join.request" | "client.meeting.key-information" | "client.meeting.launched" | "client.meeting.login-window.clicked" | "client.meeting.login-window.closed" | "client.meeting.login-window.showed" | "client.meeting.login.response" | "client.meeting.people-insights.check.response" | "client.meeting.people-insights.query.response" | "client.meeting.ping.request" | "client.meeting.ping.response" | "client.meeting.plugin-extension.started" | "client.meeting.resume" | "client.meeting.report-log" | "client.meeting.session.connected" | "client.meeting.start-webexapp" | "client.meeting.start-launch" | "client.meeting.summary" | "client.meeting.user-action" | "client.meeting.validated" | "client.meeting.VDI.detect.plugin.response" | "client.meeting.VDI.connect.plugin.response" | "client.mercury.connection.lost" | "client.mercury.connection.restored" | "client.mercury.connection.start" | "client.mercury.connection.connected" | "client.multistream.sca.rx" | "client.multistream.sca.tx" | "client.multistream.scr.rx" | "client.multistream.scr.tx" | "client.muted" | "client.network.changed" | "client.notification.received" | "client.onboarding-window.start" | "client.onboarding-window.end" | "client.permission.closed" | "client.permission.prompted" | "client.pin.collected" | "client.pin.prompt" | "client.post.meeting.hook" | "client.pstnaudio.attempt.correlation" | "client.pstnaudio.attempt.finish" | "client.pstnaudio.attempt.skip" | "client.pstnaudio.attempt.start" | "client.roap-message.received" | "client.roap-message.sent" | "client.scheduling.initiate" | "client.scheduling.notification" | "client.share.floor-accept.notification" | "client.share.floor-grant.cancel-request" | "client.share.floor-grant.notification" | "client.share.floor-grant.request" | "client.share.floor-granted.local" | "client.share.initiated" | "client.share.layout.displayed" | "client.share.paused" | "client.share.selected-app" | "client.share.stopped" | "client.sign-in.start" | "client.sign-in.end" | "client.started-after-shutdown" | "client.started-from-crash" | "client.stuntrace.failed" | "client.switch.app" | "client.terminate.app" | "client.unmuted" | "client.webexapp.start-launch" | "client.webexapp.launched" | "client.login.start" | "client.login.end" | "client.startup.start" | "client.startup.end" | "client.switch.environment" | "client.u2c.limited-catalog.request" | "client.u2c.limited-catalog.response" | "client.u2c.signin-catalog.request" | "client.u2c.signin-catalog.response" | "client.upgrade-window.accepted" | "client.upgrade-window.closed" | "client.upgrade-window.showed" | "client.waiting.user-action" | "client.warhol.downloaded" | "client.wdm.device-registration.request" | "client.wdm.device-registration.response" | "client.webapp-download.start" | "client.webapp-download.in-progress" | "client.webapp-download.end" | "client.whiteboard.loaded" | "client.call.survey.trigger" | "meeting.initiated" | "meeting.converged.initiated" | "meeting.joined" | "page.click.pre-join" | "page.client.abort.join" | "page.client.interstitial-window.launched" | "page.meeting.browser-reset" | "page.meeting.close-browser" | "page.meeting.extension.started" | "page.meeting.extension.app.starting" | "page.meeting.extension.app.started" | "page.meeting.join-fallback.dismiss" | "page.meeting.join-fallback" | "page.meeting.launch-thinclient" | "page.meeting.launched-duplicate.context" | "page.meeting.loading" | "page.meeting.mobile.call" | "page.meeting.mobile.download" | "page.meeting.mobile.join-link" | "page.meeting.plugin.launch-meeting" | "page.meeting.run-plugin" | "page.meeting.switch.to.webapp" | "page.meeting.testing-plugin" | "page.meeting.testing-plugin.finished" | "page.meeting.tfs.start-download" | "page.meeting.urlprotocol.detect" | "page.meeting.waiting.user-action" | "page.meeting.webexapp.launched" | "page.meeting.webinstaller.started" | "page.meeting.webinstaller.ended" | "client.feature.ptplugin.distribution">;
3
+ export declare const MEDIA_TX_PERMISSION_EVENTS: Set<"client.abort.join" | "client.alert.displayed" | "client.alert.removed" | "client.application.validate" | "client.audio.noise.removal" | "client.breakout-session.join.request" | "client.breakout-session.join.response" | "client.breakout-session.leave" | "client.breakout-session.move.request" | "client.breakout-session.move.response" | "client.call.aborted" | "client.call.declined" | "client.call.fallback" | "client.call.diagnostics" | "client.call.displayed" | "client.call.info" | "client.call.initiated" | "client.call.leave" | "client.call.move-media" | "client.call.remote-ended" | "client.call.remote-started" | "client.call.skip-locus-join" | "client.ci.exchange-token.request" | "client.ci.exchange-token.response" | "client.conversation.request" | "client.conversation.response" | "client.click.pre-join" | "client.crash" | "client.daemon.join.begin" | "client.daemon.job.done" | "client.daemon.launch-meeting-process" | "client.daemon.pending-on-existing-upgrade-job" | "client.daemon.query-site-info" | "client.daemon.upgrade-and-join" | "client.daemon.wakeup-meeting-client" | "client.duplicate.join" | "client.device.resource-room.joined" | "client.dialog-window.dismissed" | "client.dialog-window.selected" | "client.dialog-window.showed" | "client.e2ee.join.response" | "client.embedded-authorize-page.loaded" | "client.embedded-object-info" | "client.entering-background" | "client.entering-foreground" | "client.exit.app" | "client.gesture.recognition" | "client.hologram.initiated" | "client.hologram.stopped" | "client.hologram.remote.initiated" | "client.hologram.remote.stopped" | "client.hung" | "client.ice.end" | "client.ice.start" | "client.idbroker.authorize.request" | "client.idbroker.authorize.response" | "client.idbroker.client-credential.request" | "client.idbroker.client-credential.response" | "client.idbroker.cloud-reduced-scope.request" | "client.idbroker.direct-authorize.request" | "client.idbroker.direct-authorize.response" | "client.idbroker.cloud-reduced-scope.response" | "client.idbroker.exchange-token.request" | "client.idbroker.exchange-token.response" | "client.idbroker.kms-reduced-scope.request" | "client.idbroker.kms-reduced-scope.response" | "client.idbroker.scim.request" | "client.idbroker.scim.response" | "client.idbroker.user-invoke.request" | "client.idbroker.user-invoke.response" | "client.installer.start" | "client.installer.end" | "client.installer.download-app" | "client.installer.decompress-app" | "client.installer.fallback" | "client.installer.install-app" | "client.installer.launch-app" | "client.installer.switch.to.webapp" | "client.launcher.start" | "client.launcher.selfupgrade.start" | "client.launcher.selfupgrade.end" | "client.launcher.downloadapp.start" | "client.launcher.downloadapp.end" | "client.launcher.launchapp" | "client.launcher.end" | "client.launcher.restart.begin" | "client.launcher.restart.end" | "client.license.activations.request" | "client.license.activations.response" | "client.llm.connect.response" | "client.interstitial-window.launched" | "client.interstitial-window.start-launch" | "client.ivr.join.request" | "client.ivr.join.response" | "client.ivr.leave.request" | "client.ivr.leave.response" | "client.ivr.notify.request" | "client.ivr.notify.response" | "client.lobby.entered" | "client.lobby.exited" | "client.locus.decline.request" | "client.locus.join.request" | "client.locus.join.response" | "client.locus.leave.request" | "client.locus.leave.response" | "client.locus.media.request" | "client.locus.media.response" | "client.locus.sync.complete" | "client.media-engine.crash" | "client.media-engine.launched" | "client.media-engine.lost" | "client.media-engine.local-sdp-generated" | "client.media-engine.ready" | "client.media-engine.remote-sdp-received" | "client.media-engine.start-launch" | "client.media-device.ready" | "client.media-device.stop" | "client.media-device.error" | "client.media-status" | "client.media.capabilities" | "client.media.ready" | "client.media.reachability" | "client.media.reconnecting" | "client.media.recovered" | "client.media.render.start" | "client.media.render.stop" | "client.media.rx.start" | "client.media.rx.stop" | "client.media.share.csi.changed" | "client.media.tx.start" | "client.media.tx.stop" | "client.meetinginfo.request" | "client.meetinginfo.response" | "client.meetingmanagersdk.ipc.run" | "client.meeting.app-loaded" | "client.meeting.breakout-session.action" | "client.meeting.breakout-session.summary" | "client.meeting.browser-plugin.started" | "client.meeting.click.joinbutton" | "client.meeting.closed" | "client.meeting.disclaimer-window.accepted" | "client.meeting.disclaimer-window.closed" | "client.meeting.disclaimer-window.showed" | "client.meeting.docshow.request" | "client.meeting.docshow.response" | "client.meeting.e2e.u2c.response" | "client.meeting.e2e.wca.response" | "client.meeting.e2e.key.response" | "client.meeting.e2ee.u2c.response" | "client.meeting.e2ee.wca.response" | "client.meeting.e2ee.key.response" | "client.meeting.gpc.download" | "client.meeting.gpcparameter.request" | "client.meeting.gpcparameter.response" | "client.meeting.interstitial-window.closed" | "client.meeting.interstitial-window.showed" | "client.meeting.join.request" | "client.meeting.key-information" | "client.meeting.launched" | "client.meeting.login-window.clicked" | "client.meeting.login-window.closed" | "client.meeting.login-window.showed" | "client.meeting.login.response" | "client.meeting.people-insights.check.response" | "client.meeting.people-insights.query.response" | "client.meeting.ping.request" | "client.meeting.ping.response" | "client.meeting.plugin-extension.started" | "client.meeting.resume" | "client.meeting.report-log" | "client.meeting.session.connected" | "client.meeting.start-webexapp" | "client.meeting.start-launch" | "client.meeting.summary" | "client.meeting.user-action" | "client.meeting.validated" | "client.meeting.VDI.detect.plugin.response" | "client.meeting.VDI.connect.plugin.response" | "client.mercury.connection.lost" | "client.mercury.connection.restored" | "client.mercury.connection.start" | "client.mercury.connection.connected" | "client.multistream.sca.rx" | "client.multistream.sca.tx" | "client.multistream.scr.rx" | "client.multistream.scr.tx" | "client.muted" | "client.network.changed" | "client.notification.received" | "client.onboarding-window.start" | "client.onboarding-window.end" | "client.permission.closed" | "client.permission.prompted" | "client.pin.collected" | "client.pin.prompt" | "client.post.meeting.hook" | "client.pstnaudio.attempt.correlation" | "client.pstnaudio.attempt.finish" | "client.pstnaudio.attempt.skip" | "client.pstnaudio.attempt.start" | "client.roap-message.received" | "client.roap-message.sent" | "client.scheduling.initiate" | "client.scheduling.notification" | "client.share.floor-accept.notification" | "client.share.floor-grant.cancel-request" | "client.share.floor-grant.notification" | "client.share.floor-grant.request" | "client.share.floor-granted.local" | "client.share.initiated" | "client.share.layout.displayed" | "client.share.paused" | "client.share.selected-app" | "client.share.stopped" | "client.sign-in.start" | "client.sign-in.end" | "client.started-after-shutdown" | "client.started-from-crash" | "client.stuntrace.failed" | "client.switch.app" | "client.terminate.app" | "client.unmuted" | "client.webexapp.start-launch" | "client.webexapp.launched" | "client.login.start" | "client.login.end" | "client.startup.start" | "client.startup.end" | "client.switch.environment" | "client.u2c.limited-catalog.request" | "client.u2c.limited-catalog.response" | "client.u2c.signin-catalog.request" | "client.u2c.signin-catalog.response" | "client.upgrade-window.accepted" | "client.upgrade-window.closed" | "client.upgrade-window.showed" | "client.waiting.user-action" | "client.warhol.downloaded" | "client.wdm.device-registration.request" | "client.wdm.device-registration.response" | "client.webapp-download.start" | "client.webapp-download.in-progress" | "client.webapp-download.end" | "client.whiteboard.loaded" | "client.call.survey.trigger" | "meeting.initiated" | "meeting.converged.initiated" | "meeting.joined" | "page.click.pre-join" | "page.client.abort.join" | "page.client.interstitial-window.launched" | "page.meeting.browser-reset" | "page.meeting.close-browser" | "page.meeting.extension.started" | "page.meeting.extension.app.starting" | "page.meeting.extension.app.started" | "page.meeting.join-fallback.dismiss" | "page.meeting.join-fallback" | "page.meeting.launch-thinclient" | "page.meeting.launched-duplicate.context" | "page.meeting.loading" | "page.meeting.mobile.call" | "page.meeting.mobile.download" | "page.meeting.mobile.join-link" | "page.meeting.plugin.launch-meeting" | "page.meeting.run-plugin" | "page.meeting.switch.to.webapp" | "page.meeting.testing-plugin" | "page.meeting.testing-plugin.finished" | "page.meeting.tfs.start-download" | "page.meeting.urlprotocol.detect" | "page.meeting.waiting.user-action" | "page.meeting.webexapp.launched" | "page.meeting.webinstaller.started" | "page.meeting.webinstaller.ended" | "client.feature.ptplugin.distribution">;
4
+ export declare const CONTENT_SHARE_PERMISSION_EVENTS: Set<"client.abort.join" | "client.alert.displayed" | "client.alert.removed" | "client.application.validate" | "client.audio.noise.removal" | "client.breakout-session.join.request" | "client.breakout-session.join.response" | "client.breakout-session.leave" | "client.breakout-session.move.request" | "client.breakout-session.move.response" | "client.call.aborted" | "client.call.declined" | "client.call.fallback" | "client.call.diagnostics" | "client.call.displayed" | "client.call.info" | "client.call.initiated" | "client.call.leave" | "client.call.move-media" | "client.call.remote-ended" | "client.call.remote-started" | "client.call.skip-locus-join" | "client.ci.exchange-token.request" | "client.ci.exchange-token.response" | "client.conversation.request" | "client.conversation.response" | "client.click.pre-join" | "client.crash" | "client.daemon.join.begin" | "client.daemon.job.done" | "client.daemon.launch-meeting-process" | "client.daemon.pending-on-existing-upgrade-job" | "client.daemon.query-site-info" | "client.daemon.upgrade-and-join" | "client.daemon.wakeup-meeting-client" | "client.duplicate.join" | "client.device.resource-room.joined" | "client.dialog-window.dismissed" | "client.dialog-window.selected" | "client.dialog-window.showed" | "client.e2ee.join.response" | "client.embedded-authorize-page.loaded" | "client.embedded-object-info" | "client.entering-background" | "client.entering-foreground" | "client.exit.app" | "client.gesture.recognition" | "client.hologram.initiated" | "client.hologram.stopped" | "client.hologram.remote.initiated" | "client.hologram.remote.stopped" | "client.hung" | "client.ice.end" | "client.ice.start" | "client.idbroker.authorize.request" | "client.idbroker.authorize.response" | "client.idbroker.client-credential.request" | "client.idbroker.client-credential.response" | "client.idbroker.cloud-reduced-scope.request" | "client.idbroker.direct-authorize.request" | "client.idbroker.direct-authorize.response" | "client.idbroker.cloud-reduced-scope.response" | "client.idbroker.exchange-token.request" | "client.idbroker.exchange-token.response" | "client.idbroker.kms-reduced-scope.request" | "client.idbroker.kms-reduced-scope.response" | "client.idbroker.scim.request" | "client.idbroker.scim.response" | "client.idbroker.user-invoke.request" | "client.idbroker.user-invoke.response" | "client.installer.start" | "client.installer.end" | "client.installer.download-app" | "client.installer.decompress-app" | "client.installer.fallback" | "client.installer.install-app" | "client.installer.launch-app" | "client.installer.switch.to.webapp" | "client.launcher.start" | "client.launcher.selfupgrade.start" | "client.launcher.selfupgrade.end" | "client.launcher.downloadapp.start" | "client.launcher.downloadapp.end" | "client.launcher.launchapp" | "client.launcher.end" | "client.launcher.restart.begin" | "client.launcher.restart.end" | "client.license.activations.request" | "client.license.activations.response" | "client.llm.connect.response" | "client.interstitial-window.launched" | "client.interstitial-window.start-launch" | "client.ivr.join.request" | "client.ivr.join.response" | "client.ivr.leave.request" | "client.ivr.leave.response" | "client.ivr.notify.request" | "client.ivr.notify.response" | "client.lobby.entered" | "client.lobby.exited" | "client.locus.decline.request" | "client.locus.join.request" | "client.locus.join.response" | "client.locus.leave.request" | "client.locus.leave.response" | "client.locus.media.request" | "client.locus.media.response" | "client.locus.sync.complete" | "client.media-engine.crash" | "client.media-engine.launched" | "client.media-engine.lost" | "client.media-engine.local-sdp-generated" | "client.media-engine.ready" | "client.media-engine.remote-sdp-received" | "client.media-engine.start-launch" | "client.media-device.ready" | "client.media-device.stop" | "client.media-device.error" | "client.media-status" | "client.media.capabilities" | "client.media.ready" | "client.media.reachability" | "client.media.reconnecting" | "client.media.recovered" | "client.media.render.start" | "client.media.render.stop" | "client.media.rx.start" | "client.media.rx.stop" | "client.media.share.csi.changed" | "client.media.tx.start" | "client.media.tx.stop" | "client.meetinginfo.request" | "client.meetinginfo.response" | "client.meetingmanagersdk.ipc.run" | "client.meeting.app-loaded" | "client.meeting.breakout-session.action" | "client.meeting.breakout-session.summary" | "client.meeting.browser-plugin.started" | "client.meeting.click.joinbutton" | "client.meeting.closed" | "client.meeting.disclaimer-window.accepted" | "client.meeting.disclaimer-window.closed" | "client.meeting.disclaimer-window.showed" | "client.meeting.docshow.request" | "client.meeting.docshow.response" | "client.meeting.e2e.u2c.response" | "client.meeting.e2e.wca.response" | "client.meeting.e2e.key.response" | "client.meeting.e2ee.u2c.response" | "client.meeting.e2ee.wca.response" | "client.meeting.e2ee.key.response" | "client.meeting.gpc.download" | "client.meeting.gpcparameter.request" | "client.meeting.gpcparameter.response" | "client.meeting.interstitial-window.closed" | "client.meeting.interstitial-window.showed" | "client.meeting.join.request" | "client.meeting.key-information" | "client.meeting.launched" | "client.meeting.login-window.clicked" | "client.meeting.login-window.closed" | "client.meeting.login-window.showed" | "client.meeting.login.response" | "client.meeting.people-insights.check.response" | "client.meeting.people-insights.query.response" | "client.meeting.ping.request" | "client.meeting.ping.response" | "client.meeting.plugin-extension.started" | "client.meeting.resume" | "client.meeting.report-log" | "client.meeting.session.connected" | "client.meeting.start-webexapp" | "client.meeting.start-launch" | "client.meeting.summary" | "client.meeting.user-action" | "client.meeting.validated" | "client.meeting.VDI.detect.plugin.response" | "client.meeting.VDI.connect.plugin.response" | "client.mercury.connection.lost" | "client.mercury.connection.restored" | "client.mercury.connection.start" | "client.mercury.connection.connected" | "client.multistream.sca.rx" | "client.multistream.sca.tx" | "client.multistream.scr.rx" | "client.multistream.scr.tx" | "client.muted" | "client.network.changed" | "client.notification.received" | "client.onboarding-window.start" | "client.onboarding-window.end" | "client.permission.closed" | "client.permission.prompted" | "client.pin.collected" | "client.pin.prompt" | "client.post.meeting.hook" | "client.pstnaudio.attempt.correlation" | "client.pstnaudio.attempt.finish" | "client.pstnaudio.attempt.skip" | "client.pstnaudio.attempt.start" | "client.roap-message.received" | "client.roap-message.sent" | "client.scheduling.initiate" | "client.scheduling.notification" | "client.share.floor-accept.notification" | "client.share.floor-grant.cancel-request" | "client.share.floor-grant.notification" | "client.share.floor-grant.request" | "client.share.floor-granted.local" | "client.share.initiated" | "client.share.layout.displayed" | "client.share.paused" | "client.share.selected-app" | "client.share.stopped" | "client.sign-in.start" | "client.sign-in.end" | "client.started-after-shutdown" | "client.started-from-crash" | "client.stuntrace.failed" | "client.switch.app" | "client.terminate.app" | "client.unmuted" | "client.webexapp.start-launch" | "client.webexapp.launched" | "client.login.start" | "client.login.end" | "client.startup.start" | "client.startup.end" | "client.switch.environment" | "client.u2c.limited-catalog.request" | "client.u2c.limited-catalog.response" | "client.u2c.signin-catalog.request" | "client.u2c.signin-catalog.response" | "client.upgrade-window.accepted" | "client.upgrade-window.closed" | "client.upgrade-window.showed" | "client.waiting.user-action" | "client.warhol.downloaded" | "client.wdm.device-registration.request" | "client.wdm.device-registration.response" | "client.webapp-download.start" | "client.webapp-download.in-progress" | "client.webapp-download.end" | "client.whiteboard.loaded" | "client.call.survey.trigger" | "meeting.initiated" | "meeting.converged.initiated" | "meeting.joined" | "page.click.pre-join" | "page.client.abort.join" | "page.client.interstitial-window.launched" | "page.meeting.browser-reset" | "page.meeting.close-browser" | "page.meeting.extension.started" | "page.meeting.extension.app.starting" | "page.meeting.extension.app.started" | "page.meeting.join-fallback.dismiss" | "page.meeting.join-fallback" | "page.meeting.launch-thinclient" | "page.meeting.launched-duplicate.context" | "page.meeting.loading" | "page.meeting.mobile.call" | "page.meeting.mobile.download" | "page.meeting.mobile.join-link" | "page.meeting.plugin.launch-meeting" | "page.meeting.run-plugin" | "page.meeting.switch.to.webapp" | "page.meeting.testing-plugin" | "page.meeting.testing-plugin.finished" | "page.meeting.tfs.start-download" | "page.meeting.urlprotocol.detect" | "page.meeting.waiting.user-action" | "page.meeting.webexapp.launched" | "page.meeting.webinstaller.started" | "page.meeting.webinstaller.ended" | "client.feature.ptplugin.distribution">;
5
+ export declare const FINAL_PERMISSION_EVENTS: Set<"client.abort.join" | "client.alert.displayed" | "client.alert.removed" | "client.application.validate" | "client.audio.noise.removal" | "client.breakout-session.join.request" | "client.breakout-session.join.response" | "client.breakout-session.leave" | "client.breakout-session.move.request" | "client.breakout-session.move.response" | "client.call.aborted" | "client.call.declined" | "client.call.fallback" | "client.call.diagnostics" | "client.call.displayed" | "client.call.info" | "client.call.initiated" | "client.call.leave" | "client.call.move-media" | "client.call.remote-ended" | "client.call.remote-started" | "client.call.skip-locus-join" | "client.ci.exchange-token.request" | "client.ci.exchange-token.response" | "client.conversation.request" | "client.conversation.response" | "client.click.pre-join" | "client.crash" | "client.daemon.join.begin" | "client.daemon.job.done" | "client.daemon.launch-meeting-process" | "client.daemon.pending-on-existing-upgrade-job" | "client.daemon.query-site-info" | "client.daemon.upgrade-and-join" | "client.daemon.wakeup-meeting-client" | "client.duplicate.join" | "client.device.resource-room.joined" | "client.dialog-window.dismissed" | "client.dialog-window.selected" | "client.dialog-window.showed" | "client.e2ee.join.response" | "client.embedded-authorize-page.loaded" | "client.embedded-object-info" | "client.entering-background" | "client.entering-foreground" | "client.exit.app" | "client.gesture.recognition" | "client.hologram.initiated" | "client.hologram.stopped" | "client.hologram.remote.initiated" | "client.hologram.remote.stopped" | "client.hung" | "client.ice.end" | "client.ice.start" | "client.idbroker.authorize.request" | "client.idbroker.authorize.response" | "client.idbroker.client-credential.request" | "client.idbroker.client-credential.response" | "client.idbroker.cloud-reduced-scope.request" | "client.idbroker.direct-authorize.request" | "client.idbroker.direct-authorize.response" | "client.idbroker.cloud-reduced-scope.response" | "client.idbroker.exchange-token.request" | "client.idbroker.exchange-token.response" | "client.idbroker.kms-reduced-scope.request" | "client.idbroker.kms-reduced-scope.response" | "client.idbroker.scim.request" | "client.idbroker.scim.response" | "client.idbroker.user-invoke.request" | "client.idbroker.user-invoke.response" | "client.installer.start" | "client.installer.end" | "client.installer.download-app" | "client.installer.decompress-app" | "client.installer.fallback" | "client.installer.install-app" | "client.installer.launch-app" | "client.installer.switch.to.webapp" | "client.launcher.start" | "client.launcher.selfupgrade.start" | "client.launcher.selfupgrade.end" | "client.launcher.downloadapp.start" | "client.launcher.downloadapp.end" | "client.launcher.launchapp" | "client.launcher.end" | "client.launcher.restart.begin" | "client.launcher.restart.end" | "client.license.activations.request" | "client.license.activations.response" | "client.llm.connect.response" | "client.interstitial-window.launched" | "client.interstitial-window.start-launch" | "client.ivr.join.request" | "client.ivr.join.response" | "client.ivr.leave.request" | "client.ivr.leave.response" | "client.ivr.notify.request" | "client.ivr.notify.response" | "client.lobby.entered" | "client.lobby.exited" | "client.locus.decline.request" | "client.locus.join.request" | "client.locus.join.response" | "client.locus.leave.request" | "client.locus.leave.response" | "client.locus.media.request" | "client.locus.media.response" | "client.locus.sync.complete" | "client.media-engine.crash" | "client.media-engine.launched" | "client.media-engine.lost" | "client.media-engine.local-sdp-generated" | "client.media-engine.ready" | "client.media-engine.remote-sdp-received" | "client.media-engine.start-launch" | "client.media-device.ready" | "client.media-device.stop" | "client.media-device.error" | "client.media-status" | "client.media.capabilities" | "client.media.ready" | "client.media.reachability" | "client.media.reconnecting" | "client.media.recovered" | "client.media.render.start" | "client.media.render.stop" | "client.media.rx.start" | "client.media.rx.stop" | "client.media.share.csi.changed" | "client.media.tx.start" | "client.media.tx.stop" | "client.meetinginfo.request" | "client.meetinginfo.response" | "client.meetingmanagersdk.ipc.run" | "client.meeting.app-loaded" | "client.meeting.breakout-session.action" | "client.meeting.breakout-session.summary" | "client.meeting.browser-plugin.started" | "client.meeting.click.joinbutton" | "client.meeting.closed" | "client.meeting.disclaimer-window.accepted" | "client.meeting.disclaimer-window.closed" | "client.meeting.disclaimer-window.showed" | "client.meeting.docshow.request" | "client.meeting.docshow.response" | "client.meeting.e2e.u2c.response" | "client.meeting.e2e.wca.response" | "client.meeting.e2e.key.response" | "client.meeting.e2ee.u2c.response" | "client.meeting.e2ee.wca.response" | "client.meeting.e2ee.key.response" | "client.meeting.gpc.download" | "client.meeting.gpcparameter.request" | "client.meeting.gpcparameter.response" | "client.meeting.interstitial-window.closed" | "client.meeting.interstitial-window.showed" | "client.meeting.join.request" | "client.meeting.key-information" | "client.meeting.launched" | "client.meeting.login-window.clicked" | "client.meeting.login-window.closed" | "client.meeting.login-window.showed" | "client.meeting.login.response" | "client.meeting.people-insights.check.response" | "client.meeting.people-insights.query.response" | "client.meeting.ping.request" | "client.meeting.ping.response" | "client.meeting.plugin-extension.started" | "client.meeting.resume" | "client.meeting.report-log" | "client.meeting.session.connected" | "client.meeting.start-webexapp" | "client.meeting.start-launch" | "client.meeting.summary" | "client.meeting.user-action" | "client.meeting.validated" | "client.meeting.VDI.detect.plugin.response" | "client.meeting.VDI.connect.plugin.response" | "client.mercury.connection.lost" | "client.mercury.connection.restored" | "client.mercury.connection.start" | "client.mercury.connection.connected" | "client.multistream.sca.rx" | "client.multistream.sca.tx" | "client.multistream.scr.rx" | "client.multistream.scr.tx" | "client.muted" | "client.network.changed" | "client.notification.received" | "client.onboarding-window.start" | "client.onboarding-window.end" | "client.permission.closed" | "client.permission.prompted" | "client.pin.collected" | "client.pin.prompt" | "client.post.meeting.hook" | "client.pstnaudio.attempt.correlation" | "client.pstnaudio.attempt.finish" | "client.pstnaudio.attempt.skip" | "client.pstnaudio.attempt.start" | "client.roap-message.received" | "client.roap-message.sent" | "client.scheduling.initiate" | "client.scheduling.notification" | "client.share.floor-accept.notification" | "client.share.floor-grant.cancel-request" | "client.share.floor-grant.notification" | "client.share.floor-grant.request" | "client.share.floor-granted.local" | "client.share.initiated" | "client.share.layout.displayed" | "client.share.paused" | "client.share.selected-app" | "client.share.stopped" | "client.sign-in.start" | "client.sign-in.end" | "client.started-after-shutdown" | "client.started-from-crash" | "client.stuntrace.failed" | "client.switch.app" | "client.terminate.app" | "client.unmuted" | "client.webexapp.start-launch" | "client.webexapp.launched" | "client.login.start" | "client.login.end" | "client.startup.start" | "client.startup.end" | "client.switch.environment" | "client.u2c.limited-catalog.request" | "client.u2c.limited-catalog.response" | "client.u2c.signin-catalog.request" | "client.u2c.signin-catalog.response" | "client.upgrade-window.accepted" | "client.upgrade-window.closed" | "client.upgrade-window.showed" | "client.waiting.user-action" | "client.warhol.downloaded" | "client.wdm.device-registration.request" | "client.wdm.device-registration.response" | "client.webapp-download.start" | "client.webapp-download.in-progress" | "client.webapp-download.end" | "client.whiteboard.loaded" | "client.call.survey.trigger" | "meeting.initiated" | "meeting.converged.initiated" | "meeting.joined" | "page.click.pre-join" | "page.client.abort.join" | "page.client.interstitial-window.launched" | "page.meeting.browser-reset" | "page.meeting.close-browser" | "page.meeting.extension.started" | "page.meeting.extension.app.starting" | "page.meeting.extension.app.started" | "page.meeting.join-fallback.dismiss" | "page.meeting.join-fallback" | "page.meeting.launch-thinclient" | "page.meeting.launched-duplicate.context" | "page.meeting.loading" | "page.meeting.mobile.call" | "page.meeting.mobile.download" | "page.meeting.mobile.join-link" | "page.meeting.plugin.launch-meeting" | "page.meeting.run-plugin" | "page.meeting.switch.to.webapp" | "page.meeting.testing-plugin" | "page.meeting.testing-plugin.finished" | "page.meeting.tfs.start-download" | "page.meeting.urlprotocol.detect" | "page.meeting.waiting.user-action" | "page.meeting.webexapp.launched" | "page.meeting.webinstaller.started" | "page.meeting.webinstaller.ended" | "client.feature.ptplugin.distribution">;
6
+ export declare const NO_PERMISSION_ENRICHMENT: PermissionEnrichmentPolicy;
@@ -0,0 +1,40 @@
1
+ import type { ClientEventPayload, PrivacyAndSecurityPermission } from '../metrics.types';
2
+ import type { PermissionEnrichmentContext } from './types';
3
+ export declare const PERMISSION_ENRICHMENT_RULES: ({
4
+ events: Set<"client.abort.join" | "client.alert.displayed" | "client.alert.removed" | "client.application.validate" | "client.audio.noise.removal" | "client.breakout-session.join.request" | "client.breakout-session.join.response" | "client.breakout-session.leave" | "client.breakout-session.move.request" | "client.breakout-session.move.response" | "client.call.aborted" | "client.call.declined" | "client.call.fallback" | "client.call.diagnostics" | "client.call.displayed" | "client.call.info" | "client.call.initiated" | "client.call.leave" | "client.call.move-media" | "client.call.remote-ended" | "client.call.remote-started" | "client.call.skip-locus-join" | "client.ci.exchange-token.request" | "client.ci.exchange-token.response" | "client.conversation.request" | "client.conversation.response" | "client.click.pre-join" | "client.crash" | "client.daemon.join.begin" | "client.daemon.job.done" | "client.daemon.launch-meeting-process" | "client.daemon.pending-on-existing-upgrade-job" | "client.daemon.query-site-info" | "client.daemon.upgrade-and-join" | "client.daemon.wakeup-meeting-client" | "client.duplicate.join" | "client.device.resource-room.joined" | "client.dialog-window.dismissed" | "client.dialog-window.selected" | "client.dialog-window.showed" | "client.e2ee.join.response" | "client.embedded-authorize-page.loaded" | "client.embedded-object-info" | "client.entering-background" | "client.entering-foreground" | "client.exit.app" | "client.gesture.recognition" | "client.hologram.initiated" | "client.hologram.stopped" | "client.hologram.remote.initiated" | "client.hologram.remote.stopped" | "client.hung" | "client.ice.end" | "client.ice.start" | "client.idbroker.authorize.request" | "client.idbroker.authorize.response" | "client.idbroker.client-credential.request" | "client.idbroker.client-credential.response" | "client.idbroker.cloud-reduced-scope.request" | "client.idbroker.direct-authorize.request" | "client.idbroker.direct-authorize.response" | "client.idbroker.cloud-reduced-scope.response" | "client.idbroker.exchange-token.request" | "client.idbroker.exchange-token.response" | "client.idbroker.kms-reduced-scope.request" | "client.idbroker.kms-reduced-scope.response" | "client.idbroker.scim.request" | "client.idbroker.scim.response" | "client.idbroker.user-invoke.request" | "client.idbroker.user-invoke.response" | "client.installer.start" | "client.installer.end" | "client.installer.download-app" | "client.installer.decompress-app" | "client.installer.fallback" | "client.installer.install-app" | "client.installer.launch-app" | "client.installer.switch.to.webapp" | "client.launcher.start" | "client.launcher.selfupgrade.start" | "client.launcher.selfupgrade.end" | "client.launcher.downloadapp.start" | "client.launcher.downloadapp.end" | "client.launcher.launchapp" | "client.launcher.end" | "client.launcher.restart.begin" | "client.launcher.restart.end" | "client.license.activations.request" | "client.license.activations.response" | "client.llm.connect.response" | "client.interstitial-window.launched" | "client.interstitial-window.start-launch" | "client.ivr.join.request" | "client.ivr.join.response" | "client.ivr.leave.request" | "client.ivr.leave.response" | "client.ivr.notify.request" | "client.ivr.notify.response" | "client.lobby.entered" | "client.lobby.exited" | "client.locus.decline.request" | "client.locus.join.request" | "client.locus.join.response" | "client.locus.leave.request" | "client.locus.leave.response" | "client.locus.media.request" | "client.locus.media.response" | "client.locus.sync.complete" | "client.media-engine.crash" | "client.media-engine.launched" | "client.media-engine.lost" | "client.media-engine.local-sdp-generated" | "client.media-engine.ready" | "client.media-engine.remote-sdp-received" | "client.media-engine.start-launch" | "client.media-device.ready" | "client.media-device.stop" | "client.media-device.error" | "client.media-status" | "client.media.capabilities" | "client.media.ready" | "client.media.reachability" | "client.media.reconnecting" | "client.media.recovered" | "client.media.render.start" | "client.media.render.stop" | "client.media.rx.start" | "client.media.rx.stop" | "client.media.share.csi.changed" | "client.media.tx.start" | "client.media.tx.stop" | "client.meetinginfo.request" | "client.meetinginfo.response" | "client.meetingmanagersdk.ipc.run" | "client.meeting.app-loaded" | "client.meeting.breakout-session.action" | "client.meeting.breakout-session.summary" | "client.meeting.browser-plugin.started" | "client.meeting.click.joinbutton" | "client.meeting.closed" | "client.meeting.disclaimer-window.accepted" | "client.meeting.disclaimer-window.closed" | "client.meeting.disclaimer-window.showed" | "client.meeting.docshow.request" | "client.meeting.docshow.response" | "client.meeting.e2e.u2c.response" | "client.meeting.e2e.wca.response" | "client.meeting.e2e.key.response" | "client.meeting.e2ee.u2c.response" | "client.meeting.e2ee.wca.response" | "client.meeting.e2ee.key.response" | "client.meeting.gpc.download" | "client.meeting.gpcparameter.request" | "client.meeting.gpcparameter.response" | "client.meeting.interstitial-window.closed" | "client.meeting.interstitial-window.showed" | "client.meeting.join.request" | "client.meeting.key-information" | "client.meeting.launched" | "client.meeting.login-window.clicked" | "client.meeting.login-window.closed" | "client.meeting.login-window.showed" | "client.meeting.login.response" | "client.meeting.people-insights.check.response" | "client.meeting.people-insights.query.response" | "client.meeting.ping.request" | "client.meeting.ping.response" | "client.meeting.plugin-extension.started" | "client.meeting.resume" | "client.meeting.report-log" | "client.meeting.session.connected" | "client.meeting.start-webexapp" | "client.meeting.start-launch" | "client.meeting.summary" | "client.meeting.user-action" | "client.meeting.validated" | "client.meeting.VDI.detect.plugin.response" | "client.meeting.VDI.connect.plugin.response" | "client.mercury.connection.lost" | "client.mercury.connection.restored" | "client.mercury.connection.start" | "client.mercury.connection.connected" | "client.multistream.sca.rx" | "client.multistream.sca.tx" | "client.multistream.scr.rx" | "client.multistream.scr.tx" | "client.muted" | "client.network.changed" | "client.notification.received" | "client.onboarding-window.start" | "client.onboarding-window.end" | "client.permission.closed" | "client.permission.prompted" | "client.pin.collected" | "client.pin.prompt" | "client.post.meeting.hook" | "client.pstnaudio.attempt.correlation" | "client.pstnaudio.attempt.finish" | "client.pstnaudio.attempt.skip" | "client.pstnaudio.attempt.start" | "client.roap-message.received" | "client.roap-message.sent" | "client.scheduling.initiate" | "client.scheduling.notification" | "client.share.floor-accept.notification" | "client.share.floor-grant.cancel-request" | "client.share.floor-grant.notification" | "client.share.floor-grant.request" | "client.share.floor-granted.local" | "client.share.initiated" | "client.share.layout.displayed" | "client.share.paused" | "client.share.selected-app" | "client.share.stopped" | "client.sign-in.start" | "client.sign-in.end" | "client.started-after-shutdown" | "client.started-from-crash" | "client.stuntrace.failed" | "client.switch.app" | "client.terminate.app" | "client.unmuted" | "client.webexapp.start-launch" | "client.webexapp.launched" | "client.login.start" | "client.login.end" | "client.startup.start" | "client.startup.end" | "client.switch.environment" | "client.u2c.limited-catalog.request" | "client.u2c.limited-catalog.response" | "client.u2c.signin-catalog.request" | "client.u2c.signin-catalog.response" | "client.upgrade-window.accepted" | "client.upgrade-window.closed" | "client.upgrade-window.showed" | "client.waiting.user-action" | "client.warhol.downloaded" | "client.wdm.device-registration.request" | "client.wdm.device-registration.response" | "client.webapp-download.start" | "client.webapp-download.in-progress" | "client.webapp-download.end" | "client.whiteboard.loaded" | "client.call.survey.trigger" | "meeting.initiated" | "meeting.converged.initiated" | "meeting.joined" | "page.click.pre-join" | "page.client.abort.join" | "page.client.interstitial-window.launched" | "page.meeting.browser-reset" | "page.meeting.close-browser" | "page.meeting.extension.started" | "page.meeting.extension.app.starting" | "page.meeting.extension.app.started" | "page.meeting.join-fallback.dismiss" | "page.meeting.join-fallback" | "page.meeting.launch-thinclient" | "page.meeting.launched-duplicate.context" | "page.meeting.loading" | "page.meeting.mobile.call" | "page.meeting.mobile.download" | "page.meeting.mobile.join-link" | "page.meeting.plugin.launch-meeting" | "page.meeting.run-plugin" | "page.meeting.switch.to.webapp" | "page.meeting.testing-plugin" | "page.meeting.testing-plugin.finished" | "page.meeting.tfs.start-download" | "page.meeting.urlprotocol.detect" | "page.meeting.waiting.user-action" | "page.meeting.webexapp.launched" | "page.meeting.webinstaller.started" | "page.meeting.webinstaller.ended" | "client.feature.ptplugin.distribution">;
5
+ resolve: (payload: import("../metrics.types").RecursivePartial<import("@webex/event-dictionary-ts").ClientEvent>) => {
6
+ resources: ("additionalProperties" | "camera" | "microphone" | "contentShare")[];
7
+ terminal: false;
8
+ };
9
+ } | {
10
+ events: Set<"client.abort.join" | "client.alert.displayed" | "client.alert.removed" | "client.application.validate" | "client.audio.noise.removal" | "client.breakout-session.join.request" | "client.breakout-session.join.response" | "client.breakout-session.leave" | "client.breakout-session.move.request" | "client.breakout-session.move.response" | "client.call.aborted" | "client.call.declined" | "client.call.fallback" | "client.call.diagnostics" | "client.call.displayed" | "client.call.info" | "client.call.initiated" | "client.call.leave" | "client.call.move-media" | "client.call.remote-ended" | "client.call.remote-started" | "client.call.skip-locus-join" | "client.ci.exchange-token.request" | "client.ci.exchange-token.response" | "client.conversation.request" | "client.conversation.response" | "client.click.pre-join" | "client.crash" | "client.daemon.join.begin" | "client.daemon.job.done" | "client.daemon.launch-meeting-process" | "client.daemon.pending-on-existing-upgrade-job" | "client.daemon.query-site-info" | "client.daemon.upgrade-and-join" | "client.daemon.wakeup-meeting-client" | "client.duplicate.join" | "client.device.resource-room.joined" | "client.dialog-window.dismissed" | "client.dialog-window.selected" | "client.dialog-window.showed" | "client.e2ee.join.response" | "client.embedded-authorize-page.loaded" | "client.embedded-object-info" | "client.entering-background" | "client.entering-foreground" | "client.exit.app" | "client.gesture.recognition" | "client.hologram.initiated" | "client.hologram.stopped" | "client.hologram.remote.initiated" | "client.hologram.remote.stopped" | "client.hung" | "client.ice.end" | "client.ice.start" | "client.idbroker.authorize.request" | "client.idbroker.authorize.response" | "client.idbroker.client-credential.request" | "client.idbroker.client-credential.response" | "client.idbroker.cloud-reduced-scope.request" | "client.idbroker.direct-authorize.request" | "client.idbroker.direct-authorize.response" | "client.idbroker.cloud-reduced-scope.response" | "client.idbroker.exchange-token.request" | "client.idbroker.exchange-token.response" | "client.idbroker.kms-reduced-scope.request" | "client.idbroker.kms-reduced-scope.response" | "client.idbroker.scim.request" | "client.idbroker.scim.response" | "client.idbroker.user-invoke.request" | "client.idbroker.user-invoke.response" | "client.installer.start" | "client.installer.end" | "client.installer.download-app" | "client.installer.decompress-app" | "client.installer.fallback" | "client.installer.install-app" | "client.installer.launch-app" | "client.installer.switch.to.webapp" | "client.launcher.start" | "client.launcher.selfupgrade.start" | "client.launcher.selfupgrade.end" | "client.launcher.downloadapp.start" | "client.launcher.downloadapp.end" | "client.launcher.launchapp" | "client.launcher.end" | "client.launcher.restart.begin" | "client.launcher.restart.end" | "client.license.activations.request" | "client.license.activations.response" | "client.llm.connect.response" | "client.interstitial-window.launched" | "client.interstitial-window.start-launch" | "client.ivr.join.request" | "client.ivr.join.response" | "client.ivr.leave.request" | "client.ivr.leave.response" | "client.ivr.notify.request" | "client.ivr.notify.response" | "client.lobby.entered" | "client.lobby.exited" | "client.locus.decline.request" | "client.locus.join.request" | "client.locus.join.response" | "client.locus.leave.request" | "client.locus.leave.response" | "client.locus.media.request" | "client.locus.media.response" | "client.locus.sync.complete" | "client.media-engine.crash" | "client.media-engine.launched" | "client.media-engine.lost" | "client.media-engine.local-sdp-generated" | "client.media-engine.ready" | "client.media-engine.remote-sdp-received" | "client.media-engine.start-launch" | "client.media-device.ready" | "client.media-device.stop" | "client.media-device.error" | "client.media-status" | "client.media.capabilities" | "client.media.ready" | "client.media.reachability" | "client.media.reconnecting" | "client.media.recovered" | "client.media.render.start" | "client.media.render.stop" | "client.media.rx.start" | "client.media.rx.stop" | "client.media.share.csi.changed" | "client.media.tx.start" | "client.media.tx.stop" | "client.meetinginfo.request" | "client.meetinginfo.response" | "client.meetingmanagersdk.ipc.run" | "client.meeting.app-loaded" | "client.meeting.breakout-session.action" | "client.meeting.breakout-session.summary" | "client.meeting.browser-plugin.started" | "client.meeting.click.joinbutton" | "client.meeting.closed" | "client.meeting.disclaimer-window.accepted" | "client.meeting.disclaimer-window.closed" | "client.meeting.disclaimer-window.showed" | "client.meeting.docshow.request" | "client.meeting.docshow.response" | "client.meeting.e2e.u2c.response" | "client.meeting.e2e.wca.response" | "client.meeting.e2e.key.response" | "client.meeting.e2ee.u2c.response" | "client.meeting.e2ee.wca.response" | "client.meeting.e2ee.key.response" | "client.meeting.gpc.download" | "client.meeting.gpcparameter.request" | "client.meeting.gpcparameter.response" | "client.meeting.interstitial-window.closed" | "client.meeting.interstitial-window.showed" | "client.meeting.join.request" | "client.meeting.key-information" | "client.meeting.launched" | "client.meeting.login-window.clicked" | "client.meeting.login-window.closed" | "client.meeting.login-window.showed" | "client.meeting.login.response" | "client.meeting.people-insights.check.response" | "client.meeting.people-insights.query.response" | "client.meeting.ping.request" | "client.meeting.ping.response" | "client.meeting.plugin-extension.started" | "client.meeting.resume" | "client.meeting.report-log" | "client.meeting.session.connected" | "client.meeting.start-webexapp" | "client.meeting.start-launch" | "client.meeting.summary" | "client.meeting.user-action" | "client.meeting.validated" | "client.meeting.VDI.detect.plugin.response" | "client.meeting.VDI.connect.plugin.response" | "client.mercury.connection.lost" | "client.mercury.connection.restored" | "client.mercury.connection.start" | "client.mercury.connection.connected" | "client.multistream.sca.rx" | "client.multistream.sca.tx" | "client.multistream.scr.rx" | "client.multistream.scr.tx" | "client.muted" | "client.network.changed" | "client.notification.received" | "client.onboarding-window.start" | "client.onboarding-window.end" | "client.permission.closed" | "client.permission.prompted" | "client.pin.collected" | "client.pin.prompt" | "client.post.meeting.hook" | "client.pstnaudio.attempt.correlation" | "client.pstnaudio.attempt.finish" | "client.pstnaudio.attempt.skip" | "client.pstnaudio.attempt.start" | "client.roap-message.received" | "client.roap-message.sent" | "client.scheduling.initiate" | "client.scheduling.notification" | "client.share.floor-accept.notification" | "client.share.floor-grant.cancel-request" | "client.share.floor-grant.notification" | "client.share.floor-grant.request" | "client.share.floor-granted.local" | "client.share.initiated" | "client.share.layout.displayed" | "client.share.paused" | "client.share.selected-app" | "client.share.stopped" | "client.sign-in.start" | "client.sign-in.end" | "client.started-after-shutdown" | "client.started-from-crash" | "client.stuntrace.failed" | "client.switch.app" | "client.terminate.app" | "client.unmuted" | "client.webexapp.start-launch" | "client.webexapp.launched" | "client.login.start" | "client.login.end" | "client.startup.start" | "client.startup.end" | "client.switch.environment" | "client.u2c.limited-catalog.request" | "client.u2c.limited-catalog.response" | "client.u2c.signin-catalog.request" | "client.u2c.signin-catalog.response" | "client.upgrade-window.accepted" | "client.upgrade-window.closed" | "client.upgrade-window.showed" | "client.waiting.user-action" | "client.warhol.downloaded" | "client.wdm.device-registration.request" | "client.wdm.device-registration.response" | "client.webapp-download.start" | "client.webapp-download.in-progress" | "client.webapp-download.end" | "client.whiteboard.loaded" | "client.call.survey.trigger" | "meeting.initiated" | "meeting.converged.initiated" | "meeting.joined" | "page.click.pre-join" | "page.client.abort.join" | "page.client.interstitial-window.launched" | "page.meeting.browser-reset" | "page.meeting.close-browser" | "page.meeting.extension.started" | "page.meeting.extension.app.starting" | "page.meeting.extension.app.started" | "page.meeting.join-fallback.dismiss" | "page.meeting.join-fallback" | "page.meeting.launch-thinclient" | "page.meeting.launched-duplicate.context" | "page.meeting.loading" | "page.meeting.mobile.call" | "page.meeting.mobile.download" | "page.meeting.mobile.join-link" | "page.meeting.plugin.launch-meeting" | "page.meeting.run-plugin" | "page.meeting.switch.to.webapp" | "page.meeting.testing-plugin" | "page.meeting.testing-plugin.finished" | "page.meeting.tfs.start-download" | "page.meeting.urlprotocol.detect" | "page.meeting.waiting.user-action" | "page.meeting.webexapp.launched" | "page.meeting.webinstaller.started" | "page.meeting.webinstaller.ended" | "client.feature.ptplugin.distribution">;
11
+ resolve: () => {
12
+ resources: ("camera" | "microphone" | "contentShare")[];
13
+ terminal: true;
14
+ };
15
+ })[];
16
+ /**
17
+ * Enriches eligible client events with relevant browser permission changes.
18
+ */
19
+ export default class PrivacyAndSecurityPermissionEnricher {
20
+ private permission?;
21
+ private lastReported;
22
+ private readonly onEnrichmentError;
23
+ /**
24
+ * Creates a permission enricher.
25
+ * @param {Function} onEnrichmentError permission enrichment error handler
26
+ */
27
+ constructor(onEnrichmentError: (error: unknown) => void);
28
+ /**
29
+ * Stores the latest normalized browser permission state.
30
+ * @param {PrivacyAndSecurityPermission} permission permission snapshot
31
+ * @returns {void}
32
+ */
33
+ setPermission(permission: PrivacyAndSecurityPermission): void;
34
+ /**
35
+ * Returns the original payload or a copy enriched with relevant permission changes.
36
+ * @param {PermissionEnrichmentContext} context event context and permission history scope
37
+ * @returns {ClientEventPayload | undefined}
38
+ */
39
+ enrich({ name, payload, scope, }: PermissionEnrichmentContext): ClientEventPayload | undefined;
40
+ }
@@ -0,0 +1,14 @@
1
+ import type { ClientEvent, ClientEventPayload, PrivacyAndSecurityPermissionResource } from '../metrics.types';
2
+ export type PermissionEnrichmentPolicy = {
3
+ resources: readonly PrivacyAndSecurityPermissionResource[];
4
+ terminal: boolean;
5
+ };
6
+ export type PermissionEnrichmentRule = {
7
+ events: ReadonlySet<ClientEvent['name']>;
8
+ resolve: (payload?: ClientEventPayload) => PermissionEnrichmentPolicy;
9
+ };
10
+ export type PermissionEnrichmentContext = {
11
+ name: ClientEvent['name'];
12
+ payload?: ClientEventPayload;
13
+ scope: string;
14
+ };
@@ -0,0 +1,5 @@
1
+ import type { ClientEventPayload, PrivacyAndSecurityPermission, PrivacyAndSecurityPermissionResource } from '../metrics.types';
2
+ export declare const resolveMediaResources: (payload?: ClientEventPayload) => PrivacyAndSecurityPermissionResource[];
3
+ export declare const resolveContentShareResources: (payload?: ClientEventPayload) => PrivacyAndSecurityPermissionResource[];
4
+ export declare const projectPrivacyAndSecurityPermission: (permission: PrivacyAndSecurityPermission, resources: readonly PrivacyAndSecurityPermissionResource[]) => PrivacyAndSecurityPermission | undefined;
5
+ export declare const getChangedPermission: (current: PrivacyAndSecurityPermission, previous: PrivacyAndSecurityPermission) => PrivacyAndSecurityPermission | undefined;
@@ -0,0 +1,60 @@
1
+ export declare const UNHANDLED_EXCEPTION_METRIC_NAME = "JS_SDK_OBSERVED_CLIENT_UNHANDLED_EXCEPTION";
2
+ type ErrorDetails = {
3
+ column?: number;
4
+ filename?: string;
5
+ kind: 'error' | 'unhandledrejection' | 'resource_error';
6
+ line?: number;
7
+ message?: string;
8
+ name: string;
9
+ /** Uppercase DOM tag name, such as SCRIPT, LINK, or IMG; RESOURCE when unavailable. */
10
+ resourceType?: string;
11
+ resourceUrl?: string;
12
+ stack?: string;
13
+ };
14
+ export type UnhandledExceptionEvent = {
15
+ schemaVersion: 1;
16
+ capturedAt: number;
17
+ eventId: string;
18
+ occurrenceCount: number;
19
+ common: {
20
+ appName: string;
21
+ appVersion?: string;
22
+ runtime: 'browser';
23
+ sdkVersion?: string;
24
+ };
25
+ error: ErrorDetails & {
26
+ fingerprint: string;
27
+ };
28
+ metadata?: Record<string, unknown>;
29
+ metadataCaptureStatus?: 'invalid_type' | 'provider_error' | 'too_large';
30
+ };
31
+ type WebexForUnhandledExceptionTelemetry = {
32
+ canAuthorize?: boolean;
33
+ version?: string;
34
+ config?: {
35
+ appName?: string;
36
+ appVersion?: string;
37
+ sdkType?: string;
38
+ metrics?: {
39
+ unhandledExceptionTelemetry?: {
40
+ enabled?: boolean;
41
+ getMetadata?: () => Record<string, unknown> | undefined;
42
+ };
43
+ };
44
+ };
45
+ internal?: {
46
+ metrics?: {
47
+ submitClientMetrics?: (name: string, properties: object, preLoginId?: string) => unknown;
48
+ };
49
+ };
50
+ logger?: {
51
+ error?: (...args: unknown[]) => unknown;
52
+ };
53
+ };
54
+ /**
55
+ * Starts browser exception telemetry after SDK readiness.
56
+ * @param webex Initialized SDK instance.
57
+ * @returns {void}
58
+ */
59
+ export declare function startUnhandledExceptionTelemetry(webex: WebexForUnhandledExceptionTelemetry): void;
60
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare function truncate(value: string | undefined, maxLength: number): string | undefined;
2
+ export declare function removeUrlDetails(value: unknown): string | undefined;
3
+ export declare function sanitizeResourceUrl(value: unknown): string | undefined;
4
+ export declare function removeUrlDetailsFromText(value: string | undefined): string | undefined;
5
+ export declare function createFingerprint(value: string): string;
6
+ export declare function stringifyReason(reason: unknown): string;