voice-react-native-sdk 2.0.0-preview.fork.2 → 2.0.0-preview.fork.4

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.
@@ -116,6 +116,7 @@ public class CommonConstants {
116
116
  public static final String CallEventReconnecting = "callEventReconnecting";
117
117
  public static final String CallEventReconnected = "callEventReconnected";
118
118
  public static final String CallEventRinging = "callEventRinging";
119
+ public static final String CallEventHold = "callEventHold";
119
120
 
120
121
  // Quality warnings
121
122
  public static final String CallEventQualityWarningsChanged = "callEventQualityWarningsChanged";
@@ -308,6 +308,9 @@ NSString * const kDefaultCallKitConfigurationName = @"Twilio Voice React Native"
308
308
  if (self.callMap[action.callUUID.UUIDString]) {
309
309
  TVOCall *call = self.callMap[action.callUUID.UUIDString];
310
310
  [call setOnHold:action.isOnHold];
311
+ [self sendEventWithName:kTwilioVoiceReactNativeScopeCall
312
+ body:@{kTwilioVoiceReactNativeVoiceEventType: kTwilioVoiceReactNativeCallEventHold,
313
+ kTwilioVoiceReactNativeEventKeyCall: [self callInfo:call]}];
311
314
  [action fulfill];
312
315
  } else {
313
316
  [action fail];
@@ -6,6 +6,7 @@
6
6
  //
7
7
 
8
8
  @import AVKit;
9
+ @import CallKit;
9
10
 
10
11
  #import "TwilioVoicePushRegistry.h"
11
12
  #import "TwilioVoiceReactNative.h"
@@ -780,9 +781,21 @@ RCT_EXPORT_METHOD(call_hold:(NSString *)uuid
780
781
  {
781
782
  TVOCall *call = [self getCallFromMap:uuid resolver:resolver];
782
783
  if (!call) return;
783
-
784
- [call setOnHold:onHold];
785
- [self resolvePromise:resolver value:@(call.isOnHold)];
784
+
785
+ // Persist the hold state to CallKit
786
+ // This is to fix a bug where when ending a call, if there was another call on hold, the call would not allow voice input/output.
787
+ CXSetHeldCallAction *holdAction = [[CXSetHeldCallAction alloc] initWithCallUUID:call.uuid onHold:onHold];
788
+ CXTransaction *transaction = [[CXTransaction alloc] initWithAction:holdAction];
789
+
790
+ [self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
791
+ if (error) {
792
+ [call setOnHold:onHold];
793
+ if (!onHold) {
794
+ [TwilioVoiceReactNative twilioAudioDevice].enabled = YES;
795
+ }
796
+ }
797
+ [self resolvePromise:resolver value:@(call.isOnHold)];
798
+ }];
786
799
  }
787
800
 
788
801
  RCT_EXPORT_METHOD(call_isOnHold:(NSString *)uuid
@@ -122,6 +122,7 @@ static NSString * const kTwilioVoiceReactNativeCallEventDisconnected = @"callEve
122
122
  static NSString * const kTwilioVoiceReactNativeCallEventReconnecting = @"callEventReconnecting";
123
123
  static NSString * const kTwilioVoiceReactNativeCallEventReconnected = @"callEventReconnected";
124
124
  static NSString * const kTwilioVoiceReactNativeCallEventRinging = @"callEventRinging";
125
+ static NSString * const kTwilioVoiceReactNativeCallEventHold = @"callEventHold";
125
126
 
126
127
  // Quality warnings
127
128
  static NSString * const kTwilioVoiceReactNativeCallEventQualityWarningsChanged = @"callEventQualityWarningsChanged";
@@ -179,10 +179,11 @@ class Call extends _eventemitter.EventEmitter {
179
179
 
180
180
  this._update(nativeCallEvent);
181
181
 
182
+ const event = nativeCallEvent;
182
183
  const {
183
184
  message,
184
185
  code
185
- } = nativeCallEvent.error;
186
+ } = event.error;
186
187
  const error = (0, _utility.constructTwilioError)(message, code);
187
188
  this.emit(Call.Event.ConnectFailure, error);
188
189
  });
@@ -194,11 +195,13 @@ class Call extends _eventemitter.EventEmitter {
194
195
 
195
196
  this._update(nativeCallEvent);
196
197
 
197
- if (nativeCallEvent.error) {
198
+ const event = nativeCallEvent;
199
+
200
+ if (event.error) {
198
201
  const {
199
202
  message,
200
203
  code
201
- } = nativeCallEvent.error;
204
+ } = event.error;
202
205
  const error = (0, _utility.constructTwilioError)(message, code);
203
206
  this.emit(Call.Event.Disconnected, error);
204
207
  } else {
@@ -213,10 +216,11 @@ class Call extends _eventemitter.EventEmitter {
213
216
 
214
217
  this._update(nativeCallEvent);
215
218
 
219
+ const event = nativeCallEvent;
216
220
  const {
217
221
  message,
218
222
  code
219
- } = nativeCallEvent.error;
223
+ } = event.error;
220
224
  const error = (0, _utility.constructTwilioError)(message, code);
221
225
  this.emit(Call.Event.Reconnecting, error);
222
226
  });
@@ -241,6 +245,18 @@ class Call extends _eventemitter.EventEmitter {
241
245
  this.emit(Call.Event.Ringing);
242
246
  });
243
247
 
248
+ _defineProperty(this, "_handleHoldEvent", nativeCallEvent => {
249
+ var _this$_isOnHold;
250
+
251
+ if (nativeCallEvent.type !== _constants.Constants.CallEventHold) {
252
+ throw new Error('Incorrect "call#hold" handler called for type ' + `"${nativeCallEvent.type}".`);
253
+ }
254
+
255
+ this._update(nativeCallEvent);
256
+
257
+ this.emit(Call.Event.Hold, (_this$_isOnHold = this._isOnHold) !== null && _this$_isOnHold !== void 0 ? _this$_isOnHold : false);
258
+ });
259
+
244
260
  _defineProperty(this, "_handleQualityWarningsChangedEvent", nativeCallEvent => {
245
261
  if (nativeCallEvent.type !== _constants.Constants.CallEventQualityWarningsChanged) {
246
262
  throw new Error('Incorrect "call#qualityWarnings" handler called for type ' + `"${nativeCallEvent.type}".`);
@@ -248,8 +264,9 @@ class Call extends _eventemitter.EventEmitter {
248
264
 
249
265
  this._update(nativeCallEvent);
250
266
 
251
- const currentWarnings = nativeCallEvent[_constants.Constants.CallEventCurrentWarnings];
252
- const previousWarnings = nativeCallEvent[_constants.Constants.CallEventPreviousWarnings];
267
+ const event = nativeCallEvent;
268
+ const currentWarnings = event[_constants.Constants.CallEventCurrentWarnings];
269
+ const previousWarnings = event[_constants.Constants.CallEventPreviousWarnings];
253
270
  this.emit(Call.Event.QualityWarningsChanged, currentWarnings, previousWarnings);
254
271
  });
255
272
 
@@ -260,9 +277,10 @@ class Call extends _eventemitter.EventEmitter {
260
277
 
261
278
  this._update(nativeCallEvent);
262
279
 
280
+ const event = nativeCallEvent;
263
281
  const {
264
282
  callMessage: callMessageInfo
265
- } = nativeCallEvent;
283
+ } = event;
266
284
  const incomingCallMessage = new _IncomingCallMessage.IncomingCallMessage(callMessageInfo);
267
285
  this.emit(Call.Event.MessageReceived, incomingCallMessage);
268
286
  });
