@dynamic-labs/sdk-react-core 4.91.3 → 4.91.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +12 -12
  5. package/src/lib/client/client.cjs +1 -1
  6. package/src/lib/client/client.js +1 -1
  7. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +4 -1
  8. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +4 -1
  9. package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.cjs +3 -0
  10. package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.js +3 -0
  11. package/src/lib/context/DynamicContext/hooks/useRemoveWallet/useRemoveWallet.cjs +1 -1
  12. package/src/lib/context/DynamicContext/hooks/useRemoveWallet/useRemoveWallet.js +1 -1
  13. package/src/lib/context/DynamicContext/types/SettingsOverrides.d.ts +13 -1
  14. package/src/lib/context/OnrampContext/OnrampContext.cjs +1 -1
  15. package/src/lib/context/OnrampContext/OnrampContext.js +1 -1
  16. package/src/lib/context/SendBalanceContext/SendBalanceContext.errors.cjs +2 -2
  17. package/src/lib/context/SendBalanceContext/SendBalanceContext.errors.js +2 -2
  18. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.cjs +3 -3
  19. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.js +3 -3
  20. package/src/lib/data/api/email/email.cjs +6 -3
  21. package/src/lib/data/api/email/email.js +6 -3
  22. package/src/lib/data/api/embeddedWallets/embeddedWallets.cjs +5 -5
  23. package/src/lib/data/api/embeddedWallets/embeddedWallets.js +5 -5
  24. package/src/lib/data/api/exchangeAccounts/exchangeAccounts.cjs +3 -3
  25. package/src/lib/data/api/exchangeAccounts/exchangeAccounts.js +3 -3
  26. package/src/lib/data/api/oauth/oauth.cjs +3 -2
  27. package/src/lib/data/api/oauth/oauth.js +3 -2
  28. package/src/lib/data/api/session/session.cjs +3 -3
  29. package/src/lib/data/api/session/session.js +3 -3
  30. package/src/lib/data/api/sms/sms.cjs +4 -1
  31. package/src/lib/data/api/sms/sms.js +4 -1
  32. package/src/lib/data/api/user/user.cjs +4 -4
  33. package/src/lib/data/api/user/user.js +4 -4
  34. package/src/lib/data/api/wallets/wallets.cjs +15 -13
  35. package/src/lib/data/api/wallets/wallets.js +15 -13
  36. package/src/lib/store/state/nonce/nonce.cjs +1 -1
  37. package/src/lib/store/state/nonce/nonce.js +1 -1
  38. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +24 -0
  39. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.d.ts +3 -1
  40. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +23 -1
  41. package/src/lib/utils/functions/findTurnkeyWallet/index.d.ts +1 -1
  42. package/src/lib/utils/functions/generateMessages/index.cjs +3 -3
  43. package/src/lib/utils/functions/generateMessages/index.js +3 -3
  44. package/src/lib/utils/functions/getEmbeddedWalletAuthHandler/getEmbeddedWalletAuthHandler.cjs +1 -1
  45. package/src/lib/utils/functions/getEmbeddedWalletAuthHandler/getEmbeddedWalletAuthHandler.js +1 -1
  46. package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.cjs +30 -0
  47. package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.d.ts +17 -0
  48. package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.js +29 -1
  49. package/src/lib/utils/functions/getTransactionLink/getTransactionLink.cjs +13 -1
  50. package/src/lib/utils/functions/getTransactionLink/getTransactionLink.d.ts +2 -1
  51. package/src/lib/utils/functions/getTransactionLink/getTransactionLink.js +14 -2
  52. package/src/lib/utils/hooks/authenticationHooks/useOtpVerificationRequest/useOtpVerificationRequest.cjs +2 -2
  53. package/src/lib/utils/hooks/authenticationHooks/useOtpVerificationRequest/useOtpVerificationRequest.js +2 -2
  54. package/src/lib/utils/hooks/useAuthenticateConnectedUser/useAuthenticateConnectedUser.cjs +2 -2
  55. package/src/lib/utils/hooks/useAuthenticateConnectedUser/useAuthenticateConnectedUser.js +2 -2
  56. package/src/lib/utils/hooks/useConfirmationPortal/useConfirmationPortal.cjs +1 -1
  57. package/src/lib/utils/hooks/useConfirmationPortal/useConfirmationPortal.js +1 -1
  58. package/src/lib/utils/hooks/useConnectExchangeForFunding/useConnectExchangeForFunding.cjs +1 -1
  59. package/src/lib/utils/hooks/useConnectExchangeForFunding/useConnectExchangeForFunding.js +1 -1
  60. package/src/lib/utils/hooks/useConnectUnifiedForFunding/useConnectUnifiedForFunding.cjs +2 -2
  61. package/src/lib/utils/hooks/useConnectUnifiedForFunding/useConnectUnifiedForFunding.js +2 -2
  62. package/src/lib/utils/hooks/useConnectWallet/HandleConnectWalletRejectionError.cjs +1 -1
  63. package/src/lib/utils/hooks/useConnectWallet/HandleConnectWalletRejectionError.js +1 -1
  64. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +1 -1
  65. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +1 -1
  66. package/src/lib/utils/hooks/useCreateWalletConnectorOptions/utils/errors/ConnectorSetupError.cjs +1 -1
  67. package/src/lib/utils/hooks/useCreateWalletConnectorOptions/utils/errors/ConnectorSetupError.js +1 -1
  68. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +8 -8
  69. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +8 -8
  70. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +4 -4
  71. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +3 -1
  72. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +4 -4
  73. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +26 -13
  74. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +4 -2
  75. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +28 -15
  76. package/src/lib/utils/hooks/useFundWithWallet/useConnectWalletForFunding/useConnectWalletForFunding.cjs +2 -2
  77. package/src/lib/utils/hooks/useFundWithWallet/useConnectWalletForFunding/useConnectWalletForFunding.js +2 -2
  78. package/src/lib/utils/hooks/useFundingHelpers/useFundingHelpers.cjs +2 -2
  79. package/src/lib/utils/hooks/useFundingHelpers/useFundingHelpers.js +2 -2
  80. package/src/lib/utils/hooks/useGetMfaToken/useGetMfaToken.cjs +1 -1
  81. package/src/lib/utils/hooks/useGetMfaToken/useGetMfaToken.js +1 -1
  82. package/src/lib/utils/hooks/useSignEip7702Authorization/useSignEip7702Authorization.cjs +2 -2
  83. package/src/lib/utils/hooks/useSignEip7702Authorization/useSignEip7702Authorization.js +2 -2
  84. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +2 -2
  85. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +2 -2
  86. package/src/lib/utils/hooks/useTransferWallet/useTransferWallet.cjs +2 -2
  87. package/src/lib/utils/hooks/useTransferWallet/useTransferWallet.js +2 -2
  88. package/src/lib/utils/hooks/useUpgradeEmbeddedWallet/useUpgradeEmbeddedWallet.cjs +3 -3
  89. package/src/lib/utils/hooks/useUpgradeEmbeddedWallet/useUpgradeEmbeddedWallet.js +3 -3
  90. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +1 -1
  91. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +1 -1
  92. package/src/lib/utils/hooks/useUserDataForm/useUserDataForm.cjs +1 -1
  93. package/src/lib/utils/hooks/useUserDataForm/useUserDataForm.js +1 -1
  94. package/src/lib/utils/hooks/useUserUpdateRequest/unlinkUserEmail/unlinkUserEmail.cjs +3 -3
  95. package/src/lib/utils/hooks/useUserUpdateRequest/unlinkUserEmail/unlinkUserEmail.js +3 -3
  96. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUserWithModal/useUpdateUserWithModal.cjs +1 -1
  97. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUserWithModal/useUpdateUserWithModal.js +1 -1
  98. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +2 -2
  99. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +2 -2
  100. package/src/lib/utils/hooks/useViewSettings/useViewSettings.d.ts +5 -1
  101. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +1 -1
  102. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +1 -1
  103. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.cjs +1 -1
  104. package/src/lib/utils/hooks/useWalletOptions/useWalletOptions.js +1 -1
  105. package/src/lib/views/BridgeNextWalletConnectionView/BridgeNextWalletConnectionView.cjs +1 -1
  106. package/src/lib/views/BridgeNextWalletConnectionView/BridgeNextWalletConnectionView.js +1 -1
  107. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +2 -2
  108. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +2 -2
  109. package/src/lib/views/EmbeddedReveal/utils/waasExport/waasExport.cjs +2 -2
  110. package/src/lib/views/EmbeddedReveal/utils/waasExport/waasExport.js +2 -2
  111. package/src/lib/views/ExportSharesView/ExportSharesView.cjs +2 -2
  112. package/src/lib/views/ExportSharesView/ExportSharesView.js +2 -2
  113. package/src/lib/views/LoginView/useLoginView/useLoginView.cjs +1 -1
  114. package/src/lib/views/LoginView/useLoginView/useLoginView.js +1 -1
  115. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.cjs +1 -1
  116. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.js +1 -1
  117. package/src/lib/views/MfaVerificationView/MfaVerificationView.cjs +2 -2
  118. package/src/lib/views/MfaVerificationView/MfaVerificationView.js +2 -2
  119. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.cjs +1 -1
  120. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.js +1 -1
  121. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.cjs +1 -1
  122. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.js +1 -1
  123. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs +3 -3
  124. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.js +3 -3
  125. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +14 -14
  126. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +14 -14
  127. package/src/lib/views/SendBalanceView/SendBalanceView.cjs +2 -2
  128. package/src/lib/views/SendBalanceView/SendBalanceView.js +2 -2
  129. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.cjs +1 -1
  130. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.js +1 -1
  131. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.cjs +1 -1
  132. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.js +1 -1
  133. package/src/lib/widgets/DynamicWidget/views/ChooseWalletFundingMethod/useFundingMethods/getPromptAmountParams/getPromptAmountParams.cjs +1 -1
  134. package/src/lib/widgets/DynamicWidget/views/ChooseWalletFundingMethod/useFundingMethods/getPromptAmountParams/getPromptAmountParams.js +1 -1
  135. package/src/lib/widgets/DynamicWidget/views/ReceiveWalletFunds/utils/useSubmitWalletFunding/useSubmitWalletFunding.cjs +10 -1
  136. package/src/lib/widgets/DynamicWidget/views/ReceiveWalletFunds/utils/useSubmitWalletFunding/useSubmitWalletFunding.js +10 -1
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../../_virtual/_tslib.js';
3
3
  import { useCallback, useMemo } from 'react';