@@ -287,6 +305,7 @@ class Call extends _eventemitter.EventEmitter {
287
305
  [_constants.Constants.CallEventReconnected]: this._handleReconnectedEvent,
288
306
  [_constants.Constants.CallEventReconnecting]: this._handleReconnectingEvent,
289
307
  [_constants.Constants.CallEventRinging]: this._handleRingingEvent,
308
+ [_constants.Constants.CallEventHold]: this._handleHoldEvent,
290
309
 
291
310
  /**
292
311
  * Call Quality
@@ -322,6 +341,8 @@ class Call extends _eventemitter.EventEmitter {
322
341
  call: {
323
342
  from,
324
343
  initialConnectedTimestamp,
344
+ isOnHold,
345
+ isMuted,
325
346
  sid,
326
347
  to
327
348
  }
@@ -334,6 +355,8 @@ class Call extends _eventemitter.EventEmitter {
334
355
 
335
356
  this._from = from;
336
357
  this._initialConnectedTimestamp = initialConnectedTimestamp ? new Date(initialConnectedTimestamp) : undefined;
358
+ this._isOnHold = isOnHold;
359
+ this._isMuted = isMuted;
337
360
  this._sid = sid;
338
361
  this._to = to;
339
362
  }
@@ -649,6 +672,7 @@ exports.Call = Call;
649
672
  Event["Reconnected"] = "reconnected";
650
673
  Event["Disconnected"] = "disconnected";
651
674
  Event["Ringing"] = "ringing";
675
+ Event["Hold"] = "hold";
652
676
  Event["QualityWarningsChanged"] = "qualityWarningsChanged";
653
677
  Event["MessageReceived"] = "messageReceived";
654
678
  })(Event || (Event = {}));
@@ -1 +1 @@
1
- {"version":3,"sources":["Call.tsx"],"names":["Call","EventEmitter","constructor","uuid","customParameters","from","sid","state","to","isMuted","isOnHold","initialConnectedTimestamp","nativeCallEvent","type","call","callInfo","handler","_nativeEventHandler","Error","_uuid","Constants","CallEventConnected","_update","emit","Event","Connected","CallEventConnectFailure","message","code","error","ConnectFailure","CallEventDisconnected","Disconnected","CallEventReconnecting","Reconnecting","CallEventReconnected","Reconnected","CallEventRinging","Ringing","CallEventQualityWarningsChanged","currentWarnings","CallEventCurrentWarnings","previousWarnings","CallEventPreviousWarnings","QualityWarningsChanged","CallEventMessageReceived","callMessage","callMessageInfo","incomingCallMessage","IncomingCallMessage","MessageReceived","_customParameters","_from","_sid","_state","State","Connecting","_to","_isMuted","_isOnHold","_initialConnectedTimestamp","Date","undefined","_handleConnectedEvent","_handleConnectFailureEvent","_handleDisconnectedEvent","_handleReconnectedEvent","_handleReconnectingEvent","_handleRingingEvent","_handleQualityWarningsChangedEvent","_handleMessageReceivedEvent","NativeEventEmitter","addListener","ScopeCall","_handleNativeEvent","newState","eventTypeStateMap","disconnect","NativeModule","call_disconnect","getCustomParameters","getFrom","getInitialConnectedTimestamp","getSid","getState","getStats","stats","call_getStats","getTo","hold","call_hold","mute","call_mute","sendDigits","digits","call_sendDigits","sendMessage","content","contentType","messageType","voiceEventSid","call_sendMessage","outgoingCallMessage","OutgoingCallMessage","postFeedback","score","issue","validScores","includes","InvalidArgumentError","Object","values","Issue","nativeScore","scoreMap","nativeIssue","issueMap","call_postFeedback","CallStateConnected","CallStateConnecting","CallStateDisconnected","CallStateReconnecting","CallStateRinging","QualityWarning","Score","Listener","NotReported","One","Two","Three","Four","Five","CallFeedbackScoreNotReported","CallFeedbackScoreOne","CallFeedbackScoreTwo","CallFeedbackScoreThree","CallFeedbackScoreFour","CallFeedbackScoreFive","AudioLatency","CallFeedbackIssueAudioLatency","ChoppyAudio","CallFeedbackIssueChoppyAudio","DroppedCall","CallFeedbackIssueDroppedCall","Echo","CallFeedbackIssueEcho","NoisyCall","CallFeedbackIssueNoisyCall","CallFeedbackIssueNotReported","OneWayAudio","CallFeedbackIssueOneWayAudio"],"mappings":"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,QAAQ,GAAe;AACrB,WAAO,KAAK9B,MAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACgB,QAAR+B,QAAQ,GAAkC;AAC9C,UAAMC,KAAK,GAAG,MAAM,wCAClBR,qBAAaS,aAAb,CAA2B,KAAKpE,KAAhC,CADkB,CAApB;AAGA,WAAOmE,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEE,EAAAA,KAAK,GAAuB;AAC1B,WAAO,KAAK/B,GAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACY,QAAJgC,IAAI,CAACA,IAAD,EAAkC;AAC1C,SAAK9B,SAAL,GAAiB,MAAM,wCACrBmB,qBAAaY,SAAb,CAAuB,KAAKvE,KAA5B,EAAmCsE,IAAnC,CADqB,CAAvB;AAGA,WAAO,KAAK9B,SAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACY,QAAJgC,IAAI,CAACA,IAAD,EAAkC;AAC1C,SAAKjC,QAAL,GAAgB,MAAM,wCACpBoB,qBAAac,SAAb,CAAuB,KAAKzE,KAA5B,EAAmCwE,IAAnC,CADoB,CAAtB;AAGA,WAAO,KAAKjC,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACkB,QAAVmC,UAAU,CAACC,MAAD,EAAgC;AAC9C,UAAM,wCAAoBhB,qBAAaiB,eAAb,CAA6B,KAAK5E,KAAlC,EAAyC2E,MAAzC,CAApB,CAAN;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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","sourcesContent":["/**\n * Copyright © 2022 Twilio, Inc. All rights reserved. Licensed under the Twilio\n * license.\n *\n * See LICENSE in the project root for license information.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport type { RTCStats } from './';\nimport { NativeModule, NativeEventEmitter } from './common';\nimport { Constants } from './constants';\nimport type {\n NativeCallEvent,\n NativeCallEventType,\n NativeCallInfo,\n NativeCallFeedbackIssue,\n NativeCallFeedbackScore,\n} from './type/Call';\nimport type { CustomParameters, Uuid } from './type/common';\nimport type { TwilioError } from './error/TwilioError';\nimport { InvalidArgumentError } from './error/InvalidArgumentError';\nimport { constructTwilioError } from './error/utility';\nimport { CallMessage, validateCallMessage } from './CallMessage/CallMessage';\nimport { IncomingCallMessage } from './CallMessage/IncomingCallMessage';\nimport { OutgoingCallMessage } from './CallMessage/OutgoingCallMessage';\nimport { settleNativePromise } from './utility/nativePromise';\n\n/**\n * Defines strict typings for all events emitted by {@link (Call:class)\n * | Call objects}.\n *\n * @remarks\n * Note that the `on` function is an alias for the `addListener` function.\n * They share identical functionality and either may be used interchangeably.\n *\n * - See also the {@link (Call:class) | Call class}.\n * - See also the {@link (Call:namespace) | Call namespace}.\n *\n * @public\n */\nexport declare interface Call {\n /**\n * ------------\n * Emit Typings\n * ------------\n */\n\n /** @internal */\n emit(connectedEvent: Call.Event.Connected): boolean;\n\n /** @internal */\n emit(\n connectFailureEvent: Call.Event.ConnectFailure,\n error: TwilioError\n ): boolean;\n\n /** @internal */\n emit(reconnectingEvent: Call.Event.Reconnecting, error: TwilioError): boolean;\n\n /** @internal */\n emit(reconnectedEvent: Call.Event.Reconnected): boolean;\n\n /** @internal */\n emit(\n disconnectedEvent: Call.Event.Disconnected,\n error?: TwilioError\n ): boolean;\n\n /** @internal */\n emit(ringingEvent: Call.Event.Ringing): boolean;\n\n /** @internal */\n emit(\n qualityWarningsChangedEvent: Call.Event.QualityWarningsChanged,\n currentQualityWarnings: Call.QualityWarning[],\n previousQualityWarnings: Call.QualityWarning[]\n ): boolean;\n\n /** @internal */\n emit(\n messageReceivedEvent: Call.Event.MessageReceived,\n incomingCallMessage: IncomingCallMessage\n ): boolean;\n\n /**\n * ----------------\n * Listener Typings\n * ----------------\n */\n\n /**\n * Connected event. Raised when the call has successfully connected.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Connected, () => {\n * // call has been connected\n * });\n * ```\n *\n * @param connectedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n connectedEvent: Call.Event.Connected,\n listener: Call.Listener.Connected\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:1)}\n */\n on(\n connectedEvent: Call.Event.Connected,\n listener: Call.Listener.Connected\n ): this;\n\n /**\n * Connect failure event. Raised when the call has failed to connect.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.ConnectFailure, (error) => {\n * // call was unable to connect, handle error\n * });\n * ```\n *\n * @param connectFailureEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n connectFailureEvent: Call.Event.ConnectFailure,\n listener: Call.Listener.ConnectFailure\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:2)}\n */\n on(\n connectFailureEvent: Call.Event.ConnectFailure,\n listener: Call.Listener.ConnectFailure\n ): this;\n\n /**\n * Reconnecting event. Raised when the call is reconnecting.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Reconnecting, (error) => {\n * // call is attempting to reconnect, handle error\n * });\n * ```\n *\n * @param reconnectingEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n reconnectingEvent: Call.Event.Reconnecting,\n listener: Call.Listener.Reconnecting\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:3)}\n */\n on(\n reconnectingEvent: Call.Event.Reconnecting,\n listener: Call.Listener.Reconnecting\n ): this;\n\n /**\n * Reconnected event. Raised when the call has recovered and reconnected.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Reconnected, () => {\n * // call has reconnected\n * });\n * ```\n *\n * @param reconnectedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n reconnectedEvent: Call.Event.Reconnected,\n listener: Call.Listener.Reconnected\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:4)}\n */\n on(\n reconnectedEvent: Call.Event.Reconnected,\n listener: Call.Listener.Reconnected\n ): this;\n\n /**\n * Disconnected event. Raised when the call has disconnected.\n *\n * @remarks\n * This event can occur in \"naturally\" disconnected calls and calls\n * disconnected from issues such as network problems. If the SDK has detected\n * an issue that has caused the call to disconnect, then the error parameter\n * will be defined, otherwise it will be undefined.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Disconnected, (error) => {\n * // call has disconnected\n * // if a natural disconnect occurred, then error is `undefined`\n * // if an unnatural disconnect occurred, then error is defined\n * });\n * ```\n *\n * @param disconnectedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n disconnectedEvent: Call.Event.Disconnected,\n listener: Call.Listener.Disconnected\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:5)}\n */\n on(\n disconnectedEvent: Call.Event.Disconnected,\n listener: Call.Listener.Disconnected\n ): this;\n\n /**\n * Ringing event. Raised when the call has begun to ring.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Ringing, () => {\n * // call is ringing\n * });\n * ```\n *\n * @param ringingEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n ringingEvent: Call.Event.Ringing,\n listener: Call.Listener.Ringing\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:6)}\n */\n on(ringingEvent: Call.Event.Ringing, listener: Call.Listener.Ringing): this;\n\n /**\n * Quality warnings changed event. Raised when a call quality warning is set\n * or unset. All \"ongoing\" call quality warnings are passed to the invoked\n * listener function.\n *\n * @example\n * ```typescript\n * call.addListener(\n * Call.Event.QualityWarningsChanged,\n * (\n * currentWarnings: Call.QualityWarning[],\n * previousWarnings: Call.QualityWarning[]\n * ) => {\n * // call quality warnings have changed\n * }\n * );\n * ```\n *\n * @param qualityWarningsChangedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n qualityWarningsChangedEvent: Call.Event.QualityWarningsChanged,\n listener: Call.Listener.QualityWarningsChanged\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:7)}\n */\n on(\n qualityWarningsChangedEvent: Call.Event.QualityWarningsChanged,\n listener: Call.Listener.QualityWarningsChanged\n ): this;\n\n /**\n * MessageReceived event. Raised when a {@link IncomingCallMessage} is\n * received.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.MessageReceived, (message) => {\n * // callMessage received\n * })\n * ```\n *\n * @param messageReceivedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The callMessage object\n */\n addListener(\n messageReceivedEvent: Call.Event.MessageReceived,\n listener: Call.Listener.MessageReceived\n ): this;\n /** {@inheritDoc (Call:interface).(addListener:8)} */\n on(\n callMessageEvent: Call.Event.MessageReceived,\n listener: Call.Listener.MessageReceived\n ): this;\n\n /**\n * Generic event listener typings.\n * @param callEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(callEvent: Call.Event, listener: Call.Listener.Generic): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:9)}\n */\n on(callEvent: Call.Event, listener: Call.Listener.Generic): this;\n}\n\n/**\n * Provides access to information about a call, including the call parameters,\n * and exposes functionality for a call such as disconnecting, muting, and\n * holding.\n *\n * @remarks\n * Note that the call information is fetched as soon as possible from the native\n * layer, but there is no guarantee that all information is immediately\n * available. Methods such as `Call.getFrom()` or `Call.getTo()` may return\n * `undefined`.\n *\n * As call events are received from the native layer, call information will\n * propagate from the native layer to the JS layer and become available.\n * Therefore, it is good practice to read information from the call after an\n * event occurs, or as events occur.\n *\n * - See the {@link (Call:namespace).Event} enum for events emitted by `Call`\n * objects.\n * - See the {@link (Call:interface) | Call interface} for overloaded event\n * listening methods.\n * - See the {@link (Call:namespace) | Call namespace} for types and\n * enumerations used by this class.\n *\n * @public\n */\nexport class Call extends EventEmitter {\n /**\n * The `Uuid` of this call. Used to identify calls between the JS and native\n * layer so we can associate events and native functionality between the\n * layers.\n */\n private _uuid: Uuid;\n /**\n * Call custom parameters.\n */\n private _customParameters: CustomParameters;\n /**\n * Call `from` parameter.\n */\n private _from?: string;\n /**\n * Initial `connected` timestamp. Milliseconds since epoch.\n */\n private _initialConnectedTimestamp?: Date;\n /**\n * A boolean representing if the call is currently muted.\n */\n private _isMuted?: boolean;\n /**\n * A boolean representing if the call is currently on hold.\n */\n private _isOnHold?: boolean;\n /**\n * A string representing the SID of this call.\n */\n private _sid?: string;\n /**\n * The current state of the call.\n *\n * @remarks\n * See {@link (Call:namespace).State}.\n */\n private _state: Call.State;\n /**\n * Call `to` parameter.\n */\n private _to?: string;\n\n /**\n * Handlers for native call events. Set upon construction so we can\n * dynamically bind events to handlers.\n *\n * @privateRemarks\n * This is done by the constructor so this mapping isn't made every time the\n * {@link (Call:class)._handleNativeEvent} function is invoked.\n */\n private _nativeEventHandler: Record<\n NativeCallEventType,\n (callEvent: NativeCallEvent) => void\n >;\n\n /**\n * Constructor for the {@link (Call:class) | Call class}. This should not be\n * invoked by third-party code. All instances of the\n * {@link (Call:class) | Call class} should be made by the SDK and emitted by\n * {@link (Voice:class) | Voice objects}.\n *\n * @param nativeCallInfo - An object containing all of the data from the\n * native layer necessary to fully describe a call, as well as invoke native\n * functionality for the call.\n *\n * @internal\n */\n constructor({\n uuid,\n customParameters,\n from,\n sid,\n state,\n to,\n isMuted,\n isOnHold,\n initialConnectedTimestamp,\n }: NativeCallInfo) {\n super();\n\n this._uuid = uuid;\n this._customParameters = { ...customParameters };\n this._from = from;\n this._sid = sid;\n this._state = typeof state === 'string' ? state : Call.State.Connecting;\n this._to = to;\n this._isMuted = isMuted;\n this._isOnHold = isOnHold;\n this._initialConnectedTimestamp = initialConnectedTimestamp\n ? new Date(initialConnectedTimestamp)\n : undefined;\n\n this._nativeEventHandler = {\n /**\n * Call State\n */\n [Constants.CallEventConnected]: this._handleConnectedEvent,\n [Constants.CallEventConnectFailure]: this._handleConnectFailureEvent,\n [Constants.CallEventDisconnected]: this._handleDisconnectedEvent,\n [Constants.CallEventReconnected]: this._handleReconnectedEvent,\n [Constants.CallEventReconnecting]: this._handleReconnectingEvent,\n [Constants.CallEventRinging]: this._handleRingingEvent,\n\n /**\n * Call Quality\n */\n [Constants.CallEventQualityWarningsChanged]:\n this._handleQualityWarningsChangedEvent,\n\n /**\n * Call Message\n */\n [Constants.CallEventMessageReceived]: this._handleMessageReceivedEvent,\n };\n\n NativeEventEmitter.addListener(\n Constants.ScopeCall,\n this._handleNativeEvent\n );\n }\n\n /**\n * This intermediate native call event handler acts as a \"gate\", only\n * executing the actual call event handler (such as `Connected`) if this call\n * object matches the `Uuid` of the call that had an event raised.\n * @param nativeCallEvent - A call event directly from the native layer.\n */\n private _handleNativeEvent = (nativeCallEvent: NativeCallEvent) => {\n const { type, call: callInfo } = nativeCallEvent;\n\n const handler = this._nativeEventHandler[type];\n if (typeof handler === 'undefined') {\n throw new Error(\n `Unknown call event type received from the native layer: \"${type}\".`\n );\n }\n\n if (callInfo.uuid === this._uuid) {\n handler(nativeCallEvent);\n }\n };\n\n /**\n * Helper function to update the state of the call when a call event occurs\n * that necessitates an update, i.e. upon a\n * {@link (Call:namespace).Event.Connected | Connected event} we want to\n * update the state of the call to also reflect the\n * {@link (Call:namespace).State.Connected | Connected state}.\n * @param nativeCallEvent - The native call event.\n */\n private _update({\n type,\n call: { from, initialConnectedTimestamp, sid, to },\n }: NativeCallEvent) {\n const newState = eventTypeStateMap[type];\n if (typeof newState === 'string') {\n this._state = newState;\n }\n this._from = from;\n this._initialConnectedTimestamp = initialConnectedTimestamp\n ? new Date(initialConnectedTimestamp)\n : undefined;\n this._sid = sid;\n this._to = to;\n }\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Connected} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleConnectedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventConnected) {\n throw new Error(\n 'Incorrect \"call#connected\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Connected);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.ConnectFailure} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleConnectFailureEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventConnectFailure) {\n throw new Error(\n 'Incorrect \"call#connectFailure\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const { message, code } = nativeCallEvent.error;\n const error = constructTwilioError(message, code);\n this.emit(Call.Event.ConnectFailure, error);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Disconnected} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleDisconnectedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventDisconnected) {\n throw new Error(\n 'Incorrect \"call#disconnected\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n if (nativeCallEvent.error) {\n const { message, code } = nativeCallEvent.error;\n const error = constructTwilioError(message, code);\n this.emit(Call.Event.Disconnected, error);\n } else {\n this.emit(Call.Event.Disconnected);\n }\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Reconnecting} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleReconnectingEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventReconnecting) {\n throw new Error(\n 'Incorrect \"call#reconnecting\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const { message, code } = nativeCallEvent.error;\n const error = constructTwilioError(message, code);\n this.emit(Call.Event.Reconnecting, error);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Reconnected} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleReconnectedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventReconnected) {\n throw new Error(\n 'Incorrect \"call#reconnected\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Reconnected);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Ringing} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleRingingEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventRinging) {\n throw new Error(\n 'Incorrect \"call#ringing\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Ringing);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.QualityWarningsChanged}\n * event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleQualityWarningsChangedEvent = (\n nativeCallEvent: NativeCallEvent\n ) => {\n if (nativeCallEvent.type !== Constants.CallEventQualityWarningsChanged) {\n throw new Error(\n 'Incorrect \"call#qualityWarnings\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const currentWarnings = nativeCallEvent[Constants.CallEventCurrentWarnings];\n const previousWarnings =\n nativeCallEvent[Constants.CallEventPreviousWarnings];\n\n this.emit(\n Call.Event.QualityWarningsChanged,\n currentWarnings as Call.QualityWarning[],\n previousWarnings as Call.QualityWarning[]\n );\n };\n\n /**\n * Handler for the {@link (Call:namespace).Event.MessageReceived} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleMessageReceivedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventMessageReceived) {\n throw new Error(\n 'Incorrect \"call#Received\" handler called for type' +\n `\"${nativeCallEvent.type}`\n );\n }\n\n this._update(nativeCallEvent);\n\n const { callMessage: callMessageInfo } = nativeCallEvent;\n\n const incomingCallMessage = new IncomingCallMessage(callMessageInfo);\n\n this.emit(Call.Event.MessageReceived, incomingCallMessage);\n };\n\n /**\n * Disconnect this side of the call.\n * @returns\n * A `Promise` that\n * - Resolves when the call has disconnected.\n * - Rejects if the native layer cannot disconnect the call.\n */\n async disconnect(): Promise<void> {\n await settleNativePromise(NativeModule.call_disconnect(this._uuid));\n }\n\n /**\n * Get the mute status of this side of the call.\n * @returns\n * - A boolean representing the muted status of the call.\n * - `undefined` if the call state has not yet been received from the native\n * layer.\n */\n isMuted(): boolean | undefined {\n return this._isMuted;\n }\n\n /**\n * Get the hold status of this side of the call.\n * @returns\n * - A boolean representing the hold status of the call.\n * - `undefined` if the call state has not yet been received from the native\n * layer.\n */\n isOnHold(): boolean | undefined {\n return this._isOnHold;\n }\n\n /**\n * Return a `Record` of custom parameters given to this call.\n * @returns\n * - A `Record` of custom parameters.\n */\n getCustomParameters(): CustomParameters {\n return this._customParameters;\n }\n\n /**\n * Get the value of the `from` parameter given to this call.\n * @returns\n * - A `String` representing the `from` parameter.\n * - `undefined` if the call information has not yet been received from the\n * native layer.\n */\n getFrom(): string | undefined {\n return this._from;\n }\n\n /**\n * Get the timestamp (milliseconds since epoch) of the call connected event.\n * @returns\n * - A `number` representing the timestamp.\n * - `undefined` if the call has not yet connected.\n */\n getInitialConnectedTimestamp(): Date | undefined {\n return this._initialConnectedTimestamp;\n }\n\n /**\n * Get the call `SID`.\n * @returns\n * - A `String` representing the `SID` of the call.\n * - `undefined` if the call information has not yet been received from the\n * native layer.\n */\n getSid(): string | undefined {\n return this._sid;\n }\n\n /**\n * Get the state of the call object, such as {@link (Call:namespace).State.Connected} or\n * {@link (Call:namespace).State.Disconnected}.\n * @returns\n * - A {@link (Call:namespace).State}.\n */\n getState(): Call.State {\n return this._state;\n }\n\n /**\n * Gets the `PeerConnection` `WebRTC` stats for the ongoing call.\n * @returns\n * A `Promise` that\n * - Resolves with a {@link RTCStats.StatsReport} object representing the\n * `WebRTC` `PeerConnection` stats of a call.\n * - Rejects when a {@link RTCStats.StatsReport} cannot be generated for a\n * call.\n */\n async getStats(): Promise<RTCStats.StatsReport> {\n const stats = await settleNativePromise(\n NativeModule.call_getStats(this._uuid)\n );\n return stats;\n }\n\n /**\n * Get the value of the `to` parameter given to this call.\n * @returns\n * - A `String` representing the `to` parameter.\n * - `undefined` if the call information has not yet been received from the\n * native layer.\n */\n getTo(): string | undefined {\n return this._to;\n }\n\n /**\n * Put this end of the call on hold or not on hold.\n *\n * @example\n * To put a call on hold\n * ```typescript\n * call.hold(true);\n * ```\n * @example\n * To take a call off hold\n * ```typescript\n * call.hold(false);\n * ```\n *\n * @param hold - A `boolean` representing whether or not to put this end of\n * the call on hold.\n *\n * @returns\n * A `Promise` that\n * - Resolves with the hold status when the call is put on hold or not on\n * hold.\n * - Rejects when the call is not able to be put on hold or not on hold.\n */\n async hold(hold: boolean): Promise<boolean> {\n this._isOnHold = await settleNativePromise(\n NativeModule.call_hold(this._uuid, hold)\n );\n return this._isOnHold;\n }\n\n /**\n * Mute or unmute this end of the call.\n *\n * @example\n * To mute a call\n * ```typescript\n * call.mute(true);\n * ```\n *\n * @example\n * To unmute a call\n * ```typescript\n * call.mute(false);\n * ```\n *\n * @param mute - A `boolean` representing whether or not to mute this end of\n * the call.\n *\n * @returns\n * A `Promise` that\n * - Resolves with the muted status of the call when the call is muted or\n * unmuted.\n * - Rejects when the call is not able to be muted or unmuted.\n */\n async mute(mute: boolean): Promise<boolean> {\n this._isMuted = await settleNativePromise(\n NativeModule.call_mute(this._uuid, mute)\n );\n return this._isMuted;\n }\n\n /**\n * Send DTMF digits.\n *\n * @example\n * To send the `0` dialtone:\n * ```typescript\n * call.sendDigits('0');\n * ```\n *\n * @example\n * To send the `0` and then `1` dialtone:\n * ```typescript\n * call.sendDigits('01');\n * ```\n *\n * @param digits - A sequence of DTMF digits in a string.\n *\n * @returns\n * A `Promise` that\n * - Resolves when the DTMF digits have been sent.\n * - Rejects when DTMF tones are not able to be sent.\n */\n async sendDigits(digits: string): Promise<void> {\n await settleNativePromise(NativeModule.call_sendDigits(this._uuid, digits));\n }\n\n /**\n * Send a CallMessage.\n *\n * @example\n * To send a user-defined-message\n * ```typescript\n * const outgoingCallMessage: OutgoingCallMessage = await call.sendMessage({\n * content: { key1: 'This is a messsage from the parent call' },\n * contentType: 'application/json',\n * messageType: 'user-defined-message'\n * });\n *\n * outgoingCallMessage.addListener(OutgoingCallMessage.Event.Failure, (error) => {\n * // outgoingCallMessage failed, handle error\n * });\n *\n * outgoingCallMessage.addListener(OutgoingCallMessage.Event.Sent, () => {\n * // outgoingCallMessage sent\n * });\n * ```\n *\n * @param message - The call message to send.\n *\n * @returns\n * A `Promise` that\n * - Resolves with the OutgoingCallMessage object.\n * - Rejects when the message is unable to be sent.\n */\n async sendMessage(message: CallMessage): Promise<OutgoingCallMessage> {\n const { content, contentType, messageType } = validateCallMessage(message);\n\n const voiceEventSid = await settleNativePromise(\n NativeModule.call_sendMessage(\n this._uuid,\n content,\n contentType,\n messageType\n )\n );\n\n const outgoingCallMessage = new OutgoingCallMessage({\n content,\n contentType,\n messageType,\n voiceEventSid,\n });\n\n return outgoingCallMessage;\n }\n\n /**\n * Post feedback about a call.\n *\n * @example\n * To report that a call had very significant audio latency:\n * ```typescript\n * call.postFeedback(Call.Score.Five, Call.Issue.AudioLatency);\n * ```\n *\n * @param score - A score representing the serverity of the issue being\n * reported.\n * @param issue - The issue being reported.\n * @returns\n * A `Promise` that\n * - Resolves when the feedback has been posted.\n * - Rejects when the feedback is unable to be sent.\n */\n async postFeedback(score: Call.Score, issue: Call.Issue): Promise<void> {\n if (!validScores.includes(score)) {\n throw new InvalidArgumentError(\n '\"score\" parameter invalid. Must be a member of the `Call.Score` enum.'\n );\n }\n\n if (!Object.values(Call.Issue).includes(issue)) {\n throw new InvalidArgumentError(\n '\"issue\" parameter invalid. Must be a member of the `Call.Issue` enum.'\n );\n }\n\n const nativeScore = scoreMap[score];\n const nativeIssue = issueMap[issue];\n\n await settleNativePromise(\n NativeModule.call_postFeedback(this._uuid, nativeScore, nativeIssue)\n );\n }\n}\n\n/**\n * Namespace for enumerations and types used by\n * {@link (Call:class) | Call objects}.\n *\n * @remarks\n * - See also the {@link (Call:class) | Call class}.\n * - See also the {@link (Call:interface) | Call interface}.\n *\n * @public\n */\nexport namespace Call {\n /**\n * Enumeration of all event strings emitted by {@link (Call:class)} objects.\n */\n export enum Event {\n /**\n * Event string for the `Connected` event.\n * See {@link (Call:interface).(addListener:1)}.\n */\n 'Connected' = 'connected',\n\n /**\n * Event string for the `ConnectedFailure` event.\n * See {@link (Call:interface).(addListener:2)}.\n */\n 'ConnectFailure' = 'connectFailure',\n\n /**\n * Event string for the `Reconnecting` event.\n * See {@link (Call:interface).(addListener:3)}.\n */\n 'Reconnecting' = 'reconnecting',\n\n /**\n * Event string for the `Reconnected` event.\n * See {@link (Call:interface).(addListener:4)}.\n */\n 'Reconnected' = 'reconnected',\n\n /**\n * Event string for the `Disconnected` event.\n * See {@link (Call:interface).(addListener:5)}.\n */\n 'Disconnected' = 'disconnected',\n\n /**\n * Event string for the `Ringing` event.\n * See {@link (Call:interface).(addListener:6)}.\n */\n 'Ringing' = 'ringing',\n\n /**\n * Event string for the `QualityWarningsChanged` event.\n * See {@link (Call:interface).(addListener:7)}.\n */\n 'QualityWarningsChanged' = 'qualityWarningsChanged',\n\n /**\n * Event string for the `MessageReceived` event.\n * See {@link (Call:interface).(addListener:8)}\n */\n 'MessageReceived' = 'messageReceived',\n }\n\n /**\n * An enumeration of all possible {@link (Call:class) | Call object} states.\n */\n export enum State {\n /**\n * Call `Connected` state.\n *\n * Occurs when the `Connected` and `Reconnected` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:1)}.\n *\n * See {@link (Call:interface).(addListener:4)}.\n */\n 'Connected' = Constants.CallStateConnected,\n\n /**\n * Call `Connecting` state.\n *\n * The default state of an outgoing call.\n */\n 'Connecting' = Constants.CallStateConnecting,\n\n /**\n * Call `Disconnected` state.\n *\n * Occurs when the `Disconnected` or `ConnectFailure` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:5)}.\n *\n * See {@link (Call:interface).(addListener:2)}.\n */\n 'Disconnected' = Constants.CallStateDisconnected,\n\n /**\n * Call `Reconnecting` state.\n *\n * Occurs when the `Reconnecting` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:3)}.\n */\n 'Reconnecting' = Constants.CallStateReconnecting,\n\n /**\n * Call `Ringing` state. Occurs when the `Ringing` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:6)}.\n */\n 'Ringing' = Constants.CallStateRinging,\n }\n\n /**\n * An enumeration of all call quality-warning types.\n */\n export enum QualityWarning {\n /**\n * Raised when the call detects constant audio input, such as silence.\n */\n 'ConstantAudioInputLevel' = 'constant-audio-input-level',\n /**\n * Raised when the network encounters high jitter.\n */\n 'HighJitter' = 'high-jitter',\n /**\n * Raised when the network encounters high packet loss.\n */\n 'HighPacketLoss' = 'high-packet-loss',\n /**\n * Raised when the network encounters high packet round-trip-time.\n */\n 'HighRtt' = 'high-rtt',\n /**\n * Raised when the call detects a low mean-opinion-score or MOS.\n */\n 'LowMos' = 'low-mos',\n }\n\n /**\n * An enumeration of all scores that could be used to rate the experience of\n * a call or issues encountered during the call.\n */\n export enum Score {\n /**\n * An issue was not encountered or there is no desire to report said issue.\n */\n 'NotReported' = 0,\n /**\n * An issue had severity approximately 1/5.\n */\n 'One' = 1,\n /**\n * An issue had severity approximately 2/5.\n */\n 'Two' = 2,\n /**\n * An issue had severity approximately 3/5.\n */\n 'Three' = 3,\n /**\n * An issue had severity approximately 4/5.\n */\n 'Four' = 4,\n /**\n * An issue had severity approximately 5/5.\n */\n 'Five' = 5,\n }\n\n /**\n * An enumeration of call issues that can be reported.\n */\n export enum Issue {\n /**\n * No issue is reported.\n */\n 'NotReported' = 'not-reported',\n /**\n * The call was dropped unexpectedly.\n */\n 'DroppedCall' = 'dropped-call',\n /**\n * The call encountered significant audio latency.\n */\n 'AudioLatency' = 'audio-latency',\n /**\n * One party of the call could not hear the other callee.\n */\n 'OneWayAudio' = 'one-way-audio',\n /**\n * Call audio was choppy.\n */\n 'ChoppyAudio' = 'choppy-audio',\n /**\n * Call audio had significant noise.\n */\n 'NoisyCall' = 'noisy-call',\n /**\n * Call audio had significant echo.\n */\n 'Echo' = 'echo',\n }\n\n /**\n * Listener types for all events emitted by a\n * {@link (Call:class) | Call object.}\n */\n export namespace Listener {\n /**\n * Connected event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Connected}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:1)}.\n */\n export type Connected = () => void;\n\n /**\n * Connect failure event listener. This should be the function signature of\n * any event listener bound to the\n * {@link (Call:namespace).Event.ConnectFailure} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:2)}.\n *\n * See {@link TwilioErrors} for all error classes.\n */\n export type ConnectFailure = (error: TwilioError) => void;\n\n /**\n * Reconnecting event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Reconnecting}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:3)}.\n *\n * See {@link TwilioErrors} for all error classes.\n */\n export type Reconnecting = (error: TwilioError) => void;\n\n /**\n * Reconnected event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Reconnected}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:4)}.\n */\n export type Reconnected = () => void;\n\n /**\n * Disconnected event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Disconnected}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:5)}.\n *\n * See {@link TwilioErrors} for all error classes.\n */\n export type Disconnected = (error?: TwilioError) => void;\n\n /**\n * Ringing event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Ringing} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:6)}.\n */\n export type Ringing = () => void;\n\n /**\n * Quality warnings changed event listener. This should be the function\n * signature of any event listener bound to the\n * {@link (Call:namespace).Event.QualityWarningsChanged} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:7)}.\n */\n export type QualityWarningsChanged = (\n currentQualityWarnings: Call.QualityWarning[],\n previousQualityWarnings: Call.QualityWarning[]\n ) => void;\n\n /**\n * CallMessage received event listener. This should be the function signature of\n * any event listener bound to the {@link (Call:namespace).Event.MessageReceived} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:8)}.\n */\n export type MessageReceived = (\n incomingCallMessage: IncomingCallMessage\n ) => void;\n\n /**\n * Generic event listener. This should be the function signature of any\n * event listener bound to any call event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:9)}.\n */\n export type Generic = (...args: any[]) => void;\n }\n}\n\n/**\n * Mapping of {@link (Call:namespace).Event | Call events} to\n * {@link (Call:namespace).State | Call states}.\n *\n * @remarks\n * Note that this mapping is not a 1:1 bijection. Not every event coming from\n * the native layer has a relevant state, and some events share a state.\n * Therefore, this `Record` needs to be marked as `Partial` and\n * undefined-checking logic is needed when using this mapping.\n *\n * @internal\n */\nconst eventTypeStateMap: Partial<Record<NativeCallEventType, Call.State>> = {\n [Constants.CallEventConnected]: Call.State.Connected,\n [Constants.CallEventConnectFailure]: Call.State.Disconnected,\n [Constants.CallEventDisconnected]: Call.State.Disconnected,\n [Constants.CallEventReconnecting]: Call.State.Reconnecting,\n [Constants.CallEventReconnected]: Call.State.Connected,\n [Constants.CallEventRinging]: Call.State.Ringing,\n};\n\n/**\n * Array of valid call scores.\n *\n * @internal\n */\nconst validScores = [\n Call.Score.NotReported,\n Call.Score.One,\n Call.Score.Two,\n Call.Score.Three,\n Call.Score.Four,\n Call.Score.Five,\n];\n\n/**\n * Mapping of the {@link (Call:namespace).Score | Call score} enum to\n * cross-platform common constants.\n *\n * @internal\n */\nconst scoreMap: Record<Call.Score, NativeCallFeedbackScore> = {\n [Call.Score.NotReported]: Constants.CallFeedbackScoreNotReported,\n [Call.Score.One]: Constants.CallFeedbackScoreOne,\n [Call.Score.Two]: Constants.CallFeedbackScoreTwo,\n [Call.Score.Three]: Constants.CallFeedbackScoreThree,\n [Call.Score.Four]: Constants.CallFeedbackScoreFour,\n [Call.Score.Five]: Constants.CallFeedbackScoreFive,\n};\n\n/**\n * Mapping of the {@link (Call:namespace).Issue | Call issue} enum to\n * cross-platform common constants.\n *\n * @internal\n */\nconst issueMap: Record<Call.Issue, NativeCallFeedbackIssue> = {\n [Call.Issue.AudioLatency]: Constants.CallFeedbackIssueAudioLatency,\n [Call.Issue.ChoppyAudio]: Constants.CallFeedbackIssueChoppyAudio,\n [Call.Issue.DroppedCall]: Constants.CallFeedbackIssueDroppedCall,\n [Call.Issue.Echo]: Constants.CallFeedbackIssueEcho,\n [Call.Issue.NoisyCall]: Constants.CallFeedbackIssueNoisyCall,\n [Call.Issue.NotReported]: Constants.CallFeedbackIssueNotReported,\n [Call.Issue.OneWayAudio]: Constants.CallFeedbackIssueOneWayAudio,\n};\n"]}
1
+ {"version":3,"sources":["Call.tsx"],"names":["Call","EventEmitter","constructor","uuid","customParameters","from","sid","state","to","isMuted","isOnHold","initialConnectedTimestamp","nativeCallEvent","type","call","callInfo","handler","_nativeEventHandler","Error","_uuid","Constants","CallEventConnected","_update","emit","Event","Connected","CallEventConnectFailure","event","message","code","error","ConnectFailure","CallEventDisconnected","Disconnected","CallEventReconnecting","Reconnecting","CallEventReconnected","Reconnected","CallEventRinging","Ringing","CallEventHold","Hold","_isOnHold","CallEventQualityWarningsChanged","currentWarnings","CallEventCurrentWarnings","previousWarnings","CallEventPreviousWarnings","QualityWarningsChanged","CallEventMessageReceived","callMessage","callMessageInfo","incomingCallMessage","IncomingCallMessage","MessageReceived","_customParameters","_from","_sid","_state","State","Connecting","_to","_isMuted","_initialConnectedTimestamp","Date","undefined","_handleConnectedEvent","_handleConnectFailureEvent","_handleDisconnectedEvent","_handleReconnectedEvent","_handleReconnectingEvent","_handleRingingEvent","_handleHoldEvent","_handleQualityWarningsChangedEvent","_handleMessageReceivedEvent","NativeEventEmitter","addListener","ScopeCall","_handleNativeEvent","newState","eventTypeStateMap","disconnect","NativeModule","call_disconnect","getCustomParameters","getFrom","getInitialConnectedTimestamp","getSid","getState","getStats","stats","call_getStats","getTo","hold","call_hold","mute","call_mute","sendDigits","digits","call_sendDigits","sendMessage","content","contentType","messageType","voiceEventSid","call_sendMessage","outgoingCallMessage","OutgoingCallMessage","postFeedback","score","issue","validScores","includes","InvalidArgumentError","Object","values","Issue","nativeScore","scoreMap","nativeIssue","issueMap","call_postFeedback","CallStateConnected","CallStateConnecting","CallStateDisconnected","CallStateReconnecting","CallStateRinging","QualityWarning","Score","Listener","NotReported","One","Two","Three","Four","Five","CallFeedbackScoreNotReported","CallFeedbackScoreOne","CallFeedbackScoreTwo","CallFeedbackScoreThree","CallFeedbackScoreFour","CallFeedbackScoreFive","AudioLatency","CallFeedbackIssueAudioLatency","ChoppyAudio","CallFeedbackIssueChoppyAudio","DroppedCall","CallFeedbackIssueDroppedCall","Echo","CallFeedbackIssueEcho","NoisyCall","CallFeedbackIssueNoisyCall","CallFeedbackIssueNotReported","OneWayAudio","CallFeedbackIssueOneWayAudio"],"mappings":"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;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEV,EAAAA,OAAO,GAAwB;AAC7B,WAAO,KAAKqD,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEpD,EAAAA,QAAQ,GAAwB;AAC9B,WAAO,KAAKgC,SAAZ;AACD;AAED;AACF;AACA;AACA;AACA;;;AACE0C,EAAAA,mBAAmB,GAAqB;AACtC,WAAO,KAAK7B,iBAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACE8B,EAAAA,OAAO,GAAuB;AAC5B,WAAO,KAAK7B,KAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE8B,EAAAA,4BAA4B,GAAqB;AAC/C,WAAO,KAAKvB,0BAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEwB,EAAAA,MAAM,GAAuB;AAC3B,WAAO,KAAK9B,IAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE+B,EAAAA,QAAQ,GAAe;AACrB,WAAO,KAAK9B,MAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACgB,QAAR+B,QAAQ,GAAkC;AAC9C,UAAMC,KAAK,GAAG,MAAM,wCAClBR,qBAAaS,aAAb,CAA2B,KAAKxE,KAAhC,CADkB,CAApB;AAGA,WAAOuE,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEE,EAAAA,KAAK,GAAuB;AAC1B,WAAO,KAAK/B,GAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACY,QAAJgC,IAAI,CAACA,IAAD,EAAkC;AAC1C,SAAKnD,SAAL,GAAiB,MAAM,wCACrBwC,qBAAaY,SAAb,CAAuB,KAAK3E,KAA5B,EAAmC0E,IAAnC,CADqB,CAAvB;AAGA,WAAO,KAAKnD,SAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACY,QAAJqD,IAAI,CAACA,IAAD,EAAkC;AAC1C,SAAKjC,QAAL,GAAgB,MAAM,wCACpBoB,qBAAac,SAAb,CAAuB,KAAK7E,KAA5B,EAAmC4E,IAAnC,CADoB,CAAtB;AAGA,WAAO,KAAKjC,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACkB,QAAVmC,UAAU,CAACC,MAAD,EAAgC;AAC9C,UAAM,wCAAoBhB,qBAAaiB,eAAb,CAA6B,KAAKhF,KAAlC,EAAyC+E,MAAzC,CAApB,CAAN;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACmB,QAAXE,WAAW,CAACxE,OAAD,EAAqD;AACpE,UAAM;AAAEyE,MAAAA,OAAF;AAAWC,MAAAA,WAAX;AAAwBC,MAAAA;AAAxB,QAAwC,sCAAoB3E,OAApB,CAA9C;AAEA,UAAM4E,aAAa,GAAG,MAAM,wCAC1BtB,qBAAauB,gBAAb,CACE,KAAKtF,KADP,EAEEkF,OAFF,EAGEC,WAHF,EAIEC,WAJF,CAD0B,CAA5B;AASA,UAAMG,mBAAmB,GAAG,IAAIC,wCAAJ,CAAwB;AAClDN,MAAAA,OADkD;AAElDC,MAAAA,WAFkD;AAGlDC,MAAAA,WAHkD;AAIlDC,MAAAA;AAJkD,KAAxB,CAA5B;AAOA,WAAOE,mBAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACoB,QAAZE,YAAY,CAACC,KAAD,EAAoBC,KAApB,EAAsD;AACtE,QAAI,CAACC,WAAW,CAACC,QAAZ,CAAqBH,KAArB,CAAL,EAAkC;AAChC,YAAM,IAAII,0CAAJ,CACJ,uEADI,CAAN;AAGD;;AAED,QAAI,CAACC,MAAM,CAACC,MAAP,CAAcnH,IAAI,CAACoH,KAAnB,EAA0BJ,QAA1B,CAAmCF,KAAnC,CAAL,EAAgD;AAC9C,YAAM,IAAIG,0CAAJ,CACJ,uEADI,CAAN;AAGD;;AAED,UAAMI,WAAW,GAAGC,QAAQ,CAACT,KAAD,CAA5B;AACA,UAAMU,WAAW,GAAGC,QAAQ,CAACV,KAAD,CAA5B;AAEA,UAAM,wCACJ5B,qBAAauC,iBAAb,CAA+B,KAAKtG,KAApC,EAA2CkG,WAA3C,EAAwDE,WAAxD,CADI,CAAN;AAGD;;AA7nBoC;AAgoBvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;MAKc/F,K;;aAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;KAAAA,K,KAAAA,K;;;MA2DAmC,K;;aAAAA,K;AAAAA,IAAAA,K,CAAAA,K,gBAYIvC,qBAAUsG,kB;AAZd/D,IAAAA,K,CAAAA,K,iBAmBKvC,qBAAUuG,mB;AAnBfhE,IAAAA,K,CAAAA,K,mBAgCOvC,qBAAUwG,qB;AAhCjBjE,IAAAA,K,CAAAA,K,mBA2COvC,qBAAUyG,qB;AA3CjBlE,IAAAA,K,CAAAA,K,cAoDEvC,qBAAU0G,gB;KApDZnE,K,KAAAA,K;;;MA0DAoE,c;;aAAAA,c;AAAAA,IAAAA,c;AAAAA,IAAAA,c;AAAAA,IAAAA,c;AAAAA,IAAAA,c;AAAAA,IAAAA,c;KAAAA,c,KAAAA,c;;;MA2BAC,K;;aAAAA,K;AAAAA,IAAAA,K,CAAAA,K;AAAAA,IAAAA,K,CAAAA,K;AAAAA,IAAAA,K,CAAAA,K;AAAAA,IAAAA,K,CAAAA,K;AAAAA,IAAAA,K,CAAAA,K;AAAAA,IAAAA,K,CAAAA,K;KAAAA,K,KAAAA,K;;;MA8BAZ,K;;aAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;AAAAA,IAAAA,K;KAAAA,K,KAAAA,K;;;;;4BAmCKa,Q,KAAAA,Q,SAAAA,Q,WAAAA,Q;GArNFjI,I,oBAAAA,I;AAqUjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMgF,iBAAmE,GAAG;AAC1E,GAAC5D,qBAAUC,kBAAX,GAAgCrB,IAAI,CAAC2D,KAAL,CAAWlC,SAD+B;AAE1E,GAACL,qBAAUM,uBAAX,GAAqC1B,IAAI,CAAC2D,KAAL,CAAW1B,YAF0B;AAG1E,GAACb,qBAAUY,qBAAX,GAAmChC,IAAI,CAAC2D,KAAL,CAAW1B,YAH4B;AAI1E,GAACb,qBAAUc,qBAAX,GAAmClC,IAAI,CAAC2D,KAAL,CAAWxB,YAJ4B;AAK1E,GAACf,qBAAUgB,oBAAX,GAAkCpC,IAAI,CAAC2D,KAAL,CAAWlC,SAL6B;AAM1E,GAACL,qBAAUkB,gBAAX,GAA8BtC,IAAI,CAAC2D,KAAL,CAAWpB;AANiC,CAA5E;AASA;AACA;AACA;AACA;AACA;;AACA,MAAMwE,WAAW,GAAG,CAClB/G,IAAI,CAACgI,KAAL,CAAWE,WADO,EAElBlI,IAAI,CAACgI,KAAL,CAAWG,GAFO,EAGlBnI,IAAI,CAACgI,KAAL,CAAWI,GAHO,EAIlBpI,IAAI,CAACgI,KAAL,CAAWK,KAJO,EAKlBrI,IAAI,CAACgI,KAAL,CAAWM,IALO,EAMlBtI,IAAI,CAACgI,KAAL,CAAWO,IANO,CAApB;AASA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMjB,QAAqD,GAAG;AAC5D,GAACtH,IAAI,CAACgI,KAAL,CAAWE,WAAZ,GAA0B9G,qBAAUoH,4BADwB;AAE5D,GAACxI,IAAI,CAACgI,KAAL,CAAWG,GAAZ,GAAkB/G,qBAAUqH,oBAFgC;AAG5D,GAACzI,IAAI,CAACgI,KAAL,CAAWI,GAAZ,GAAkBhH,qBAAUsH,oBAHgC;AAI5D,GAAC1I,IAAI,CAACgI,KAAL,CAAWK,KAAZ,GAAoBjH,qBAAUuH,sBAJ8B;AAK5D,GAAC3I,IAAI,CAACgI,KAAL,CAAWM,IAAZ,GAAmBlH,qBAAUwH,qBAL+B;AAM5D,GAAC5I,IAAI,CAACgI,KAAL,CAAWO,IAAZ,GAAmBnH,qBAAUyH;AAN+B,CAA9D;AASA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMrB,QAAqD,GAAG;AAC5D,GAACxH,IAAI,CAACoH,KAAL,CAAW0B,YAAZ,GAA2B1H,qBAAU2H,6BADuB;AAE5D,GAAC/I,IAAI,CAACoH,KAAL,CAAW4B,WAAZ,GAA0B5H,qBAAU6H,4BAFwB;AAG5D,GAACjJ,IAAI,CAACoH,KAAL,CAAW8B,WAAZ,GAA0B9H,qBAAU+H,4BAHwB;AAI5D,GAACnJ,IAAI,CAACoH,KAAL,CAAWgC,IAAZ,GAAmBhI,qBAAUiI,qBAJ+B;AAK5D,GAACrJ,IAAI,CAACoH,KAAL,CAAWkC,SAAZ,GAAwBlI,qBAAUmI,0BAL0B;AAM5D,GAACvJ,IAAI,CAACoH,KAAL,CAAWc,WAAZ,GAA0B9G,qBAAUoI,4BANwB;AAO5D,GAACxJ,IAAI,CAACoH,KAAL,CAAWqC,WAAZ,GAA0BrI,qBAAUsI;AAPwB,CAA9D","sourcesContent":["/**\n * Copyright © 2022 Twilio, Inc. All rights reserved. Licensed under the Twilio\n * license.\n *\n * See LICENSE in the project root for license information.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport type { RTCStats } from './';\nimport { NativeModule, NativeEventEmitter } from './common';\nimport { Constants } from './constants';\nimport type {\n NativeCallEvent,\n NativeCallEventType,\n NativeCallInfo,\n NativeCallFeedbackIssue,\n NativeCallFeedbackScore,\n NativeCallConnectFailureEvent,\n NativeCallDisconnectedEvent,\n NativeCallReconnectingEvent,\n NativeCallQualityWarningsEvent,\n NativeCallMessageReceivedEvent,\n} from './type/Call';\nimport type { CustomParameters, Uuid } from './type/common';\nimport type { TwilioError } from './error/TwilioError';\nimport { InvalidArgumentError } from './error/InvalidArgumentError';\nimport { constructTwilioError } from './error/utility';\nimport { CallMessage, validateCallMessage } from './CallMessage/CallMessage';\nimport { IncomingCallMessage } from './CallMessage/IncomingCallMessage';\nimport { OutgoingCallMessage } from './CallMessage/OutgoingCallMessage';\nimport { settleNativePromise } from './utility/nativePromise';\n\n/**\n * Defines strict typings for all events emitted by {@link (Call:class)\n * | Call objects}.\n *\n * @remarks\n * Note that the `on` function is an alias for the `addListener` function.\n * They share identical functionality and either may be used interchangeably.\n *\n * - See also the {@link (Call:class) | Call class}.\n * - See also the {@link (Call:namespace) | Call namespace}.\n *\n * @public\n */\nexport declare interface Call {\n /**\n * ------------\n * Emit Typings\n * ------------\n */\n\n /** @internal */\n emit(connectedEvent: Call.Event.Connected): boolean;\n\n /** @internal */\n emit(\n connectFailureEvent: Call.Event.ConnectFailure,\n error: TwilioError\n ): boolean;\n\n /** @internal */\n emit(reconnectingEvent: Call.Event.Reconnecting, error: TwilioError): boolean;\n\n /** @internal */\n emit(reconnectedEvent: Call.Event.Reconnected): boolean;\n\n /** @internal */\n emit(\n disconnectedEvent: Call.Event.Disconnected,\n error?: TwilioError\n ): boolean;\n\n /** @internal */\n emit(ringingEvent: Call.Event.Ringing): boolean;\n\n /** @internal */\n emit(\n qualityWarningsChangedEvent: Call.Event.QualityWarningsChanged,\n currentQualityWarnings: Call.QualityWarning[],\n previousQualityWarnings: Call.QualityWarning[]\n ): boolean;\n\n /** @internal */\n emit(holdEvent: Call.Event.Hold, isOnHold: boolean): boolean;\n\n /** @internal */\n emit(\n messageReceivedEvent: Call.Event.MessageReceived,\n incomingCallMessage: IncomingCallMessage\n ): boolean;\n\n /**\n * ----------------\n * Listener Typings\n * ----------------\n */\n\n /**\n * Connected event. Raised when the call has successfully connected.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Connected, () => {\n * // call has been connected\n * });\n * ```\n *\n * @param connectedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n connectedEvent: Call.Event.Connected,\n listener: Call.Listener.Connected\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:1)}\n */\n on(\n connectedEvent: Call.Event.Connected,\n listener: Call.Listener.Connected\n ): this;\n\n /**\n * Connect failure event. Raised when the call has failed to connect.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.ConnectFailure, (error) => {\n * // call was unable to connect, handle error\n * });\n * ```\n *\n * @param connectFailureEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n connectFailureEvent: Call.Event.ConnectFailure,\n listener: Call.Listener.ConnectFailure\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:2)}\n */\n on(\n connectFailureEvent: Call.Event.ConnectFailure,\n listener: Call.Listener.ConnectFailure\n ): this;\n\n /**\n * Reconnecting event. Raised when the call is reconnecting.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Reconnecting, (error) => {\n * // call is attempting to reconnect, handle error\n * });\n * ```\n *\n * @param reconnectingEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n reconnectingEvent: Call.Event.Reconnecting,\n listener: Call.Listener.Reconnecting\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:3)}\n */\n on(\n reconnectingEvent: Call.Event.Reconnecting,\n listener: Call.Listener.Reconnecting\n ): this;\n\n /**\n * Reconnected event. Raised when the call has recovered and reconnected.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Reconnected, () => {\n * // call has reconnected\n * });\n * ```\n *\n * @param reconnectedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n reconnectedEvent: Call.Event.Reconnected,\n listener: Call.Listener.Reconnected\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:4)}\n */\n on(\n reconnectedEvent: Call.Event.Reconnected,\n listener: Call.Listener.Reconnected\n ): this;\n\n /**\n * Disconnected event. Raised when the call has disconnected.\n *\n * @remarks\n * This event can occur in \"naturally\" disconnected calls and calls\n * disconnected from issues such as network problems. If the SDK has detected\n * an issue that has caused the call to disconnect, then the error parameter\n * will be defined, otherwise it will be undefined.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Disconnected, (error) => {\n * // call has disconnected\n * // if a natural disconnect occurred, then error is `undefined`\n * // if an unnatural disconnect occurred, then error is defined\n * });\n * ```\n *\n * @param disconnectedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n disconnectedEvent: Call.Event.Disconnected,\n listener: Call.Listener.Disconnected\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:5)}\n */\n on(\n disconnectedEvent: Call.Event.Disconnected,\n listener: Call.Listener.Disconnected\n ): this;\n\n /**\n * Ringing event. Raised when the call has begun to ring.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Ringing, () => {\n * // call is ringing\n * });\n * ```\n *\n * @param ringingEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n ringingEvent: Call.Event.Ringing,\n listener: Call.Listener.Ringing\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:6)}\n */\n on(ringingEvent: Call.Event.Ringing, listener: Call.Listener.Ringing): this;\n\n /**\n * Hold event. Raised when the call hold state changes, for example when the\n * user swaps between calls using the native CallKit UI on iOS.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.Hold, (isOnHold) => {\n * // call hold state has changed\n * });\n * ```\n *\n * @param holdEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(holdEvent: Call.Event.Hold, listener: Call.Listener.Hold): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:9)}\n */\n on(holdEvent: Call.Event.Hold, listener: Call.Listener.Hold): this;\n\n /**\n * Quality warnings changed event. Raised when a call quality warning is set\n * or unset. All \"ongoing\" call quality warnings are passed to the invoked\n * listener function.\n *\n * @example\n * ```typescript\n * call.addListener(\n * Call.Event.QualityWarningsChanged,\n * (\n * currentWarnings: Call.QualityWarning[],\n * previousWarnings: Call.QualityWarning[]\n * ) => {\n * // call quality warnings have changed\n * }\n * );\n * ```\n *\n * @param qualityWarningsChangedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(\n qualityWarningsChangedEvent: Call.Event.QualityWarningsChanged,\n listener: Call.Listener.QualityWarningsChanged\n ): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:7)}\n */\n on(\n qualityWarningsChangedEvent: Call.Event.QualityWarningsChanged,\n listener: Call.Listener.QualityWarningsChanged\n ): this;\n\n /**\n * MessageReceived event. Raised when a {@link IncomingCallMessage} is\n * received.\n *\n * @example\n * ```typescript\n * call.addListener(Call.Event.MessageReceived, (message) => {\n * // callMessage received\n * })\n * ```\n *\n * @param messageReceivedEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The callMessage object\n */\n addListener(\n messageReceivedEvent: Call.Event.MessageReceived,\n listener: Call.Listener.MessageReceived\n ): this;\n /** {@inheritDoc (Call:interface).(addListener:8)} */\n on(\n callMessageEvent: Call.Event.MessageReceived,\n listener: Call.Listener.MessageReceived\n ): this;\n\n /**\n * Generic event listener typings.\n * @param callEvent - The raised event string.\n * @param listener - A listener function that will be invoked when the event\n * is raised.\n * @returns - The call object.\n */\n addListener(callEvent: Call.Event, listener: Call.Listener.Generic): this;\n /**\n * {@inheritDoc (Call:interface).(addListener:9)}\n */\n on(callEvent: Call.Event, listener: Call.Listener.Generic): this;\n}\n\n/**\n * Provides access to information about a call, including the call parameters,\n * and exposes functionality for a call such as disconnecting, muting, and\n * holding.\n *\n * @remarks\n * Note that the call information is fetched as soon as possible from the native\n * layer, but there is no guarantee that all information is immediately\n * available. Methods such as `Call.getFrom()` or `Call.getTo()` may return\n * `undefined`.\n *\n * As call events are received from the native layer, call information will\n * propagate from the native layer to the JS layer and become available.\n * Therefore, it is good practice to read information from the call after an\n * event occurs, or as events occur.\n *\n * - See the {@link (Call:namespace).Event} enum for events emitted by `Call`\n * objects.\n * - See the {@link (Call:interface) | Call interface} for overloaded event\n * listening methods.\n * - See the {@link (Call:namespace) | Call namespace} for types and\n * enumerations used by this class.\n *\n * @public\n */\nexport class Call extends EventEmitter {\n /**\n * The `Uuid` of this call. Used to identify calls between the JS and native\n * layer so we can associate events and native functionality between the\n * layers.\n */\n private _uuid: Uuid;\n /**\n * Call custom parameters.\n */\n private _customParameters: CustomParameters;\n /**\n * Call `from` parameter.\n */\n private _from?: string;\n /**\n * Initial `connected` timestamp. Milliseconds since epoch.\n */\n private _initialConnectedTimestamp?: Date;\n /**\n * A boolean representing if the call is currently muted.\n */\n private _isMuted?: boolean;\n /**\n * A boolean representing if the call is currently on hold.\n */\n private _isOnHold?: boolean;\n /**\n * A string representing the SID of this call.\n */\n private _sid?: string;\n /**\n * The current state of the call.\n *\n * @remarks\n * See {@link (Call:namespace).State}.\n */\n private _state: Call.State;\n /**\n * Call `to` parameter.\n */\n private _to?: string;\n\n /**\n * Handlers for native call events. Set upon construction so we can\n * dynamically bind events to handlers.\n *\n * @privateRemarks\n * This is done by the constructor so this mapping isn't made every time the\n * {@link (Call:class)._handleNativeEvent} function is invoked.\n */\n private _nativeEventHandler: Record<\n NativeCallEventType,\n (callEvent: NativeCallEvent) => void\n >;\n\n /**\n * Constructor for the {@link (Call:class) | Call class}. This should not be\n * invoked by third-party code. All instances of the\n * {@link (Call:class) | Call class} should be made by the SDK and emitted by\n * {@link (Voice:class) | Voice objects}.\n *\n * @param nativeCallInfo - An object containing all of the data from the\n * native layer necessary to fully describe a call, as well as invoke native\n * functionality for the call.\n *\n * @internal\n */\n constructor({\n uuid,\n customParameters,\n from,\n sid,\n state,\n to,\n isMuted,\n isOnHold,\n initialConnectedTimestamp,\n }: NativeCallInfo) {\n super();\n\n this._uuid = uuid;\n this._customParameters = { ...customParameters };\n this._from = from;\n this._sid = sid;\n this._state = typeof state === 'string' ? state : Call.State.Connecting;\n this._to = to;\n this._isMuted = isMuted;\n this._isOnHold = isOnHold;\n this._initialConnectedTimestamp = initialConnectedTimestamp\n ? new Date(initialConnectedTimestamp)\n : undefined;\n\n this._nativeEventHandler = {\n /**\n * Call State\n */\n [Constants.CallEventConnected]: this._handleConnectedEvent,\n [Constants.CallEventConnectFailure]: this._handleConnectFailureEvent,\n [Constants.CallEventDisconnected]: this._handleDisconnectedEvent,\n [Constants.CallEventReconnected]: this._handleReconnectedEvent,\n [Constants.CallEventReconnecting]: this._handleReconnectingEvent,\n [Constants.CallEventRinging]: this._handleRingingEvent,\n [Constants.CallEventHold]: this._handleHoldEvent,\n\n /**\n * Call Quality\n */\n [Constants.CallEventQualityWarningsChanged]:\n this._handleQualityWarningsChangedEvent,\n\n /**\n * Call Message\n */\n [Constants.CallEventMessageReceived]: this._handleMessageReceivedEvent,\n };\n\n NativeEventEmitter.addListener(\n Constants.ScopeCall,\n this._handleNativeEvent\n );\n }\n\n /**\n * This intermediate native call event handler acts as a \"gate\", only\n * executing the actual call event handler (such as `Connected`) if this call\n * object matches the `Uuid` of the call that had an event raised.\n * @param nativeCallEvent - A call event directly from the native layer.\n */\n private _handleNativeEvent = (nativeCallEvent: NativeCallEvent) => {\n const { type, call: callInfo } = nativeCallEvent;\n\n const handler = this._nativeEventHandler[type];\n if (typeof handler === 'undefined') {\n throw new Error(\n `Unknown call event type received from the native layer: \"${type}\".`\n );\n }\n\n if (callInfo.uuid === this._uuid) {\n handler(nativeCallEvent);\n }\n };\n\n /**\n * Helper function to update the state of the call when a call event occurs\n * that necessitates an update, i.e. upon a\n * {@link (Call:namespace).Event.Connected | Connected event} we want to\n * update the state of the call to also reflect the\n * {@link (Call:namespace).State.Connected | Connected state}.\n * @param nativeCallEvent - The native call event.\n */\n private _update({\n type,\n call: { from, initialConnectedTimestamp, isOnHold, isMuted, sid, to },\n }: NativeCallEvent) {\n const newState = eventTypeStateMap[type];\n if (typeof newState === 'string') {\n this._state = newState;\n }\n this._from = from;\n this._initialConnectedTimestamp = initialConnectedTimestamp\n ? new Date(initialConnectedTimestamp)\n : undefined;\n this._isOnHold = isOnHold;\n this._isMuted = isMuted;\n this._sid = sid;\n this._to = to;\n }\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Connected} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleConnectedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventConnected) {\n throw new Error(\n 'Incorrect \"call#connected\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Connected);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.ConnectFailure} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleConnectFailureEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventConnectFailure) {\n throw new Error(\n 'Incorrect \"call#connectFailure\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const event = nativeCallEvent as NativeCallConnectFailureEvent;\n const { message, code } = event.error;\n const error = constructTwilioError(message, code);\n this.emit(Call.Event.ConnectFailure, error);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Disconnected} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleDisconnectedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventDisconnected) {\n throw new Error(\n 'Incorrect \"call#disconnected\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const event = nativeCallEvent as NativeCallDisconnectedEvent;\n if (event.error) {\n const { message, code } = event.error;\n const error = constructTwilioError(message, code);\n this.emit(Call.Event.Disconnected, error);\n } else {\n this.emit(Call.Event.Disconnected);\n }\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Reconnecting} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleReconnectingEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventReconnecting) {\n throw new Error(\n 'Incorrect \"call#reconnecting\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const event = nativeCallEvent as NativeCallReconnectingEvent;\n const { message, code } = event.error;\n const error = constructTwilioError(message, code);\n this.emit(Call.Event.Reconnecting, error);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Reconnected} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleReconnectedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventReconnected) {\n throw new Error(\n 'Incorrect \"call#reconnected\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Reconnected);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.Ringing} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleRingingEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventRinging) {\n throw new Error(\n 'Incorrect \"call#ringing\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Ringing);\n };\n\n /**\n * Handler for the {@link (Call:namespace).Event.Hold} event.\n * Raised when the call hold state changes via the native CallKit UI.\n * @param nativeCallEvent - The native call event.\n */\n private _handleHoldEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventHold) {\n throw new Error(\n 'Incorrect \"call#hold\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n this.emit(Call.Event.Hold, this._isOnHold ?? false);\n };\n\n /**\n * Handler for the the {@link (Call:namespace).Event.QualityWarningsChanged}\n * event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleQualityWarningsChangedEvent = (\n nativeCallEvent: NativeCallEvent\n ) => {\n if (nativeCallEvent.type !== Constants.CallEventQualityWarningsChanged) {\n throw new Error(\n 'Incorrect \"call#qualityWarnings\" handler called for type ' +\n `\"${nativeCallEvent.type}\".`\n );\n }\n\n this._update(nativeCallEvent);\n\n const event = nativeCallEvent as NativeCallQualityWarningsEvent;\n const currentWarnings = event[Constants.CallEventCurrentWarnings];\n const previousWarnings = event[Constants.CallEventPreviousWarnings];\n\n this.emit(\n Call.Event.QualityWarningsChanged,\n currentWarnings as Call.QualityWarning[],\n previousWarnings as Call.QualityWarning[]\n );\n };\n\n /**\n * Handler for the {@link (Call:namespace).Event.MessageReceived} event.\n * @param nativeCallEvent - The native call event.\n */\n private _handleMessageReceivedEvent = (nativeCallEvent: NativeCallEvent) => {\n if (nativeCallEvent.type !== Constants.CallEventMessageReceived) {\n throw new Error(\n 'Incorrect \"call#Received\" handler called for type' +\n `\"${nativeCallEvent.type}`\n );\n }\n\n this._update(nativeCallEvent);\n\n const event = nativeCallEvent as NativeCallMessageReceivedEvent;\n const { callMessage: callMessageInfo } = event;\n\n const incomingCallMessage = new IncomingCallMessage(callMessageInfo);\n\n this.emit(Call.Event.MessageReceived, incomingCallMessage);\n };\n\n /**\n * Disconnect this side of the call.\n * @returns\n * A `Promise` that\n * - Resolves when the call has disconnected.\n * - Rejects if the native layer cannot disconnect the call.\n */\n async disconnect(): Promise<void> {\n await settleNativePromise(NativeModule.call_disconnect(this._uuid));\n }\n\n /**\n * Get the mute status of this side of the call.\n * @returns\n * - A boolean representing the muted status of the call.\n * - `undefined` if the call state has not yet been received from the native\n * layer.\n */\n isMuted(): boolean | undefined {\n return this._isMuted;\n }\n\n /**\n * Get the hold status of this side of the call.\n * @returns\n * - A boolean representing the hold status of the call.\n * - `undefined` if the call state has not yet been received from the native\n * layer.\n */\n isOnHold(): boolean | undefined {\n return this._isOnHold;\n }\n\n /**\n * Return a `Record` of custom parameters given to this call.\n * @returns\n * - A `Record` of custom parameters.\n */\n getCustomParameters(): CustomParameters {\n return this._customParameters;\n }\n\n /**\n * Get the value of the `from` parameter given to this call.\n * @returns\n * - A `String` representing the `from` parameter.\n * - `undefined` if the call information has not yet been received from the\n * native layer.\n */\n getFrom(): string | undefined {\n return this._from;\n }\n\n /**\n * Get the timestamp (milliseconds since epoch) of the call connected event.\n * @returns\n * - A `number` representing the timestamp.\n * - `undefined` if the call has not yet connected.\n */\n getInitialConnectedTimestamp(): Date | undefined {\n return this._initialConnectedTimestamp;\n }\n\n /**\n * Get the call `SID`.\n * @returns\n * - A `String` representing the `SID` of the call.\n * - `undefined` if the call information has not yet been received from the\n * native layer.\n */\n getSid(): string | undefined {\n return this._sid;\n }\n\n /**\n * Get the state of the call object, such as {@link (Call:namespace).State.Connected} or\n * {@link (Call:namespace).State.Disconnected}.\n * @returns\n * - A {@link (Call:namespace).State}.\n */\n getState(): Call.State {\n return this._state;\n }\n\n /**\n * Gets the `PeerConnection` `WebRTC` stats for the ongoing call.\n * @returns\n * A `Promise` that\n * - Resolves with a {@link RTCStats.StatsReport} object representing the\n * `WebRTC` `PeerConnection` stats of a call.\n * - Rejects when a {@link RTCStats.StatsReport} cannot be generated for a\n * call.\n */\n async getStats(): Promise<RTCStats.StatsReport> {\n const stats = await settleNativePromise(\n NativeModule.call_getStats(this._uuid)\n );\n return stats;\n }\n\n /**\n * Get the value of the `to` parameter given to this call.\n * @returns\n * - A `String` representing the `to` parameter.\n * - `undefined` if the call information has not yet been received from the\n * native layer.\n */\n getTo(): string | undefined {\n return this._to;\n }\n\n /**\n * Put this end of the call on hold or not on hold.\n *\n * @example\n * To put a call on hold\n * ```typescript\n * call.hold(true);\n * ```\n * @example\n * To take a call off hold\n * ```typescript\n * call.hold(false);\n * ```\n *\n * @param hold - A `boolean` representing whether or not to put this end of\n * the call on hold.\n *\n * @returns\n * A `Promise` that\n * - Resolves with the hold status when the call is put on hold or not on\n * hold.\n * - Rejects when the call is not able to be put on hold or not on hold.\n */\n async hold(hold: boolean): Promise<boolean> {\n this._isOnHold = await settleNativePromise(\n NativeModule.call_hold(this._uuid, hold)\n );\n return this._isOnHold;\n }\n\n /**\n * Mute or unmute this end of the call.\n *\n * @example\n * To mute a call\n * ```typescript\n * call.mute(true);\n * ```\n *\n * @example\n * To unmute a call\n * ```typescript\n * call.mute(false);\n * ```\n *\n * @param mute - A `boolean` representing whether or not to mute this end of\n * the call.\n *\n * @returns\n * A `Promise` that\n * - Resolves with the muted status of the call when the call is muted or\n * unmuted.\n * - Rejects when the call is not able to be muted or unmuted.\n */\n async mute(mute: boolean): Promise<boolean> {\n this._isMuted = await settleNativePromise(\n NativeModule.call_mute(this._uuid, mute)\n );\n return this._isMuted;\n }\n\n /**\n * Send DTMF digits.\n *\n * @example\n * To send the `0` dialtone:\n * ```typescript\n * call.sendDigits('0');\n * ```\n *\n * @example\n * To send the `0` and then `1` dialtone:\n * ```typescript\n * call.sendDigits('01');\n * ```\n *\n * @param digits - A sequence of DTMF digits in a string.\n *\n * @returns\n * A `Promise` that\n * - Resolves when the DTMF digits have been sent.\n * - Rejects when DTMF tones are not able to be sent.\n */\n async sendDigits(digits: string): Promise<void> {\n await settleNativePromise(NativeModule.call_sendDigits(this._uuid, digits));\n }\n\n /**\n * Send a CallMessage.\n *\n * @example\n * To send a user-defined-message\n * ```typescript\n * const outgoingCallMessage: OutgoingCallMessage = await call.sendMessage({\n * content: { key1: 'This is a messsage from the parent call' },\n * contentType: 'application/json',\n * messageType: 'user-defined-message'\n * });\n *\n * outgoingCallMessage.addListener(OutgoingCallMessage.Event.Failure, (error) => {\n * // outgoingCallMessage failed, handle error\n * });\n *\n * outgoingCallMessage.addListener(OutgoingCallMessage.Event.Sent, () => {\n * // outgoingCallMessage sent\n * });\n * ```\n *\n * @param message - The call message to send.\n *\n * @returns\n * A `Promise` that\n * - Resolves with the OutgoingCallMessage object.\n * - Rejects when the message is unable to be sent.\n */\n async sendMessage(message: CallMessage): Promise<OutgoingCallMessage> {\n const { content, contentType, messageType } = validateCallMessage(message);\n\n const voiceEventSid = await settleNativePromise(\n NativeModule.call_sendMessage(\n this._uuid,\n content,\n contentType,\n messageType\n )\n );\n\n const outgoingCallMessage = new OutgoingCallMessage({\n content,\n contentType,\n messageType,\n voiceEventSid,\n });\n\n return outgoingCallMessage;\n }\n\n /**\n * Post feedback about a call.\n *\n * @example\n * To report that a call had very significant audio latency:\n * ```typescript\n * call.postFeedback(Call.Score.Five, Call.Issue.AudioLatency);\n * ```\n *\n * @param score - A score representing the serverity of the issue being\n * reported.\n * @param issue - The issue being reported.\n * @returns\n * A `Promise` that\n * - Resolves when the feedback has been posted.\n * - Rejects when the feedback is unable to be sent.\n */\n async postFeedback(score: Call.Score, issue: Call.Issue): Promise<void> {\n if (!validScores.includes(score)) {\n throw new InvalidArgumentError(\n '\"score\" parameter invalid. Must be a member of the `Call.Score` enum.'\n );\n }\n\n if (!Object.values(Call.Issue).includes(issue)) {\n throw new InvalidArgumentError(\n '\"issue\" parameter invalid. Must be a member of the `Call.Issue` enum.'\n );\n }\n\n const nativeScore = scoreMap[score];\n const nativeIssue = issueMap[issue];\n\n await settleNativePromise(\n NativeModule.call_postFeedback(this._uuid, nativeScore, nativeIssue)\n );\n }\n}\n\n/**\n * Namespace for enumerations and types used by\n * {@link (Call:class) | Call objects}.\n *\n * @remarks\n * - See also the {@link (Call:class) | Call class}.\n * - See also the {@link (Call:interface) | Call interface}.\n *\n * @public\n */\nexport namespace Call {\n /**\n * Enumeration of all event strings emitted by {@link (Call:class)} objects.\n */\n export enum Event {\n /**\n * Event string for the `Connected` event.\n * See {@link (Call:interface).(addListener:1)}.\n */\n 'Connected' = 'connected',\n\n /**\n * Event string for the `ConnectedFailure` event.\n * See {@link (Call:interface).(addListener:2)}.\n */\n 'ConnectFailure' = 'connectFailure',\n\n /**\n * Event string for the `Reconnecting` event.\n * See {@link (Call:interface).(addListener:3)}.\n */\n 'Reconnecting' = 'reconnecting',\n\n /**\n * Event string for the `Reconnected` event.\n * See {@link (Call:interface).(addListener:4)}.\n */\n 'Reconnected' = 'reconnected',\n\n /**\n * Event string for the `Disconnected` event.\n * See {@link (Call:interface).(addListener:5)}.\n */\n 'Disconnected' = 'disconnected',\n\n /**\n * Event string for the `Ringing` event.\n * See {@link (Call:interface).(addListener:6)}.\n */\n 'Ringing' = 'ringing',\n\n /**\n * Event string for the `Hold` event.\n * See {@link (Call:interface).(addListener:9)}.\n */\n 'Hold' = 'hold',\n\n /**\n * Event string for the `QualityWarningsChanged` event.\n * See {@link (Call:interface).(addListener:7)}.\n */\n 'QualityWarningsChanged' = 'qualityWarningsChanged',\n\n /**\n * Event string for the `MessageReceived` event.\n * See {@link (Call:interface).(addListener:8)}\n */\n 'MessageReceived' = 'messageReceived',\n }\n\n /**\n * An enumeration of all possible {@link (Call:class) | Call object} states.\n */\n export enum State {\n /**\n * Call `Connected` state.\n *\n * Occurs when the `Connected` and `Reconnected` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:1)}.\n *\n * See {@link (Call:interface).(addListener:4)}.\n */\n 'Connected' = Constants.CallStateConnected,\n\n /**\n * Call `Connecting` state.\n *\n * The default state of an outgoing call.\n */\n 'Connecting' = Constants.CallStateConnecting,\n\n /**\n * Call `Disconnected` state.\n *\n * Occurs when the `Disconnected` or `ConnectFailure` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:5)}.\n *\n * See {@link (Call:interface).(addListener:2)}.\n */\n 'Disconnected' = Constants.CallStateDisconnected,\n\n /**\n * Call `Reconnecting` state.\n *\n * Occurs when the `Reconnecting` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:3)}.\n */\n 'Reconnecting' = Constants.CallStateReconnecting,\n\n /**\n * Call `Ringing` state. Occurs when the `Ringing` event is raised.\n *\n * @remarks\n *\n * See {@link (Call:interface).(addListener:6)}.\n */\n 'Ringing' = Constants.CallStateRinging,\n }\n\n /**\n * An enumeration of all call quality-warning types.\n */\n export enum QualityWarning {\n /**\n * Raised when the call detects constant audio input, such as silence.\n */\n 'ConstantAudioInputLevel' = 'constant-audio-input-level',\n /**\n * Raised when the network encounters high jitter.\n */\n 'HighJitter' = 'high-jitter',\n /**\n * Raised when the network encounters high packet loss.\n */\n 'HighPacketLoss' = 'high-packet-loss',\n /**\n * Raised when the network encounters high packet round-trip-time.\n */\n 'HighRtt' = 'high-rtt',\n /**\n * Raised when the call detects a low mean-opinion-score or MOS.\n */\n 'LowMos' = 'low-mos',\n }\n\n /**\n * An enumeration of all scores that could be used to rate the experience of\n * a call or issues encountered during the call.\n */\n export enum Score {\n /**\n * An issue was not encountered or there is no desire to report said issue.\n */\n 'NotReported' = 0,\n /**\n * An issue had severity approximately 1/5.\n */\n 'One' = 1,\n /**\n * An issue had severity approximately 2/5.\n */\n 'Two' = 2,\n /**\n * An issue had severity approximately 3/5.\n */\n 'Three' = 3,\n /**\n * An issue had severity approximately 4/5.\n */\n 'Four' = 4,\n /**\n * An issue had severity approximately 5/5.\n */\n 'Five' = 5,\n }\n\n /**\n * An enumeration of call issues that can be reported.\n */\n export enum Issue {\n /**\n * No issue is reported.\n */\n 'NotReported' = 'not-reported',\n /**\n * The call was dropped unexpectedly.\n */\n 'DroppedCall' = 'dropped-call',\n /**\n * The call encountered significant audio latency.\n */\n 'AudioLatency' = 'audio-latency',\n /**\n * One party of the call could not hear the other callee.\n */\n 'OneWayAudio' = 'one-way-audio',\n /**\n * Call audio was choppy.\n */\n 'ChoppyAudio' = 'choppy-audio',\n /**\n * Call audio had significant noise.\n */\n 'NoisyCall' = 'noisy-call',\n /**\n * Call audio had significant echo.\n */\n 'Echo' = 'echo',\n }\n\n /**\n * Listener types for all events emitted by a\n * {@link (Call:class) | Call object.}\n */\n export namespace Listener {\n /**\n * Connected event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Connected}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:1)}.\n */\n export type Connected = () => void;\n\n /**\n * Connect failure event listener. This should be the function signature of\n * any event listener bound to the\n * {@link (Call:namespace).Event.ConnectFailure} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:2)}.\n *\n * See {@link TwilioErrors} for all error classes.\n */\n export type ConnectFailure = (error: TwilioError) => void;\n\n /**\n * Reconnecting event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Reconnecting}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:3)}.\n *\n * See {@link TwilioErrors} for all error classes.\n */\n export type Reconnecting = (error: TwilioError) => void;\n\n /**\n * Reconnected event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Reconnected}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:4)}.\n */\n export type Reconnected = () => void;\n\n /**\n * Disconnected event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Disconnected}\n * event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:5)}.\n *\n * See {@link TwilioErrors} for all error classes.\n */\n export type Disconnected = (error?: TwilioError) => void;\n\n /**\n * Ringing event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Ringing} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:6)}.\n */\n export type Ringing = () => void;\n\n /**\n * Hold event listener. This should be the function signature of any\n * event listener bound to the {@link (Call:namespace).Event.Hold} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:9)}.\n *\n * @param isOnHold - A boolean indicating whether the call is now on hold.\n */\n export type Hold = (isOnHold: boolean) => void;\n\n /**\n * Quality warnings changed event listener. This should be the function\n * signature of any event listener bound to the\n * {@link (Call:namespace).Event.QualityWarningsChanged} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:7)}.\n */\n export type QualityWarningsChanged = (\n currentQualityWarnings: Call.QualityWarning[],\n previousQualityWarnings: Call.QualityWarning[]\n ) => void;\n\n /**\n * CallMessage received event listener. This should be the function signature of\n * any event listener bound to the {@link (Call:namespace).Event.MessageReceived} event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:8)}.\n */\n export type MessageReceived = (\n incomingCallMessage: IncomingCallMessage\n ) => void;\n\n /**\n * Generic event listener. This should be the function signature of any\n * event listener bound to any call event.\n *\n * @remarks\n * See {@link (Call:interface).(addListener:9)}.\n */\n export type Generic = (...args: any[]) => void;\n }\n}\n\n/**\n * Mapping of {@link (Call:namespace).Event | Call events} to\n * {@link (Call:namespace).State | Call states}.\n *\n * @remarks\n * Note that this mapping is not a 1:1 bijection. Not every event coming from\n * the native layer has a relevant state, and some events share a state.\n * Therefore, this `Record` needs to be marked as `Partial` and\n * undefined-checking logic is needed when using this mapping.\n *\n * @internal\n */\nconst eventTypeStateMap: Partial<Record<NativeCallEventType, Call.State>> = {\n [Constants.CallEventConnected]: Call.State.Connected,\n [Constants.CallEventConnectFailure]: Call.State.Disconnected,\n [Constants.CallEventDisconnected]: Call.State.Disconnected,\n [Constants.CallEventReconnecting]: Call.State.Reconnecting,\n [Constants.CallEventReconnected]: Call.State.Connected,\n [Constants.CallEventRinging]: Call.State.Ringing,\n};\n\n/**\n * Array of valid call scores.\n *\n * @internal\n */\nconst validScores = [\n Call.Score.NotReported,\n Call.Score.One,\n Call.Score.Two,\n Call.Score.Three,\n Call.Score.Four,\n Call.Score.Five,\n];\n\n/**\n * Mapping of the {@link (Call:namespace).Score | Call score} enum to\n * cross-platform common constants.\n *\n * @internal\n */\nconst scoreMap: Record<Call.Score, NativeCallFeedbackScore> = {\n [Call.Score.NotReported]: Constants.CallFeedbackScoreNotReported,\n [Call.Score.One]: Constants.CallFeedbackScoreOne,\n [Call.Score.Two]: Constants.CallFeedbackScoreTwo,\n [Call.Score.Three]: Constants.CallFeedbackScoreThree,\n [Call.Score.Four]: Constants.CallFeedbackScoreFour,\n [Call.Score.Five]: Constants.CallFeedbackScoreFive,\n};\n\n/**\n * Mapping of the {@link (Call:namespace).Issue | Call issue} enum to\n * cross-platform common constants.\n *\n * @internal\n */\nconst issueMap: Record<Call.Issue, NativeCallFeedbackIssue> = {\n [Call.Issue.AudioLatency]: Constants.CallFeedbackIssueAudioLatency,\n [Call.Issue.ChoppyAudio]: Constants.CallFeedbackIssueChoppyAudio,\n [Call.Issue.DroppedCall]: Constants.CallFeedbackIssueDroppedCall,\n [Call.Issue.Echo]: Constants.CallFeedbackIssueEcho,\n [Call.Issue.NoisyCall]: Constants.CallFeedbackIssueNoisyCall,\n [Call.Issue.NotReported]: Constants.CallFeedbackIssueNotReported,\n [Call.Issue.OneWayAudio]: Constants.CallFeedbackIssueOneWayAudio,\n};\n"]}
@@ -85,6 +85,7 @@ exports.Constants = Constants;
85
85
  Constants["CallEventReconnecting"] = "callEventReconnecting";
86
86
  Constants["CallEventReconnected"] = "callEventReconnected";
87
87
  Constants["CallEventRinging"] = "callEventRinging";
88
+ Constants["CallEventHold"] = "callEventHold";
88
89
  Constants["CallEventQualityWarningsChanged"] = "callEventQualityWarningsChanged";
89
90
  Constants["CallEventCurrentWarnings"] = "callEventCurrentWarnings";
90
91
  Constants["CallEventPreviousWarnings"] = "callEventPreviousWarnings";
@@ -1 +1 @@
1
- {"version":3,"sources":["constants.ts"],"names":["Constants"],"mappings":";;;;;;IAAYA,S;;;WAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,yBAAAA,S","sourcesContent":["export enum Constants {\n // React Native Voice SDK\n 'ReactNativeVoiceSDK' = 'react-native',\n 'ReactNativeVoiceSDKVer' = '2.0.0-dev',\n\n // Scope names\n 'ScopeVoice' = 'scopeVoice',\n 'ScopeCall' = 'scopeCall',\n 'ScopeCallMessage' = 'scopeCallMessage',\n 'ScopeCallInvite' = 'scopeCallInvite',\n 'ScopePreflightTest' = 'scopePreflightTest',\n\n // Voice events\n // Common\n 'VoiceEventError' = 'voiceEventError',\n 'VoiceEventType' = 'type',\n\n // Error\n 'VoiceErrorKeyError' = 'error',\n 'VoiceErrorKeyCode' = 'code',\n 'VoiceErrorKeyMessage' = 'message',\n\n // Registration\n 'VoiceEventRegistered' = 'voiceEventRegistered',\n 'VoiceEventUnregistered' = 'voiceEventUnregistered',\n\n // Call Info\n 'CallInfoUuid' = 'uuid',\n 'CallInfoSid' = 'sid',\n 'CallInfoFrom' = 'from',\n 'CallInfoTo' = 'to',\n 'CallInfoIsMuted' = 'isMuted',\n 'CallInfoIsOnHold' = 'isOnHold',\n 'CallInfoState' = 'state',\n 'CallInfoInitialConnectedTimestamp' = 'initialConnectedTimestamp',\n\n // Call States\n 'CallStateConnected' = 'connected',\n 'CallStateConnecting' = 'connecting',\n 'CallStateDisconnected' = 'disconnected',\n 'CallStateReconnecting' = 'reconnecting',\n 'CallStateRinging' = 'ringing',\n\n // Call Options\n 'AudioCodecKeyType' = 'type',\n\n 'AudioCodecTypeValueOpus' = 'opus',\n 'AudioCodecOpusKeyMaxAverageBitrate' = 'maxAverageBitrate',\n\n 'AudioCodecTypeValuePCMU' = 'pcmu',\n\n 'IceTransportPolicyValueAll' = 'all',\n 'IceTransportPolicyValueRelay' = 'relay',\n\n 'IceServerKeyPassword' = 'password',\n 'IceServerKeyServerUrl' = 'serverUrl',\n 'IceServerKeyUsername' = 'username',\n\n 'CallOptionsKeyIceTransportPolicy' = 'iceTransportPolicy',\n 'CallOptionsKeyIceServers' = 'iceServers',\n 'CallOptionsKeyPreferredAudioCodecs' = 'preferredAudioCodecs',\n\n // Call Invite Info\n 'CallInviteInfoUuid' = 'uuid',\n 'CallInviteInfoCallSid' = 'callSid',\n 'CallInviteInfoFrom' = 'from',\n 'CallInviteInfoTo' = 'to',\n 'CallInviteInfoCustomParameters' = 'customParameters',\n\n // Cancelled Call Invite Info\n 'CancelledCallInviteInfoUuid' = 'uuid',\n 'CancelledCallInviteInfoCallSid' = 'callSid',\n 'CancelledCallInviteInfoFrom' = 'from',\n 'CancelledCallInviteInfoTo' = 'to',\n 'CancelledCallInviteInfoCustomParameters' = 'customParameters',\n\n // Incoming Call Invite event\n 'VoiceEventTypeValueIncomingCallInvite' = 'voiceEventTypeValueIncomingCallInvite',\n\n // Call Message\n 'VoiceEventSid' = 'voiceEventSid',\n 'CallMessage' = 'callMessage',\n 'CallMessageContent' = 'content',\n 'CallMessageContentType' = 'contentType',\n 'CallMessageMessageType' = 'messageType',\n 'JSEventKeyCallMessageInfo' = 'callMessage',\n\n // Audio Devices Updated Event\n 'VoiceEventAudioDevicesUpdated' = 'voiceEventAudioDevicesUpdated',\n\n // Audio Device\n 'AudioDeviceKeyUuid' = 'uuid',\n 'AudioDeviceKeyName' = 'name',\n 'AudioDeviceKeyType' = 'type',\n 'AudioDeviceKeyAudioDevices' = 'audioDevices',\n 'AudioDeviceKeySelectedDevice' = 'selectedDevice',\n 'AudioDeviceKeyEarpiece' = 'earpiece',\n 'AudioDeviceKeySpeaker' = 'speaker',\n 'AudioDeviceKeyBluetooth' = 'bluetooth',\n\n // CallInvite events\n 'CallInviteEventKeyType' = 'type',\n 'CallInviteEventTypeValueAccepted' = 'callInviteEventTypeValueCallInviteAccepted',\n 'CallInviteEventTypeValueNotificationTapped' = 'callInviteEventTypeValueCallInviteNotificationTapped',\n 'CallInviteEventTypeValueRejected' = 'callInviteEventTypeValueCallInviteRejected',\n 'CallInviteEventTypeValueCancelled' = 'callInviteEventTypeValueCallInviteCancelled',\n 'CallInviteEventKeyCallSid' = 'callSid',\n\n // Call events\n // State\n 'CallEventConnected' = 'callEventConnected',\n 'CallEventConnectFailure' = 'callEventConnectFailure',\n 'CallEventDisconnected' = 'callEventDisconnected',\n 'CallEventReconnecting' = 'callEventReconnecting',\n 'CallEventReconnected' = 'callEventReconnected',\n 'CallEventRinging' = 'callEventRinging',\n\n // Quality warnings\n 'CallEventQualityWarningsChanged' = 'callEventQualityWarningsChanged',\n 'CallEventCurrentWarnings' = 'callEventCurrentWarnings',\n 'CallEventPreviousWarnings' = 'callEventPreviousWarnings',\n\n // Call message events\n 'CallEventMessageFailure' = 'callEventMessageFailure',\n 'CallEventMessageReceived' = 'callEventMessageReceived',\n 'CallEventMessageSent' = 'callEventMessageSent',\n\n // Call feedback score\n 'CallFeedbackScoreNotReported' = 'callFeedbackScoreNotReported',\n 'CallFeedbackScoreOne' = 'callFeedbackScoreOne',\n 'CallFeedbackScoreTwo' = 'callFeedbackScoreTwo',\n 'CallFeedbackScoreThree' = 'callFeedbackScoreThree',\n 'CallFeedbackScoreFour' = 'callFeedbackScoreFour',\n 'CallFeedbackScoreFive' = 'callFeedbackScoreFive',\n\n // Call feedback issue\n 'CallFeedbackIssueNotReported' = 'callFeedbackIssueNotReported',\n 'CallFeedbackIssueDroppedCall' = 'callFeedbackIssueDroppedCall',\n 'CallFeedbackIssueAudioLatency' = 'callFeedbackIssueAudioLatency',\n 'CallFeedbackIssueOneWayAudio' = 'callFeedbackIssueOneWayAudio',\n 'CallFeedbackIssueChoppyAudio' = 'callFeedbackIssueChoppyAudio',\n 'CallFeedbackIssueNoisyCall' = 'callFeedbackIssueNoisyCall',\n 'CallFeedbackIssueEcho' = 'callFeedbackIssueEcho',\n\n // StatsReport\n 'PeerConnectionId' = 'peerConnectionId',\n 'LocalAudioTrackStats' = 'localAudioTrackStats',\n 'RemoteAudioTrackStats' = 'remoteAudioTrackStats',\n 'IceCandidatePairStats' = 'iceCandidatePairStats',\n 'IceCandidateStats' = 'iceCandidateStats',\n 'Codec' = 'codec',\n 'PacketsLost' = 'packetsLost',\n 'Ssrc' = 'ssrc',\n 'TrackId' = 'trackId',\n 'Timestamp' = 'timestamp',\n 'BytesSent' = 'bytesSent',\n 'PacketsSent' = 'packetsSent',\n 'RoundTripTime' = 'roundTripTime',\n 'AudioLevel' = 'audioLevel',\n 'Jitter' = 'jitter',\n 'BytesReceived' = 'bytesReceived',\n 'Mos' = 'mos',\n 'TransportId' = 'transportId',\n 'LocalCandidateId' = 'localCandidateId',\n 'RemoteCandidateId' = 'remoteCandidateId',\n 'State' = 'state',\n 'LocalCandidateIp' = 'localCandidateIp',\n 'RemoteCandidateIp' = 'remoteCandidateIp',\n 'Nominated' = 'nominated',\n 'Writeable' = 'writeable',\n 'Readable' = 'readable',\n 'TotalRoundTripTime' = 'totalRoundTripTime',\n 'CurrentRoundTripTime' = 'currentRoundTripTime',\n 'AvailableOutgoingBitrate' = 'availableOutgoingBitrate',\n 'AvailableIncomingBitrate' = 'availableIncomingBitrate',\n 'RequestsReceived' = 'requestsReceived',\n 'RequestsSent' = 'requestsSent',\n 'ResponsesReceived' = 'responsesReceived',\n 'ResponsesSent' = 'responsesSent',\n 'RetransmissionsReceived' = 'retransmissionsReceived',\n 'RetransmissionsSent' = 'retransmissionsSent',\n 'ConsentRequestsReceived' = 'consentRequestsReceived',\n 'ConsentRequestsSent' = 'consentRequestsSent',\n 'ConsentResponsesReceived' = 'consentResponsesReceived',\n 'ConsentResponsesSent' = 'consentResponsesSent',\n 'ActiveCandidatePair' = 'activeCandidatePair',\n 'RelayProtocol' = 'relayProtocol',\n 'IsRemote' = 'isRemote',\n 'Ip' = 'ip',\n 'Port' = 'port',\n 'Protocol' = 'protocol',\n 'CandidateType' = 'candidateType',\n 'Priority' = 'priority',\n 'Url' = 'url',\n 'Deleted' = 'deleted',\n 'PacketsReceived' = 'packetsReceived',\n\n // IceCandidatePairState\n 'StateFailed' = 'stateFailed',\n 'StateFrozen' = 'stateFrozen',\n 'StateInProgress' = 'stateInProgress',\n 'StateSucceeded' = 'stateSucceeded',\n 'StateWaiting' = 'stateWaiting',\n 'StateUnknown' = 'stateUnknown',\n\n // iOS CallKit configuration\n 'CallKitMaximumCallsPerCallGroup' = 'callKitMaximumCallsPerCallGroup',\n 'CallKitMaximumCallGroups' = 'callKitMaximumCallGroups',\n 'CallKitIncludesCallsInRecents' = 'callKitIncludesCallsInRecents',\n 'CallKitSupportedHandleTypes' = 'callKitSupportedHandleTypes',\n 'CallKitIconTemplateImageData' = 'callKitIconTemplateImageData',\n 'CallKitRingtoneSound' = 'callKitRingtoneSound',\n\n // PreflightTest events\n 'PreflightTestEventKeyType' = 'preflightTestEventKeyType',\n 'PreflightTestEventKeyUuid' = 'preflightTestEventKeyUuid',\n\n 'PreflightTestEventTypeValueConnected' = 'preflightTestEventTypeValueConnected',\n\n 'PreflightTestEventTypeValueCompleted' = 'preflightTestEventTypeValueCompleted',\n 'PreflightTestCompletedEventKeyReport' = 'preflightTestCompletedEventKeyReport',\n\n 'PreflightTestEventTypeValueFailed' = 'preflightTestEventTypeValueFailed',\n 'PreflightTestFailedEventKeyError' = 'preflightTestFailedEventKeyError',\n\n 'PreflightTestEventTypeValueSample' = 'preflightTestEventTypeValueSample',\n 'PreflightTestSampleEventKeySample' = 'preflightTestSampleEventKeySample',\n\n 'PreflightTestEventTypeValueQualityWarning' = 'preflightTestEventTypeValueQualityWarning',\n 'PreflightTestQualityWarningEventKeyCurrentWarnings' = 'preflightTestQualityWarningEventKeyCurrentWarnings',\n 'PreflightTestQualityWarningEventKeyPreviousWarnings' = 'preflightTestQualityWarningEventKeyPreviousWarnings',\n\n // PreflightTest state\n 'PreflightTestStateConnecting' = 'connecting',\n 'PreflightTestStateConnected' = 'connected',\n 'PreflightTestStateCompleted' = 'completed',\n 'PreflightTestStateFailed' = 'failed',\n\n // PreflightStats\n 'PreflightStatsAverage' = 'average',\n 'PreflightStatsMin' = 'min',\n 'PreflightStatsMax' = 'max',\n\n // PreflightRTCStats\n 'PreflightRTCStatsJitter' = 'jitter',\n 'PreflightRTCStatsMos' = 'mos',\n 'PreflightRTCStatsRtt' = 'rtt',\n\n // PreflightTimeMeasurement\n 'PreflightTimeMeasurementStart' = 'start',\n 'PreflightTimeMeasurementEnd' = 'end',\n 'PreflightTimeMeasurementDuration' = 'duration',\n\n // PreflightNetworkTiming\n 'PreflightNetworkTimingSignaling' = 'signaling',\n 'PreflightNetworkTimingPeerConnection' = 'peerConnection',\n 'PreflightNetworkTimingIce' = 'ice',\n\n // PreflightWarning\n 'PreflightWarningName' = 'name',\n 'PreflightWarningThreshold' = 'threshold',\n 'PreflightWarningValues' = 'values',\n 'PreflightWarningTimestamp' = 'timestamp',\n\n // PreflightWarningCleared\n 'PreflightWarningClearedName' = 'name',\n 'PreflightWarningClearedTimestamp' = 'timestamp',\n\n // PreflightRTCIceCandidateStats\n 'PreflightRTCIceCandidateStatsTransportId' = 'transportId',\n 'PreflightRTCIceCandidateStatsIsRemote' = 'isRemote',\n 'PreflightRTCIceCandidateStatsIp' = 'ip',\n 'PreflightRTCIceCandidateStatsPort' = 'port',\n 'PreflightRTCIceCandidateStatsProtocol' = 'protocol',\n 'PreflightRTCIceCandidateStatsCandidateType' = 'candidateType',\n 'PreflightRTCIceCandidateStatsPriority' = 'priority',\n 'PreflightRTCIceCandidateStatsUrl' = 'url',\n 'PreflightRTCIceCandidateStatsDeleted' = 'deleted',\n 'PreflightRTCIceCandidateStatsNetworkCost' = 'networkCost',\n 'PreflightRTCIceCandidateStatsNetworkId' = 'networkId',\n 'PreflightRTCIceCandidateStatsNetworkType' = 'networkType',\n 'PreflightRTCIceCandidateStatsRelatedAddress' = 'relatedAddress',\n 'PreflightRTCIceCandidateStatsRelatedPort' = 'relatedPort',\n 'PreflightRTCIceCandidateStatsTcpType' = 'tcpType',\n\n // PreflightRTCSelectedIceCandidatePairStats\n 'PreflightRTCSelectedIceCandidatePairStatsLocalCandidate' = 'localCandidate',\n 'PreflightRTCSelectedIceCandidatePairStatsRemoteCandidate' = 'remoteCandidate',\n\n // PreflightRTCSample\n 'PreflightRTCSampleCodec' = 'codec',\n 'PreflightRTCSampleAudioInputLevel' = 'audioInputLevel',\n 'PreflightRTCSampleAudioOutputLevel' = 'audioOutputLevel',\n 'PreflightRTCSampleBytesReceived' = 'bytesReceived',\n 'PreflightRTCSampleBytesSent' = 'bytesSent',\n 'PreflightRTCSamplePacketsReceived' = 'packetsReceived',\n 'PreflightRTCSamplePacketsSent' = 'packetsSent',\n 'PreflightRTCSamplePacketsLost' = 'packetsLost',\n 'PreflightRTCSamplePacketsLostFraction' = 'packetsLostFraction',\n 'PreflightRTCSampleJitter' = 'jitter',\n 'PreflightRTCSampleMos' = 'mos',\n 'PreflightRTCSampleRtt' = 'rtt',\n 'PreflightRTCSampleTimestamp' = 'timestamp',\n\n // PreflightCallQuality\n 'PreflightCallQualityExcellent' = 'excellent',\n 'PreflightCallQualityGreat' = 'great',\n 'PreflightCallQualityGood' = 'good',\n 'PreflightCallQualityFair' = 'fair',\n 'PreflightCallQualityDegraded' = 'degraded',\n 'PreflightCallQualityNull' = 'null',\n\n // PreflightReport\n 'PreflightReportCallSid' = 'callSid',\n 'PreflightReportEdge' = 'edge',\n 'PreflightReportSelectedEdge' = 'selectedEdge',\n 'PreflightReportIceCandidateStats' = 'iceCandidateStats',\n 'PreflightReportNetworkTiming' = 'networkTiming',\n 'PreflightReportTestTiming' = 'testTiming',\n 'PreflightReportSamples' = 'samples',\n 'PreflightReportStats' = 'stats',\n 'PreflightReportIsTurnRequired' = 'isTurnRequired',\n 'PreflightReportCallQuality' = 'callQuality',\n 'PreflightReportWarnings' = 'warnings',\n 'PreflightReportWarningsCleared' = 'warningsCleared',\n 'PreflightReportSelectedIceCandidatePairStats' = 'selectedIceCandidatePairStats',\n\n // Error codes\n 'ErrorCodeInvalidStateError' = 'InvalidStateError',\n 'ErrorCodeInvalidArgumentError' = 'InvalidArgumentError',\n\n // Native promise utilities\n 'PromiseKeyStatus' = 'promiseKeyStatus',\n 'PromiseStatusValueRejectedWithCode' = 'promiseStatusValueRejectedWithCode',\n 'PromiseKeyErrorCode' = 'promiseKeyErrorCode',\n 'PromiseStatusValueRejectedWithName' = 'promiseStatusValueRejectedWithName',\n 'PromiseKeyErrorName' = 'promiseKeyErrorName',\n 'PromiseKeyErrorMessage' = 'promiseKeyErrorMessage',\n 'PromiseStatusValueResolved' = 'promiseStatusValueResolved',\n 'PromiseKeyValue' = 'promiseKeyValue',\n}\n"]}
1
+ {"version":3,"sources":["constants.ts"],"names":["Constants"],"mappings":";;;;;;IAAYA,S;;;WAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,yBAAAA,S","sourcesContent":["export enum Constants {\n // React Native Voice SDK\n 'ReactNativeVoiceSDK' = 'react-native',\n 'ReactNativeVoiceSDKVer' = '2.0.0-dev',\n\n // Scope names\n 'ScopeVoice' = 'scopeVoice',\n 'ScopeCall' = 'scopeCall',\n 'ScopeCallMessage' = 'scopeCallMessage',\n 'ScopeCallInvite' = 'scopeCallInvite',\n 'ScopePreflightTest' = 'scopePreflightTest',\n\n // Voice events\n // Common\n 'VoiceEventError' = 'voiceEventError',\n 'VoiceEventType' = 'type',\n\n // Error\n 'VoiceErrorKeyError' = 'error',\n 'VoiceErrorKeyCode' = 'code',\n 'VoiceErrorKeyMessage' = 'message',\n\n // Registration\n 'VoiceEventRegistered' = 'voiceEventRegistered',\n 'VoiceEventUnregistered' = 'voiceEventUnregistered',\n\n // Call Info\n 'CallInfoUuid' = 'uuid',\n 'CallInfoSid' = 'sid',\n 'CallInfoFrom' = 'from',\n 'CallInfoTo' = 'to',\n 'CallInfoIsMuted' = 'isMuted',\n 'CallInfoIsOnHold' = 'isOnHold',\n 'CallInfoState' = 'state',\n 'CallInfoInitialConnectedTimestamp' = 'initialConnectedTimestamp',\n\n // Call States\n 'CallStateConnected' = 'connected',\n 'CallStateConnecting' = 'connecting',\n 'CallStateDisconnected' = 'disconnected',\n 'CallStateReconnecting' = 'reconnecting',\n 'CallStateRinging' = 'ringing',\n\n // Call Options\n 'AudioCodecKeyType' = 'type',\n\n 'AudioCodecTypeValueOpus' = 'opus',\n 'AudioCodecOpusKeyMaxAverageBitrate' = 'maxAverageBitrate',\n\n 'AudioCodecTypeValuePCMU' = 'pcmu',\n\n 'IceTransportPolicyValueAll' = 'all',\n 'IceTransportPolicyValueRelay' = 'relay',\n\n 'IceServerKeyPassword' = 'password',\n 'IceServerKeyServerUrl' = 'serverUrl',\n 'IceServerKeyUsername' = 'username',\n\n 'CallOptionsKeyIceTransportPolicy' = 'iceTransportPolicy',\n 'CallOptionsKeyIceServers' = 'iceServers',\n 'CallOptionsKeyPreferredAudioCodecs' = 'preferredAudioCodecs',\n\n // Call Invite Info\n 'CallInviteInfoUuid' = 'uuid',\n 'CallInviteInfoCallSid' = 'callSid',\n 'CallInviteInfoFrom' = 'from',\n 'CallInviteInfoTo' = 'to',\n 'CallInviteInfoCustomParameters' = 'customParameters',\n\n // Cancelled Call Invite Info\n 'CancelledCallInviteInfoUuid' = 'uuid',\n 'CancelledCallInviteInfoCallSid' = 'callSid',\n 'CancelledCallInviteInfoFrom' = 'from',\n 'CancelledCallInviteInfoTo' = 'to',\n 'CancelledCallInviteInfoCustomParameters' = 'customParameters',\n\n // Incoming Call Invite event\n 'VoiceEventTypeValueIncomingCallInvite' = 'voiceEventTypeValueIncomingCallInvite',\n\n // Call Message\n 'VoiceEventSid' = 'voiceEventSid',\n 'CallMessage' = 'callMessage',\n 'CallMessageContent' = 'content',\n 'CallMessageContentType' = 'contentType',\n 'CallMessageMessageType' = 'messageType',\n 'JSEventKeyCallMessageInfo' = 'callMessage',\n\n // Audio Devices Updated Event\n 'VoiceEventAudioDevicesUpdated' = 'voiceEventAudioDevicesUpdated',\n\n // Audio Device\n 'AudioDeviceKeyUuid' = 'uuid',\n 'AudioDeviceKeyName' = 'name',\n 'AudioDeviceKeyType' = 'type',\n 'AudioDeviceKeyAudioDevices' = 'audioDevices',\n 'AudioDeviceKeySelectedDevice' = 'selectedDevice',\n 'AudioDeviceKeyEarpiece' = 'earpiece',\n 'AudioDeviceKeySpeaker' = 'speaker',\n 'AudioDeviceKeyBluetooth' = 'bluetooth',\n\n // CallInvite events\n 'CallInviteEventKeyType' = 'type',\n 'CallInviteEventTypeValueAccepted' = 'callInviteEventTypeValueCallInviteAccepted',\n 'CallInviteEventTypeValueNotificationTapped' = 'callInviteEventTypeValueCallInviteNotificationTapped',\n 'CallInviteEventTypeValueRejected' = 'callInviteEventTypeValueCallInviteRejected',\n 'CallInviteEventTypeValueCancelled' = 'callInviteEventTypeValueCallInviteCancelled',\n 'CallInviteEventKeyCallSid' = 'callSid',\n\n // Call events\n // State\n 'CallEventConnected' = 'callEventConnected',\n 'CallEventConnectFailure' = 'callEventConnectFailure',\n 'CallEventDisconnected' = 'callEventDisconnected',\n 'CallEventReconnecting' = 'callEventReconnecting',\n 'CallEventReconnected' = 'callEventReconnected',\n 'CallEventRinging' = 'callEventRinging',\n 'CallEventHold' = 'callEventHold',\n\n // Quality warnings\n 'CallEventQualityWarningsChanged' = 'callEventQualityWarningsChanged',\n 'CallEventCurrentWarnings' = 'callEventCurrentWarnings',\n 'CallEventPreviousWarnings' = 'callEventPreviousWarnings',\n\n // Call message events\n 'CallEventMessageFailure' = 'callEventMessageFailure',\n 'CallEventMessageReceived' = 'callEventMessageReceived',\n 'CallEventMessageSent' = 'callEventMessageSent',\n\n // Call feedback score\n 'CallFeedbackScoreNotReported' = 'callFeedbackScoreNotReported',\n 'CallFeedbackScoreOne' = 'callFeedbackScoreOne',\n 'CallFeedbackScoreTwo' = 'callFeedbackScoreTwo',\n 'CallFeedbackScoreThree' = 'callFeedbackScoreThree',\n 'CallFeedbackScoreFour' = 'callFeedbackScoreFour',\n 'CallFeedbackScoreFive' = 'callFeedbackScoreFive',\n\n // Call feedback issue\n 'CallFeedbackIssueNotReported' = 'callFeedbackIssueNotReported',\n 'CallFeedbackIssueDroppedCall' = 'callFeedbackIssueDroppedCall',\n 'CallFeedbackIssueAudioLatency' = 'callFeedbackIssueAudioLatency',\n 'CallFeedbackIssueOneWayAudio' = 'callFeedbackIssueOneWayAudio',\n 'CallFeedbackIssueChoppyAudio' = 'callFeedbackIssueChoppyAudio',\n 'CallFeedbackIssueNoisyCall' = 'callFeedbackIssueNoisyCall',\n 'CallFeedbackIssueEcho' = 'callFeedbackIssueEcho',\n\n // StatsReport\n 'PeerConnectionId' = 'peerConnectionId',\n 'LocalAudioTrackStats' = 'localAudioTrackStats',\n 'RemoteAudioTrackStats' = 'remoteAudioTrackStats',\n 'IceCandidatePairStats' = 'iceCandidatePairStats',\n 'IceCandidateStats' = 'iceCandidateStats',\n 'Codec' = 'codec',\n 'PacketsLost' = 'packetsLost',\n 'Ssrc' = 'ssrc',\n 'TrackId' = 'trackId',\n 'Timestamp' = 'timestamp',\n 'BytesSent' = 'bytesSent',\n 'PacketsSent' = 'packetsSent',\n 'RoundTripTime' = 'roundTripTime',\n 'AudioLevel' = 'audioLevel',\n 'Jitter' = 'jitter',\n 'BytesReceived' = 'bytesReceived',\n 'Mos' = 'mos',\n 'TransportId' = 'transportId',\n 'LocalCandidateId' = 'localCandidateId',\n 'RemoteCandidateId' = 'remoteCandidateId',\n 'State' = 'state',\n 'LocalCandidateIp' = 'localCandidateIp',\n 'RemoteCandidateIp' = 'remoteCandidateIp',\n 'Nominated' = 'nominated',\n 'Writeable' = 'writeable',\n 'Readable' = 'readable',\n 'TotalRoundTripTime' = 'totalRoundTripTime',\n 'CurrentRoundTripTime' = 'currentRoundTripTime',\n 'AvailableOutgoingBitrate' = 'availableOutgoingBitrate',\n 'AvailableIncomingBitrate' = 'availableIncomingBitrate',\n 'RequestsReceived' = 'requestsReceived',\n 'RequestsSent' = 'requestsSent',\n 'ResponsesReceived' = 'responsesReceived',\n 'ResponsesSent' = 'responsesSent',\n 'RetransmissionsReceived' = 'retransmissionsReceived',\n 'RetransmissionsSent' = 'retransmissionsSent',\n 'ConsentRequestsReceived' = 'consentRequestsReceived',\n 'ConsentRequestsSent' = 'consentRequestsSent',\n 'ConsentResponsesReceived' = 'consentResponsesReceived',\n 'ConsentResponsesSent' = 'consentResponsesSent',\n 'ActiveCandidatePair' = 'activeCandidatePair',\n 'RelayProtocol' = 'relayProtocol',\n 'IsRemote' = 'isRemote',\n 'Ip' = 'ip',\n 'Port' = 'port',\n 'Protocol' = 'protocol',\n 'CandidateType' = 'candidateType',\n 'Priority' = 'priority',\n 'Url' = 'url',\n 'Deleted' = 'deleted',\n 'PacketsReceived' = 'packetsReceived',\n\n // IceCandidatePairState\n 'StateFailed' = 'stateFailed',\n 'StateFrozen' = 'stateFrozen',\n 'StateInProgress' = 'stateInProgress',\n 'StateSucceeded' = 'stateSucceeded',\n 'StateWaiting' = 'stateWaiting',\n 'StateUnknown' = 'stateUnknown',\n\n // iOS CallKit configuration\n 'CallKitMaximumCallsPerCallGroup' = 'callKitMaximumCallsPerCallGroup',\n 'CallKitMaximumCallGroups' = 'callKitMaximumCallGroups',\n 'CallKitIncludesCallsInRecents' = 'callKitIncludesCallsInRecents',\n 'CallKitSupportedHandleTypes' = 'callKitSupportedHandleTypes',\n 'CallKitIconTemplateImageData' = 'callKitIconTemplateImageData',\n 'CallKitRingtoneSound' = 'callKitRingtoneSound',\n\n // PreflightTest events\n 'PreflightTestEventKeyType' = 'preflightTestEventKeyType',\n 'PreflightTestEventKeyUuid' = 'preflightTestEventKeyUuid',\n\n 'PreflightTestEventTypeValueConnected' = 'preflightTestEventTypeValueConnected',\n\n 'PreflightTestEventTypeValueCompleted' = 'preflightTestEventTypeValueCompleted',\n 'PreflightTestCompletedEventKeyReport' = 'preflightTestCompletedEventKeyReport',\n\n 'PreflightTestEventTypeValueFailed' = 'preflightTestEventTypeValueFailed',\n 'PreflightTestFailedEventKeyError' = 'preflightTestFailedEventKeyError',\n\n 'PreflightTestEventTypeValueSample' = 'preflightTestEventTypeValueSample',\n 'PreflightTestSampleEventKeySample' = 'preflightTestSampleEventKeySample',\n\n 'PreflightTestEventTypeValueQualityWarning' = 'preflightTestEventTypeValueQualityWarning',\n 'PreflightTestQualityWarningEventKeyCurrentWarnings' = 'preflightTestQualityWarningEventKeyCurrentWarnings',\n 'PreflightTestQualityWarningEventKeyPreviousWarnings' = 'preflightTestQualityWarningEventKeyPreviousWarnings',\n\n // PreflightTest state\n 'PreflightTestStateConnecting' = 'connecting',\n 'PreflightTestStateConnected' = 'connected',\n 'PreflightTestStateCompleted' = 'completed',\n 'PreflightTestStateFailed' = 'failed',\n\n // PreflightStats\n 'PreflightStatsAverage' = 'average',\n 'PreflightStatsMin' = 'min',\n 'PreflightStatsMax' = 'max',\n\n // PreflightRTCStats\n 'PreflightRTCStatsJitter' = 'jitter',\n 'PreflightRTCStatsMos' = 'mos',\n 'PreflightRTCStatsRtt' = 'rtt',\n\n // PreflightTimeMeasurement\n 'PreflightTimeMeasurementStart' = 'start',\n 'PreflightTimeMeasurementEnd' = 'end',\n 'PreflightTimeMeasurementDuration' = 'duration',\n\n // PreflightNetworkTiming\n 'PreflightNetworkTimingSignaling' = 'signaling',\n 'PreflightNetworkTimingPeerConnection' = 'peerConnection',\n 'PreflightNetworkTimingIce' = 'ice',\n\n // PreflightWarning\n 'PreflightWarningName' = 'name',\n 'PreflightWarningThreshold' = 'threshold',\n 'PreflightWarningValues' = 'values',\n 'PreflightWarningTimestamp' = 'timestamp',\n\n // PreflightWarningCleared\n 'PreflightWarningClearedName' = 'name',\n 'PreflightWarningClearedTimestamp' = 'timestamp',\n\n // PreflightRTCIceCandidateStats\n 'PreflightRTCIceCandidateStatsTransportId' = 'transportId',\n 'PreflightRTCIceCandidateStatsIsRemote' = 'isRemote',\n 'PreflightRTCIceCandidateStatsIp' = 'ip',\n 'PreflightRTCIceCandidateStatsPort' = 'port',\n 'PreflightRTCIceCandidateStatsProtocol' = 'protocol',\n 'PreflightRTCIceCandidateStatsCandidateType' = 'candidateType',\n 'PreflightRTCIceCandidateStatsPriority' = 'priority',\n 'PreflightRTCIceCandidateStatsUrl' = 'url',\n 'PreflightRTCIceCandidateStatsDeleted' = 'deleted',\n 'PreflightRTCIceCandidateStatsNetworkCost' = 'networkCost',\n 'PreflightRTCIceCandidateStatsNetworkId' = 'networkId',\n 'PreflightRTCIceCandidateStatsNetworkType' = 'networkType',\n 'PreflightRTCIceCandidateStatsRelatedAddress' = 'relatedAddress',\n 'PreflightRTCIceCandidateStatsRelatedPort' = 'relatedPort',\n 'PreflightRTCIceCandidateStatsTcpType' = 'tcpType',\n\n // PreflightRTCSelectedIceCandidatePairStats\n 'PreflightRTCSelectedIceCandidatePairStatsLocalCandidate' = 'localCandidate',\n 'PreflightRTCSelectedIceCandidatePairStatsRemoteCandidate' = 'remoteCandidate',\n\n // PreflightRTCSample\n 'PreflightRTCSampleCodec' = 'codec',\n 'PreflightRTCSampleAudioInputLevel' = 'audioInputLevel',\n 'PreflightRTCSampleAudioOutputLevel' = 'audioOutputLevel',\n 'PreflightRTCSampleBytesReceived' = 'bytesReceived',\n 'PreflightRTCSampleBytesSent' = 'bytesSent',\n 'PreflightRTCSamplePacketsReceived' = 'packetsReceived',\n 'PreflightRTCSamplePacketsSent' = 'packetsSent',\n 'PreflightRTCSamplePacketsLost' = 'packetsLost',\n 'PreflightRTCSamplePacketsLostFraction' = 'packetsLostFraction',\n 'PreflightRTCSampleJitter' = 'jitter',\n 'PreflightRTCSampleMos' = 'mos',\n 'PreflightRTCSampleRtt' = 'rtt',\n 'PreflightRTCSampleTimestamp' = 'timestamp',\n\n // PreflightCallQuality\n 'PreflightCallQualityExcellent' = 'excellent',\n 'PreflightCallQualityGreat' = 'great',\n 'PreflightCallQualityGood' = 'good',\n 'PreflightCallQualityFair' = 'fair',\n 'PreflightCallQualityDegraded' = 'degraded',\n 'PreflightCallQualityNull' = 'null',\n\n // PreflightReport\n 'PreflightReportCallSid' = 'callSid',\n 'PreflightReportEdge' = 'edge',\n 'PreflightReportSelectedEdge' = 'selectedEdge',\n 'PreflightReportIceCandidateStats' = 'iceCandidateStats',\n 'PreflightReportNetworkTiming' = 'networkTiming',\n 'PreflightReportTestTiming' = 'testTiming',\n 'PreflightReportSamples' = 'samples',\n 'PreflightReportStats' = 'stats',\n 'PreflightReportIsTurnRequired' = 'isTurnRequired',\n 'PreflightReportCallQuality' = 'callQuality',\n 'PreflightReportWarnings' = 'warnings',\n 'PreflightReportWarningsCleared' = 'warningsCleared',\n 'PreflightReportSelectedIceCandidatePairStats' = 'selectedIceCandidatePairStats',\n\n // Error codes\n 'ErrorCodeInvalidStateError' = 'InvalidStateError',\n 'ErrorCodeInvalidArgumentError' = 'InvalidArgumentError',\n\n // Native promise utilities\n 'PromiseKeyStatus' = 'promiseKeyStatus',\n 'PromiseStatusValueRejectedWithCode' = 'promiseStatusValueRejectedWithCode',\n 'PromiseKeyErrorCode' = 'promiseKeyErrorCode',\n 'PromiseStatusValueRejectedWithName' = 'promiseStatusValueRejectedWithName',\n 'PromiseKeyErrorName' = 'promiseKeyErrorName',\n 'PromiseKeyErrorMessage' = 'promiseKeyErrorMessage',\n 'PromiseStatusValueResolved' = 'promiseStatusValueResolved',\n 'PromiseKeyValue' = 'promiseKeyValue',\n}\n"]}