4
- import { JwtVerifiedCredentialFormatEnum } from '@dynamic-labs/sdk-api-core';
4
+ import { JwtVerifiedCredentialFormatEnum, ChainEnum } from '@dynamic-labs/sdk-api-core';
5
5
  import { DynamicError, EmbeddedWalletException, StorageService } from '@dynamic-labs/utils';
6
6
  import { isSessionKeyCompatibleWalletConnector } from '@dynamic-labs/wallet-connector-core';
7
7
  import '../../../../context/DynamicContext/useDynamicContext/useDynamicContext.js';
@@ -22,7 +22,7 @@ import '../../../constants/colors.js';
22
22
  import '../../../constants/values.js';
23
23
  import '../../../../shared/consts/index.js';
24
24
  import { findEmbeddedWalletFromVerifiedCredentials } from '../../../functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
25
- import { findTurnkeyWalletByPrimaryChain } from '../../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
25
+ import { findTurnkeyWalletByPrimaryChain, findTurnkeyWalletByTargetChain, findFirstAvailableTurnkeyWallet } from '../../../functions/findTurnkeyWallet/findTurnkeyWallet.js';
26
26
  import '@dynamic-labs/multi-wallet';
27
27
  import 'react-international-phone';
28
28
  import { getUserWalletsFromVerifiedCredentials } from '../../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.js';
@@ -103,7 +103,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
103
103
  const createEmbeddedWallet = useCallback((chains, options) => __awaiter(void 0, void 0, void 0, function* () {
104
104
  var _f;
105
105
  if (!user) {
106
- throw new DynamicError(USER_NOT_LOGGED_IN);
106
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
107
107
  }
108
108
  const userWalletsCredentials = getUserWalletsFromVerifiedCredentials(user);
109
109
  const primaryChain = findPrimaryEmbeddedChain(projectSettings);
@@ -181,7 +181,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
181
181
  const createOrRestoreSession = useCallback((options) => __awaiter(void 0, void 0, void 0, function* () {
182
182
  var _l, _m, _o, _p, _q, _r, _s;
183
183
  if (!user) {
184
- throw new DynamicError(USER_NOT_LOGGED_IN);
184
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
185
185
  }
186
186
  const primaryConnector = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector;
187
187
  if (primaryConnector &&
@@ -223,7 +223,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
223
223
  throw new DynamicError('User does not have a secure enclave wallet or a verified email', INVALID_WALLET_DATA);
224
224
  }
225
225
  if (!primaryWallet) {
226
- throw new DynamicError('No primary wallet found');
226
+ throw new DynamicError('No primary wallet found', 'no_primary_wallet_found');
227
227
  }
228
228
  const primaryTurnkeyWalletId = getTurnkeyWalletId(primaryWallet.id, (user === null || user === void 0 ? void 0 : user.verifiedCredentials) || []);
229
229
  const organizationId = (_s = (_r = (_q = (_p = user === null || user === void 0 ? void 0 : user.verifiedCredentials) === null || _p === void 0 ? void 0 : _p.find(({ walletName, id }) => (walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey')) && id === primaryTurnkeyWalletId)) === null || _q === void 0 ? void 0 : _q.walletProperties) === null || _r === void 0 ? void 0 : _r.turnkeySubOrganizationId) !== null && _s !== void 0 ? _s : undefined;
@@ -252,7 +252,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
252
252
  const createPasskey = useCallback((options) => __awaiter(void 0, void 0, void 0, function* () {
253
253
  var _t, _u;
254
254
  if (!user) {
255
- throw new DynamicError(USER_NOT_LOGGED_IN);
255
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
256
256
  }
257
257
  validateTurnkeyProviderEnabled(projectSettings);
258
258
  const turnkeyWallet = findTurnkeyWalletByPrimaryChain(walletConnectorOptions, (_t = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _t === void 0 ? void 0 : _t.chainConfigurations, user.verifiedCredentials);
@@ -290,7 +290,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
290
290
  walletId: turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.id,
291
291
  });
292
292
  if (!updatedUser) {
293
- throw new DynamicError('Error completing passkey recovery');
293
+ throw new DynamicError('Error completing passkey recovery', 'completing_passkey_recovery');
294
294
  }
295
295
  return { attestation, challenge, displayName };
296
296
  }), [
@@ -306,7 +306,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
306
306
  */
307
307
  const getPasskeys = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
308
308
  if (!user) {
309
- throw new DynamicError(USER_NOT_LOGGED_IN);
309
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
310
310
  }
311
311
  const data = yield getUserPasskeys({
312
312
  environmentId: environmentId,
@@ -337,7 +337,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
337
337
  const revealEmbeddedWalletKey = useCallback((_v) => __awaiter(void 0, [_v], void 0, function* ({ type, htmlContainerId, }) {
338
338
  var _w, _x, _y, _z, _0, _1;
339
339
  if (!user) {
340
- throw new DynamicError(USER_NOT_LOGGED_IN);
340
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
341
341
  }
342
342
  yield cleanupExport({
343
343
  wallet: wallet,
@@ -401,14 +401,26 @@ const useSecureEnclaveEmbeddedWallet = () => {
401
401
  ]);
402
402
  /**
403
403
  * Sends a one-time code to the user so they can create a session or add a new passkey
404
+ * @param options - optional parameter to target a specific wallet by chain
404
405
  * @returns Promise<'code_sent'>
405
406
  */
406
- const sendOneTimeCode = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
407
- var _2, _3;
407
+ const sendOneTimeCode = useCallback((options) => __awaiter(void 0, void 0, void 0, function* () {
408
+ var _2, _3, _4, _5, _6;
408
409
  if (!user) {
409
- throw new DynamicError(USER_NOT_LOGGED_IN);
410
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
411
+ }
412
+ const chainConfigurations = (_2 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _2 === void 0 ? void 0 : _2.chainConfigurations;
413
+ const primaryWalletIsTurnkey = (_3 = primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) === null || _3 === void 0 ? void 0 : _3.key.startsWith('turnkey');
414
+ const primaryWalletChain = primaryWalletIsTurnkey
415
+ ? primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.chain
416
+ : undefined;
417
+ const primaryConfiguredChain = (_5 = (_4 = chainConfigurations === null || chainConfigurations === void 0 ? void 0 : chainConfigurations.find((chain) => chain.primary)) === null || _4 === void 0 ? void 0 : _4.name) !== null && _5 !== void 0 ? _5 : ChainEnum.Evm;
418
+ const targetChain = (options === null || options === void 0 ? void 0 : options.chainName) || primaryWalletChain || primaryConfiguredChain;
419
+ let targetTurnkeyWallet = findTurnkeyWalletByTargetChain(walletConnectorOptions, targetChain, user.verifiedCredentials);
420
+ if (!(options === null || options === void 0 ? void 0 : options.chainName) &&
421
+ (!targetTurnkeyWallet || !('id' in targetTurnkeyWallet))) {
422
+ targetTurnkeyWallet = findFirstAvailableTurnkeyWallet(walletConnectorOptions, chainConfigurations, user.verifiedCredentials);
410
423
  }
411
- const targetTurnkeyWallet = findTurnkeyWalletByPrimaryChain(walletConnectorOptions, (_2 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _2 === void 0 ? void 0 : _2.chainConfigurations, user.verifiedCredentials);
412
424
  if (!targetTurnkeyWallet || !('id' in targetTurnkeyWallet)) {
413
425
  throw new DynamicError('User does not have a valid secure enclave wallet', INVALID_WALLET_DATA);
414
426
  }
@@ -419,9 +431,9 @@ const useSecureEnclaveEmbeddedWallet = () => {
419
431
  throw new DynamicError('Session is active. No need to create a new one', ACTIVE_SESSION);
420
432
  }
421
433
  const turnkeyAuthIframeContainerRef = createRootElement(iframeContainerId);
422
- const publicKey = yield turnkeyAuthenticatorHandler.initRecovery('email', turnkeyAuthIframeContainerRef.current, iframeElementId, getEmbeddedWalletSessionExpiration((_3 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _3 === void 0 ? void 0 : _3.sessionKeyDuration));
434
+ const publicKey = yield turnkeyAuthenticatorHandler.initRecovery('email', turnkeyAuthIframeContainerRef.current, iframeElementId, getEmbeddedWalletSessionExpiration((_6 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _6 === void 0 ? void 0 : _6.sessionKeyDuration));
423
435
  if (!publicKey) {
424
- throw new DynamicError(ERROR_SENDING_CODE);
436
+ throw new DynamicError(ERROR_SENDING_CODE, 'error_sending_code');
425
437
  }
426
438
  const response = yield initEmbeddedWalletSession({
427
439
  authenticatorType: 'email',
@@ -433,6 +445,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
433
445
  return CODE_SENT;
434
446
  }), [
435
447
  createRootElement,
448
+ primaryWallet,
436
449
  user,
437
450
  environmentId,
438
451
  projectSettings,
@@ -24,7 +24,7 @@ const useConnectWalletForFunding = () => {
24
24
  const { initiatedByWidgetRef, getWalletAddress, resetWalletConnectSession } = useFundingHelpers.useFundingHelpers();
25
25
  const connectWalletPromiseRef = React.useRef(null);
26
26
  useDynamicEvents.useInternalDynamicEvents('authFlowClose', () => {
27
- rejectPromiseRef.rejectPromiseRef(connectWalletPromiseRef, new utils.DynamicError('User cancelled'));
27
+ rejectPromiseRef.rejectPromiseRef(connectWalletPromiseRef, new utils.DynamicError('User cancelled', 'user_cancelled'));
28
28
  });
29
29
  const openWalletList = React.useCallback((initiatedByWidget) => {
30
30
  const onSelectWallet = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ walletConnector, }) {
@@ -35,7 +35,7 @@ const useConnectWalletForFunding = () => {
35
35
  initiatedByWidgetRef.current = initiatedByWidget;
36
36
  const walletAddress = yield getWalletAddress(walletConnector);
37
37
  if (!walletAddress) {
38
- rejectPromiseRef.rejectPromiseRef(connectWalletPromiseRef, new utils.DynamicError('No wallet address found'));
38
+ rejectPromiseRef.rejectPromiseRef(connectWalletPromiseRef, new utils.DynamicError('No wallet address found', 'no_wallet_address_found'));
39
39
  return;
40
40
  }
41
41
  if (walletAddress === (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address)) {
@@ -20,7 +20,7 @@ const useConnectWalletForFunding = () => {
20
20
  const { initiatedByWidgetRef, getWalletAddress, resetWalletConnectSession } = useFundingHelpers();
21
21
  const connectWalletPromiseRef = useRef(null);
22
22
  useInternalDynamicEvents('authFlowClose', () => {
23
- rejectPromiseRef(connectWalletPromiseRef, new DynamicError('User cancelled'));
23
+ rejectPromiseRef(connectWalletPromiseRef, new DynamicError('User cancelled', 'user_cancelled'));
24
24
  });
25
25
  const openWalletList = useCallback((initiatedByWidget) => {
26
26
  const onSelectWallet = (_a) => __awaiter(void 0, [_a], void 0, function* ({ walletConnector, }) {
@@ -31,7 +31,7 @@ const useConnectWalletForFunding = () => {
31
31
  initiatedByWidgetRef.current = initiatedByWidget;
32
32
  const walletAddress = yield getWalletAddress(walletConnector);
33
33
  if (!walletAddress) {
34
- rejectPromiseRef(connectWalletPromiseRef, new DynamicError('No wallet address found'));
34
+ rejectPromiseRef(connectWalletPromiseRef, new DynamicError('No wallet address found', 'no_wallet_address_found'));
35
35
  return;
36
36
  }
37
37
  if (walletAddress === (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address)) {
@@ -27,7 +27,7 @@ const useFundingHelpers = () => {
27
27
  utils.StorageService.setItem(utils.PHANTOM_REDIRECT_CONNECTION_TYPE_KEY, connectionType);
28
28
  const address = yield props.walletConnector.getAddress(props.getAddressOpts);
29
29
  if (!address) {
30
- rejectPromiseRef.rejectPromiseRef(internalConnectionPromiseRef, new utils.DynamicError('No wallet address found'));
30
+ rejectPromiseRef.rejectPromiseRef(internalConnectionPromiseRef, new utils.DynamicError('No wallet address found', 'no_wallet_address_found'));
31
31
  return;
32
32
  }
33
33
  resolvePromiseRef.resolvePromiseRef(internalConnectionPromiseRef, address);
@@ -43,7 +43,7 @@ const useFundingHelpers = () => {
43
43
  var _a;
44
44
  const walletOption = walletOptions$1.find(({ key }) => key === walletConnector.key);
45
45
  if (!walletOption) {
46
- return Promise.reject(new utils.DynamicError(`Connect wallet for funding error: wallet option for ${walletConnector.key} not found`));
46
+ return Promise.reject(new utils.DynamicError(`Connect wallet for funding error: wallet option for ${walletConnector.key} not found`, 'wallet_option_not_found'));
47
47
  }
48
48
  internalConnectionPromiseRef.current = new utils.DeferredPromise();
49
49
  handleWalletItemClick(Object.assign(Object.assign({}, walletOption), { group: (_a = walletOption.group) !== null && _a !== void 0 ? _a : undefined, walletConnector }));
@@ -23,7 +23,7 @@ const useFundingHelpers = () => {
23
23
  StorageService.setItem(PHANTOM_REDIRECT_CONNECTION_TYPE_KEY, connectionType);
24
24
  const address = yield props.walletConnector.getAddress(props.getAddressOpts);
25
25
  if (!address) {
26
- rejectPromiseRef(internalConnectionPromiseRef, new DynamicError('No wallet address found'));
26
+ rejectPromiseRef(internalConnectionPromiseRef, new DynamicError('No wallet address found', 'no_wallet_address_found'));
27
27
  return;
28
28
  }
29
29
  resolvePromiseRef(internalConnectionPromiseRef, address);
@@ -39,7 +39,7 @@ const useFundingHelpers = () => {
39
39
  var _a;
40
40
  const walletOption = walletOptions.find(({ key }) => key === walletConnector.key);
41
41
  if (!walletOption) {
42
- return Promise.reject(new DynamicError(`Connect wallet for funding error: wallet option for ${walletConnector.key} not found`));
42
+ return Promise.reject(new DynamicError(`Connect wallet for funding error: wallet option for ${walletConnector.key} not found`, 'wallet_option_not_found'));
43
43
  }
44
44
  internalConnectionPromiseRef.current = new DeferredPromise();
45
45
  handleWalletItemClick(Object.assign(Object.assign({}, walletOption), { group: (_a = walletOption.group) !== null && _a !== void 0 ? _a : undefined, walletConnector }));
@@ -93,7 +93,7 @@ const useGetMfaToken = () => {
93
93
  }
94
94
  const errorMessage = `MFA Token required for this action: ${mfaAction}`;
95
95
  logger.logger.error(errorMessage, error);
96
- throw new utils.DynamicError(errorMessage);
96
+ throw new utils.DynamicError(errorMessage, 'mfa_token_required');
97
97
  }
98
98
  }), [shouldConsumeMfaToken]);
99
99
  };
@@ -89,7 +89,7 @@ const useGetMfaToken = () => {
89
89
  }
90
90
  const errorMessage = `MFA Token required for this action: ${mfaAction}`;
91
91
  logger.error(errorMessage, error);
92
- throw new DynamicError(errorMessage);
92
+ throw new DynamicError(errorMessage, 'mfa_token_required');
93
93
  }
94
94
  }), [shouldConsumeMfaToken]);
95
95
  };
@@ -50,10 +50,10 @@ const useSignEip7702Authorization = () => {
50
50
  // Use provided wallet or fallback to primary wallet
51
51
  const wallet = providedWallet !== null && providedWallet !== void 0 ? providedWallet : primaryWallet;
52
52
  if (!wallet) {
53
- throw new utils.DynamicError('No wallet available. Please connect a wallet first.');
53
+ throw new utils.DynamicError('No wallet available. Please connect a wallet first.', 'no_wallet_available');
54
54
  }
55
55
  if (((_a = wallet.connector) === null || _a === void 0 ? void 0 : _a.key) !== 'zerodev') {
56
- throw new utils.DynamicError('The wallet connector must be a ZeroDev connector to sign EIP-7702 authorizations.');
56
+ throw new utils.DynamicError('The wallet connector must be a ZeroDev connector to sign EIP-7702 authorizations.', 'invalid_connector_for_eip7702');
57
57
  }
58
58
  return wallet.connector.signEip7702PreAuth(providedChainId);
59
59
  }), [primaryWallet]);
@@ -46,10 +46,10 @@ const useSignEip7702Authorization = () => {
46
46
  // Use provided wallet or fallback to primary wallet
47
47
  const wallet = providedWallet !== null && providedWallet !== void 0 ? providedWallet : primaryWallet;
48
48
  if (!wallet) {
49
- throw new DynamicError('No wallet available. Please connect a wallet first.');
49
+ throw new DynamicError('No wallet available. Please connect a wallet first.', 'no_wallet_available');
50
50
  }
51
51
  if (((_a = wallet.connector) === null || _a === void 0 ? void 0 : _a.key) !== 'zerodev') {
52
- throw new DynamicError('The wallet connector must be a ZeroDev connector to sign EIP-7702 authorizations.');
52
+ throw new DynamicError('The wallet connector must be a ZeroDev connector to sign EIP-7702 authorizations.', 'invalid_connector_for_eip7702');
53
53
  }
54
54
  return wallet.connector.signEip7702PreAuth(providedChainId);
55
55
  }), [primaryWallet]);
@@ -455,11 +455,11 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
455
455
  const checkCaptchaAndConnect = React.useCallback((props) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
456
456
  var _m;
457
457
  if (props.authMode === 'signin' && client.getDynamicClient().user) {
458
- throw new utils.DynamicError('User is already logged in');
458
+ throw new utils.DynamicError('User is already logged in', 'user_is_already_logged_in');
459
459
  }
460
460
  else if ((props.authMode === 'link' || props.authMode === 'stepup') &&
461
461
  !client.getDynamicClient().user) {
462
- throw new utils.DynamicError('User is not logged in');
462
+ throw new utils.DynamicError('User is not logged in', 'user_is_not_logged_in');
463
463
  }
464
464
  if (!((_m = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _m === void 0 ? void 0 : _m.enabled)) {
465
465
  yield connectSocialAccount(props);
@@ -451,11 +451,11 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
451
451
  const checkCaptchaAndConnect = useCallback((props) => __awaiter(void 0, void 0, void 0, function* () {
452
452
  var _m;
453
453
  if (props.authMode === 'signin' && getDynamicClient().user) {
454
- throw new DynamicError('User is already logged in');
454
+ throw new DynamicError('User is already logged in', 'user_is_already_logged_in');
455
455
  }
456
456
  else if ((props.authMode === 'link' || props.authMode === 'stepup') &&
457
457
  !getDynamicClient().user) {
458
- throw new DynamicError('User is not logged in');
458
+ throw new DynamicError('User is not logged in', 'user_is_not_logged_in');
459
459
  }
460
460
  if (!((_m = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.security.hCaptcha) === null || _m === void 0 ? void 0 : _m.enabled)) {
461
461
  yield connectSocialAccount(props);
@@ -58,7 +58,7 @@ const useTransferWallet = () => {
58
58
  }, [primaryWallet]);
59
59
  return React.useCallback((props) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
60
60
  if (!user)
61
- throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN);
61
+ throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN, 'user_not_logged_in');
62
62
  const { overrideSiweStatement, walletConnector } = props;
63
63
  const args = Object.assign(Object.assign({}, props), { displaySiweStatement,
64
64
  environmentId, siweStatement: overrideSiweStatement, walletProvider: walletConnectorCore.getWalletProvider(walletConnector) });
@@ -76,7 +76,7 @@ const useTransferWallet = () => {
76
76
  }
77
77
  const userProfile = yield wallets.transferWallet(environmentId, verifyArgs);
78
78
  if (!userProfile) {
79
- throw new utils.DynamicError('Error transferring wallet.');
79
+ throw new utils.DynamicError('Error transferring wallet.', 'transferring_wallet');
80
80
  }
81
81
  updatePrimaryWallet(walletConnector, userProfile);
82
82
  const walletId = userProfile.lastVerifiedCredentialId;
@@ -54,7 +54,7 @@ const useTransferWallet = () => {
54
54
  }, [primaryWallet]);
55
55
  return useCallback((props) => __awaiter(void 0, void 0, void 0, function* () {
56
56
  if (!user)
57
- throw new DynamicError(USER_NOT_LOGGED_IN);
57
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
58
58
  const { overrideSiweStatement, walletConnector } = props;
59
59
  const args = Object.assign(Object.assign({}, props), { displaySiweStatement,
60
60
  environmentId, siweStatement: overrideSiweStatement, walletProvider: getWalletProvider(walletConnector) });
@@ -72,7 +72,7 @@ const useTransferWallet = () => {
72
72
  }
73
73
  const userProfile = yield transferWallet(environmentId, verifyArgs);
74
74
  if (!userProfile) {
75
- throw new DynamicError('Error transferring wallet.');
75
+ throw new DynamicError('Error transferring wallet.', 'transferring_wallet');
76
76
  }
77
77
  updatePrimaryWallet(walletConnector, userProfile);
78
78
  const walletId = userProfile.lastVerifiedCredentialId;
@@ -63,14 +63,14 @@ const useUpgradeEmbeddedWallet = () => {
63
63
  const upgradeEmbeddedWallet = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
64
64
  var _a, _b, _c, _d;
65
65
  if (!user)
66
- throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN);
66
+ throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN, 'user_not_logged_in');
67
67
  const userHasV2EmbeddedWallet = user.verifiedCredentials.some((credential) => { var _a; return ((_a = credential.walletProperties) === null || _a === void 0 ? void 0 : _a.version) === sdkApiCore.EmbeddedWalletVersionEnum.V2; });
68
68
  if (userHasV2EmbeddedWallet) {
69
- throw new utils.DynamicError(errors.USER_HAS_V2_EMBEDDED_WALLET);
69
+ throw new utils.DynamicError(errors.USER_HAS_V2_EMBEDDED_WALLET, 'user_has_v2_embedded_wallet');
70
70
  }
71
71
  const requiredSessionKey = shouldRegisterSessionKeysOnSignin();
72
72
  if (!requiredSessionKey) {
73
- throw new utils.DynamicError(errors.INCOMPATIBLE_SDK_VERSION);
73
+ throw new utils.DynamicError(errors.INCOMPATIBLE_SDK_VERSION, 'incompatible_sdk_version');
74
74
  }
75
75
  const sessionPublicKey = getSessionPublicKey();
76
76
  const verifyResponse = yield wallets.upgradeEmbeddedWalletToV2({
@@ -59,14 +59,14 @@ const useUpgradeEmbeddedWallet = () => {
59
59
  const upgradeEmbeddedWallet = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
60
60
  var _a, _b, _c, _d;
61
61
  if (!user)
62
- throw new DynamicError(USER_NOT_LOGGED_IN);
62
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
63
63
  const userHasV2EmbeddedWallet = user.verifiedCredentials.some((credential) => { var _a; return ((_a = credential.walletProperties) === null || _a === void 0 ? void 0 : _a.version) === EmbeddedWalletVersionEnum.V2; });
64
64
  if (userHasV2EmbeddedWallet) {
65
- throw new DynamicError(USER_HAS_V2_EMBEDDED_WALLET);
65
+ throw new DynamicError(USER_HAS_V2_EMBEDDED_WALLET, 'user_has_v2_embedded_wallet');
66
66
  }
67
67
  const requiredSessionKey = shouldRegisterSessionKeysOnSignin();
68
68
  if (!requiredSessionKey) {
69
- throw new DynamicError(INCOMPATIBLE_SDK_VERSION);
69
+ throw new DynamicError(INCOMPATIBLE_SDK_VERSION, 'incompatible_sdk_version');
70
70
  }
71
71
  const sessionPublicKey = getSessionPublicKey();
72
72
  const verifyResponse = yield upgradeEmbeddedWalletToV2({
@@ -157,7 +157,7 @@ const useUserAuth = ({ authMethod, }) => {
157
157
  const verifyResponse = yield verifyFunction();
158
158
  if (!verifyResponse) {
159
159
  yield cancelAuth();
160
- throw new utils.DynamicError('No user returned from verify function');
160
+ throw new utils.DynamicError('No user returned from verify function', 'no_user_returned_from_verify_function');
161
161
  }
162
162
  let verifiedUser;
163
163
  if (isVerifyResponse(verifyResponse)) {
@@ -153,7 +153,7 @@ const useUserAuth = ({ authMethod, }) => {
153
153
  const verifyResponse = yield verifyFunction();
154
154
  if (!verifyResponse) {
155
155
  yield cancelAuth();
156
- throw new DynamicError('No user returned from verify function');
156
+ throw new DynamicError('No user returned from verify function', 'no_user_returned_from_verify_function');
157
157
  }
158
158
  let verifiedUser;
159
159
  if (isVerifyResponse(verifyResponse)) {
@@ -89,7 +89,7 @@ const useUserDataForm = ({ onSubmit, onError, userProfile, shouldEnforcePolicies
89
89
  return;
90
90
  try {
91
91
  if (!(userProfile === null || userProfile === void 0 ? void 0 : userProfile.environmentId))
92
- throw new utils.DynamicError('Invalid environment ID');
92
+ throw new utils.DynamicError('Invalid environment ID', 'invalid_environment_id');
93
93
  setFetch(true);
94
94
  let updatedUserFields = values;
95
95
  // all kyc fields including custom are in the object, move custom fields to the object.metadata
@@ -85,7 +85,7 @@ const useUserDataForm = ({ onSubmit, onError, userProfile, shouldEnforcePolicies
85
85
  return;
86
86
  try {
87
87
  if (!(userProfile === null || userProfile === void 0 ? void 0 : userProfile.environmentId))
88
- throw new DynamicError('Invalid environment ID');
88
+ throw new DynamicError('Invalid environment ID', 'invalid_environment_id');
89
89
  setFetch(true);
90
90
  let updatedUserFields = values;
91
91
  // all kyc fields including custom are in the object, move custom fields to the object.metadata
@@ -20,14 +20,14 @@ const useUnlinkUserEmail = () => {
20
20
  const user$1 = (_b = client.getDynamicClient()) === null || _b === void 0 ? void 0 : _b.user;
21
21
  const primaryWalletId$1 = primaryWalletId.getPrimaryWalletId();
22
22
  if (!primaryWalletId$1) {
23
- throw new utils.DynamicError('Primary wallet not found');
23
+ throw new utils.DynamicError('Primary wallet not found', 'primary_wallet_not_found');
24
24
  }
25
25
  const verifiedCredential = user$1 === null || user$1 === void 0 ? void 0 : user$1.verifiedCredentials.find((credential) => credential.id === verifiedCredentialId);
26
26
  if (!verifiedCredential) {
27
- throw new utils.DynamicError('Verified credential not found');
27
+ throw new utils.DynamicError('Verified credential not found', 'verified_credential_not_found');
28
28
  }
29
29
  if (verifiedCredential.format !== sdkApiCore.JwtVerifiedCredentialFormatEnum.Email) {
30
- throw new utils.DynamicError('Verified credential is not an email');
30
+ throw new utils.DynamicError('Verified credential is not an email', 'verified_credential_is_not_an_email');
31
31
  }
32
32
  return user.unlinkEmail({
33
33
  environmentId,
@@ -16,14 +16,14 @@ const useUnlinkUserEmail = () => {
16
16
  const user = (_b = getDynamicClient()) === null || _b === void 0 ? void 0 : _b.user;
17
17
  const primaryWalletId = getPrimaryWalletId();
18
18
  if (!primaryWalletId) {
19
- throw new DynamicError('Primary wallet not found');
19
+ throw new DynamicError('Primary wallet not found', 'primary_wallet_not_found');
20
20
  }
21
21
  const verifiedCredential = user === null || user === void 0 ? void 0 : user.verifiedCredentials.find((credential) => credential.id === verifiedCredentialId);
22
22
  if (!verifiedCredential) {
23
- throw new DynamicError('Verified credential not found');
23
+ throw new DynamicError('Verified credential not found', 'verified_credential_not_found');
24
24
  }
25
25
  if (verifiedCredential.format !== JwtVerifiedCredentialFormatEnum.Email) {
26
- throw new DynamicError('Verified credential is not an email');
26
+ throw new DynamicError('Verified credential is not an email', 'verified_credential_is_not_an_email');
27
27
  }
28
28
  return unlinkEmail({
29
29
  environmentId,
@@ -56,7 +56,7 @@ const useUpdateUserWithModal = (updateUser) => {
56
56
  const { pushView } = ViewContext.useViewContext();
57
57
  const editorContext = React.useContext(UserFieldEditorContext.UserFieldEditorContext);
58
58
  if (!editorContext)
59
- throw new utils.DynamicError('useUserUpdateRequest can only be used inside the context of DynamicContextProvider');
59
+ throw new utils.DynamicError('useUserUpdateRequest can only be used inside the context of DynamicContextProvider', 'missing_dynamic_context');
60
60
  const { open: promptUserForValues } = editorContext;
61
61
  const updateUserWithModal = React.useCallback((fields, options) => new Promise((resolve, reject) => {
62
62
  // Catch invalid requests
@@ -52,7 +52,7 @@ const useUpdateUserWithModal = (updateUser) => {
52
52
  const { pushView } = useViewContext();
53
53
  const editorContext = useContext(UserFieldEditorContext);
54
54
  if (!editorContext)
55
- throw new DynamicError('useUserUpdateRequest can only be used inside the context of DynamicContextProvider');
55
+ throw new DynamicError('useUserUpdateRequest can only be used inside the context of DynamicContextProvider', 'missing_dynamic_context');
56
56
  const { open: promptUserForValues } = editorContext;
57
57
  const updateUserWithModal = useCallback((fields, options) => new Promise((resolve, reject) => {
58
58
  // Catch invalid requests
@@ -279,7 +279,7 @@ const useVerifyWallet = ({ displaySiweStatement, environmentId, projectSettings,
279
279
  }
280
280
  const authMode$1 = authMode.getAuthMode();
281
281
  if (connectedWallets.length && authMode$1 === 'connect-only') {
282
- throw new utils.DynamicError(e.message);
282
+ throw new utils.DynamicError(e.message, 'unknown');
283
283
  }
284
284
  const userRejectedRequestError = (_a = e === null || e === void 0 ? void 0 : e.message) === null || _a === void 0 ? void 0 : _a.includes('User rejected the request');
285
285
  const fallbackToConnectOnly = shouldFallbackToConnectOnly && !userRejectedRequestError;
@@ -323,7 +323,7 @@ const useVerifyWallet = ({ displaySiweStatement, environmentId, projectSettings,
323
323
  onVerifySuccess: (user) => {
324
324
  var _a;
325
325
  if (!user) {
326
- throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN);
326
+ throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN, 'user_not_logged_in');
327
327
  }
328
328
  try {
329
329
  (_a = events === null || events === void 0 ? void 0 : events.onSignedMessage) === null || _a === void 0 ? void 0 : _a.call(events, {
@@ -275,7 +275,7 @@ const useVerifyWallet = ({ displaySiweStatement, environmentId, projectSettings,
275
275
  }
276
276
  const authMode = getAuthMode();
277
277
  if (connectedWallets.length && authMode === 'connect-only') {
278
- throw new DynamicError(e.message);
278
+ throw new DynamicError(e.message, 'unknown');
279
279
  }
280
280
  const userRejectedRequestError = (_a = e === null || e === void 0 ? void 0 : e.message) === null || _a === void 0 ? void 0 : _a.includes('User rejected the request');
281
281
  const fallbackToConnectOnly = shouldFallbackToConnectOnly && !userRejectedRequestError;
@@ -319,7 +319,7 @@ const useVerifyWallet = ({ displaySiweStatement, environmentId, projectSettings,
319
319
  onVerifySuccess: (user) => {
320
320
  var _a;
321
321
  if (!user) {
322
- throw new DynamicError(USER_NOT_LOGGED_IN);
322
+ throw new DynamicError(USER_NOT_LOGGED_IN, 'user_not_logged_in');
323
323
  }
324
324
  try {
325
325
  (_a = events === null || events === void 0 ? void 0 : events.onSignedMessage) === null || _a === void 0 ? void 0 : _a.call(events, {
@@ -1,9 +1,13 @@
1
- export declare const useViewSettings: <T extends import("@dynamic-labs/sdk-api-core").SdkViewType | "wallet-list", R extends Extract<import("@dynamic-labs/sdk-api-core").SdkView, {
1
+ export declare const useViewSettings: <T extends import("@dynamic-labs/sdk-api-core").SdkViewType | "wallet-list" | "transaction-confirmation", R extends Extract<import("@dynamic-labs/sdk-api-core").SdkView, {
2
2
  type: T;
3
3
  }> | Extract<import("../../../context/DynamicContext/types").WalletListViewSettings, {
4
4
  type: T;
5
+ }> | Extract<import("../../../context/DynamicContext/types").TransactionConfirmationViewSettings, {
6
+ type: T;
5
7
  }> | undefined = Extract<import("@dynamic-labs/sdk-api-core").SdkView, {
6
8
  type: T;
7
9
  }> | Extract<import("../../../context/DynamicContext/types").WalletListViewSettings, {
8
10
  type: T;
11
+ }> | Extract<import("../../../context/DynamicContext/types").TransactionConfirmationViewSettings, {
12
+ type: T;
9
13
  }> | undefined>(viewType: T) => R;
@@ -94,7 +94,7 @@ const useWalletConnectors = ({ connectedWallets, walletConnectorOptions, setMult
94
94
  const getSelectedWallet = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
95
95
  const newWallet = wallets.find(({ id }) => id === walletId);
96
96
  if (!newWallet) {
97
- throw new utils.DynamicError(`Wallet with id: ${walletId} not found`);
97
+ throw new utils.DynamicError(`Wallet with id: ${walletId} not found`, 'wallet_with_id_not_found');
98
98
  }
99
99
  return newWallet;
100
100
  }), [wallets]);
@@ -90,7 +90,7 @@ const useWalletConnectors = ({ connectedWallets, walletConnectorOptions, setMult
90
90
  const getSelectedWallet = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
91
91
  const newWallet = wallets.find(({ id }) => id === walletId);
92
92
  if (!newWallet) {
93
- throw new DynamicError(`Wallet with id: ${walletId} not found`);
93
+ throw new DynamicError(`Wallet with id: ${walletId} not found`, 'wallet_with_id_not_found');
94
94
  }
95
95
  return newWallet;
96
96
  }), [wallets]);
@@ -111,7 +111,7 @@ const useWalletOptions = () => {
111
111
  const errorMessage = chain
112
112
  ? `No wallet found with key "${walletKey}" for chain "${chain}".`
113
113
  : `No wallet found with key "${walletKey}".`;
114
- reject(new utils.DynamicError(errorMessage));
114
+ reject(new utils.DynamicError(errorMessage, 'wallet_not_found'));
115
115
  return;
116
116
  }
117
117
  addListenersToHandleWalletSelectionPromise({
@@ -107,7 +107,7 @@ const useWalletOptions = () => {
107
107
  const errorMessage = chain
108
108
  ? `No wallet found with key "${walletKey}" for chain "${chain}".`
109
109
  : `No wallet found with key "${walletKey}".`;
110
- reject(new DynamicError(errorMessage));
110
+ reject(new DynamicError(errorMessage, 'wallet_not_found'));
111
111
  return;
112
112
  }
113
113
  addListenersToHandleWalletSelectionPromise({
@@ -24,7 +24,7 @@ const BridgeNextWalletConnectionView = () => {
24
24
  const { setShowAuthFlow, bridgeChainsToConnect } = useInternalDynamicContext.useInternalDynamicContext();
25
25
  const { pushView } = ViewContext.useViewContext();
26
26
  if (!(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length)) {
27
- throw new utils.DynamicError('No wallets to connect');
27
+ throw new utils.DynamicError('No wallets to connect', 'no_wallets_to_connect');
28
28
  }
29
29
  const [nextWalletToConnect] = bridgeChainsToConnect;
30
30
  const { chain } = nextWalletToConnect;
@@ -20,7 +20,7 @@ const BridgeNextWalletConnectionView = () => {
20
20
  const { setShowAuthFlow, bridgeChainsToConnect } = useInternalDynamicContext();
21
21
  const { pushView } = useViewContext();
22
22
  if (!(bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length)) {
23
- throw new DynamicError('No wallets to connect');
23
+ throw new DynamicError('No wallets to connect', 'no_wallets_to_connect');
24
24
  }
25
25
  const [nextWalletToConnect] = bridgeChainsToConnect;
26
26
  const { chain } = nextWalletToConnect;
@@ -59,7 +59,7 @@ const initExport = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ i
59
59
  const handleExportInitCheck = ({ user, wallet, }) => {
60
60
  var _a, _b, _c, _d, _e;
61
61
  if (!user) {
62
- throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN);
62
+ throw new utils.DynamicError(errors.USER_NOT_LOGGED_IN, 'user_not_logged_in');
63
63
  }
64
64
  if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector) ||
65
65
  !(wallet === null || wallet === void 0 ? void 0 : wallet.id) ||
@@ -74,7 +74,7 @@ const handleExportInitCheck = ({ user, wallet, }) => {
74
74
  const organizationId = (_e = walletProperties === null || walletProperties === void 0 ? void 0 : walletProperties.turnkeySubOrganizationId) !== null && _e !== void 0 ? _e : undefined;
75
75
  if (!organizationId ||
76
76
  (turnkeyHDWalletId === undefined && privateKeyId === undefined)) {
77
- throw new utils.DynamicError('Invalid token!');
77
+ throw new utils.DynamicError('Invalid token!', 'invalid_token');
78
78
  }
79
79
  return {
80
80
  connector,