@dynamic-labs/sdk-react-core 4.48.2 → 4.50.1

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 (117) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +12 -12
  5. package/src/index.cjs +6 -4
  6. package/src/index.d.ts +1 -0
  7. package/src/index.js +3 -2
  8. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -1
  9. package/src/lib/context/DynamicContext/DynamicContext.js +1 -1
  10. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +10 -0
  11. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +10 -0
  12. package/src/lib/context/OnrampContext/OnrampContext.cjs +4 -2
  13. package/src/lib/context/OnrampContext/OnrampContext.d.ts +1 -0
  14. package/src/lib/context/OnrampContext/OnrampContext.js +4 -2
  15. package/src/lib/context/OnrampContext/types.d.ts +1 -0
  16. package/src/lib/context/OnrampContext/utils/getOnrampProviders.cjs +2 -1
  17. package/src/lib/context/OnrampContext/utils/getOnrampProviders.d.ts +1 -1
  18. package/src/lib/context/OnrampContext/utils/getOnrampProviders.js +2 -1
  19. package/src/lib/context/PhantomRedirectContext/PhantomRedirectContext.cjs +38 -6
  20. package/src/lib/context/PhantomRedirectContext/PhantomRedirectContext.d.ts +2 -2
  21. package/src/lib/context/PhantomRedirectContext/PhantomRedirectContext.js +39 -8
  22. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.cjs +108 -16
  23. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.js +108 -16
  24. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  25. package/src/lib/data/api/onramp/onramp.cjs +2 -1
  26. package/src/lib/data/api/onramp/onramp.d.ts +2 -1
  27. package/src/lib/data/api/onramp/onramp.js +2 -1
  28. package/src/lib/events/dynamicEvents.cjs +2 -0
  29. package/src/lib/events/dynamicEvents.d.ts +1 -1
  30. package/src/lib/events/dynamicEvents.js +2 -0
  31. package/src/lib/shared/assets/backup-waas.cjs +4 -4
  32. package/src/lib/shared/assets/backup-waas.js +4 -4
  33. package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +4 -0
  34. package/src/lib/styles/index.shadow.cjs +1 -1
  35. package/src/lib/styles/index.shadow.js +1 -1
  36. package/src/lib/utils/constants/authViewLayoutChecks.cjs +13 -0
  37. package/src/lib/utils/constants/authViewLayoutChecks.js +13 -0
  38. package/src/lib/utils/functions/generateMessages/index.cjs +11 -2
  39. package/src/lib/utils/functions/generateMessages/index.js +11 -2
  40. package/src/lib/utils/functions/getVerifyArgs/getVerifyArgs.cjs +27 -1
  41. package/src/lib/utils/functions/getVerifyArgs/getVerifyArgs.js +27 -1
  42. package/src/lib/utils/functions/index.d.ts +0 -1
  43. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +1 -1
  44. package/src/lib/utils/hooks/index.d.ts +2 -0
  45. package/src/lib/utils/hooks/useAuthenticatePasskeyMFA/useAuthenticatePasskeyMFA.cjs +5 -1
  46. package/src/lib/utils/hooks/useAuthenticatePasskeyMFA/useAuthenticatePasskeyMFA.js +5 -1
  47. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +35 -5
  48. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.d.ts +1 -0
  49. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +35 -5
  50. package/src/lib/utils/hooks/useFunding/useFunding.d.ts +1 -0
  51. package/src/lib/utils/hooks/useOnramp/useOnramp.cjs +14 -29
  52. package/src/lib/utils/hooks/useOnramp/useOnramp.d.ts +14 -18
  53. package/src/lib/utils/hooks/useOnramp/useOnramp.js +14 -29
  54. package/src/lib/utils/hooks/usePhantomRedirectEvents/index.d.ts +1 -0
  55. package/src/lib/utils/hooks/usePhantomRedirectEvents/usePhantomRedirectEvents.cjs +65 -0
  56. package/src/lib/utils/hooks/usePhantomRedirectEvents/usePhantomRedirectEvents.d.ts +36 -0
  57. package/src/lib/utils/hooks/usePhantomRedirectEvents/usePhantomRedirectEvents.js +61 -0
  58. package/src/lib/utils/hooks/useSetWalletConnectorFetchers/useSetWalletConnectorFetchers.cjs +17 -14
  59. package/src/lib/utils/hooks/useSetWalletConnectorFetchers/useSetWalletConnectorFetchers.js +17 -14
  60. package/src/lib/utils/hooks/useSignInWithPasskey/useSignInWithPasskey.cjs +106 -1
  61. package/src/lib/utils/hooks/useSignInWithPasskey/useSignInWithPasskey.js +106 -1
  62. package/src/lib/utils/hooks/useSmartWallets/useSmartWallets.cjs +1 -1
  63. package/src/lib/utils/hooks/useSmartWallets/useSmartWallets.js +1 -1
  64. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +1 -1
  65. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +1 -1
  66. package/src/lib/utils/hooks/useWalletBackup/index.d.ts +1 -0
  67. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.cjs +339 -0
  68. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.d.ts +49 -0
  69. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.js +332 -0
  70. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +2 -2
  71. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +2 -2
  72. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.cjs +1 -0
  73. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.js +1 -0
  74. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +13 -0
  75. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +14 -1
  76. package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.cjs +9 -6
  77. package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.js +9 -6
  78. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.cjs +13 -0
  79. package/src/lib/views/WalletUpgradeFlowView/WalletUpgradeFlowView.js +14 -1
  80. package/src/lib/views/WalletUsedView/WalletUsedView.cjs +1 -0
  81. package/src/lib/views/WalletUsedView/WalletUsedView.js +1 -0
  82. package/src/lib/views/viewToComponentMap.cjs +15 -3
  83. package/src/lib/views/viewToComponentMap.d.ts +6 -0
  84. package/src/lib/views/viewToComponentMap.js +15 -3
  85. package/src/lib/widgets/DynamicWidget/components/ActiveWalletBalance/TokenBalanceItem/TokenBalanceItem.cjs +1 -1
  86. package/src/lib/widgets/DynamicWidget/components/ActiveWalletBalance/TokenBalanceItem/TokenBalanceItem.js +1 -1
  87. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/mapViewToComponent.cjs +97 -3
  88. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/mapViewToComponent.js +97 -3
  89. package/src/lib/widgets/DynamicWidget/views/AccountAndSecuritySettingsView/EmbeddedWalletExportSection/EmbeddedWalletExportSection.cjs +16 -14
  90. package/src/lib/widgets/DynamicWidget/views/AccountAndSecuritySettingsView/EmbeddedWalletExportSection/EmbeddedWalletExportSection.js +16 -14
  91. package/src/lib/widgets/DynamicWidget/views/CryptoComOnramp/CryptoComOnramp.cjs +3 -1
  92. package/src/lib/widgets/DynamicWidget/views/CryptoComOnramp/CryptoComOnramp.d.ts +1 -0
  93. package/src/lib/widgets/DynamicWidget/views/CryptoComOnramp/CryptoComOnramp.js +3 -1
  94. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/BackupStepper.cjs +37 -0
  95. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/BackupStepper.d.ts +7 -0
  96. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/BackupStepper.js +33 -0
  97. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupCloudProviderView.cjs +49 -0
  98. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupCloudProviderView.d.ts +2 -0
  99. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupCloudProviderView.js +45 -0
  100. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupDownloadView.cjs +53 -0
  101. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupDownloadView.d.ts +2 -0
  102. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupDownloadView.js +49 -0
  103. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupInfoView.cjs +9 -18
  104. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupInfoView.js +10 -19
  105. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupProgressView.cjs +52 -0
  106. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupProgressView.d.ts +2 -0
  107. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupProgressView.js +48 -0
  108. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupSuccessView.cjs +131 -0
  109. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupSuccessView.d.ts +5 -0
  110. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupSuccessView.js +127 -0
  111. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupView.cjs +45 -104
  112. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/WaasBackupView.js +47 -106
  113. package/src/lib/widgets/DynamicWidget/views/WaasBackupView/index.d.ts +6 -1
  114. package/src/lib/utils/functions/downloadFile/downloadFile.cjs +0 -15
  115. package/src/lib/utils/functions/downloadFile/downloadFile.d.ts +0 -1
  116. package/src/lib/utils/functions/downloadFile/downloadFile.js +0 -11
  117. package/src/lib/utils/functions/downloadFile/index.d.ts +0 -1
@@ -59,6 +59,12 @@ const viewsThatHideHeader = [
59
59
  'waas-upgrade-view',
60
60
  'wallet-upgrade-flow-view',
61
61
  'account-upgraded',
62
+ 'waas-backup-view',
63
+ 'waas-backup-info-view',
64
+ 'waas-backup-cloud-provider-view',
65
+ 'waas-backup-download-view',
66
+ 'waas-backup-progress-view',
67
+ 'waas-backup-success-view',
62
68
  ];
63
69
  const viewsThatShowConnectedWalletProgress = [
64
70
  'wallet-list',
@@ -105,6 +111,7 @@ const viewsThatPreventModalClose = [
105
111
  'backup-unsuccessful',
106
112
  'wallet-upgrade-flow-view',
107
113
  'wallet-delegation-view',
114
+ 'waas-backup-progress-view',
108
115
  ];
109
116
  /**
110
117
  * When hasPendingMfaAction returns true, user is not able to close the modal in these views at all
@@ -140,6 +147,12 @@ const viewsThatHideCloseButton = [
140
147
  'mfa-recovery',
141
148
  'user-delete-account',
142
149
  'backup-unsuccessful',
150
+ 'waas-backup-view',
151
+ 'waas-backup-info-view',
152
+ 'waas-backup-cloud-provider-view',
153
+ 'waas-backup-download-view',
154
+ 'waas-backup-progress-view',
155
+ 'waas-backup-success-view',
143
156
  ];
144
157
 
145
158
  exports.mfaViewsThatPreventModalClose = mfaViewsThatPreventModalClose;
@@ -55,6 +55,12 @@ const viewsThatHideHeader = [
55
55
  'waas-upgrade-view',
56
56
  'wallet-upgrade-flow-view',
57
57
  'account-upgraded',
58
+ 'waas-backup-view',
59
+ 'waas-backup-info-view',
60
+ 'waas-backup-cloud-provider-view',
61
+ 'waas-backup-download-view',
62
+ 'waas-backup-progress-view',
63
+ 'waas-backup-success-view',
58
64
  ];
59
65
  const viewsThatShowConnectedWalletProgress = [
60
66
  'wallet-list',
@@ -101,6 +107,7 @@ const viewsThatPreventModalClose = [
101
107
  'backup-unsuccessful',
102
108
  'wallet-upgrade-flow-view',
103
109
  'wallet-delegation-view',
110
+ 'waas-backup-progress-view',
104
111
  ];
105
112
  /**
106
113
  * When hasPendingMfaAction returns true, user is not able to close the modal in these views at all
@@ -136,6 +143,12 @@ const viewsThatHideCloseButton = [
136
143
  'mfa-recovery',
137
144
  'user-delete-account',
138
145
  'backup-unsuccessful',
146
+ 'waas-backup-view',
147
+ 'waas-backup-info-view',
148
+ 'waas-backup-cloud-provider-view',
149
+ 'waas-backup-download-view',
150
+ 'waas-backup-progress-view',
151
+ 'waas-backup-success-view',
139
152
  ];
140
153
 
141
154
  export { mfaViewsThatPreventModalClose, viewsThatHideCloseButton, viewsThatHideHeader, viewsThatHideHelpContent, viewsThatPreventBorderBelowHeader, viewsThatPreventModalClose, viewsThatShowConnectedWalletProgress, viewsThatShowDynamicFooter, viewsWithWalletListType };
@@ -38,10 +38,19 @@ const generateMessages = (publicWalletAddress, walletConnector, nonce, projectEn
38
38
  const chainId = yield getChainIdForMessage(walletConnector);
39
39
  const parsedAddress = walletConnector.parseAddress(publicWalletAddress);
40
40
  const currentUrl = utils.PlatformService.getUrl();
41
+ // For native mobile, getDisplayOrigin() returns the app's web domain (e.g., 'demo.dynamic.xyz')
42
+ // which is needed for valid SIWE messages instead of the deep link scheme we get from getUrl()
43
+ const displayOrigin = utils.PlatformService.isNativeMobile
44
+ ? utils.PlatformService.getDisplayOrigin()
45
+ : undefined;
46
+ const domain = displayOrigin !== null && displayOrigin !== void 0 ? displayOrigin : currentUrl.host;
47
+ const uri = displayOrigin
48
+ ? `https://${displayOrigin}`
49
+ : currentUrl.origin + currentUrl.pathname;
41
50
  const messageToSign = multiWallet.generateMessageToSign({
42
51
  blockchain: walletConnector.connectedChain,
43
52
  chainId: chainId,
44
- domain: currentUrl.host,
53
+ domain,
45
54
  nonce,
46
55
  // The SIWE parser library used to validate signed messages for EVM/Ethereum
47
56
  // checks that an address is in EIP55 format, so make sure we do that here.
@@ -52,7 +61,7 @@ const generateMessages = (publicWalletAddress, walletConnector, nonce, projectEn
52
61
  statement: displaySiweStatement
53
62
  ? siweStatement.replace(/(\r\n|\n|\r)/gm, ' ').trim()
54
63
  : undefined,
55
- uri: currentUrl.origin + currentUrl.pathname,
64
+ uri,
56
65
  });
57
66
  const signedMessage = yield walletConnector.proveOwnership(parsedAddress, messageToSign);
58
67
  if (!signedMessage) {
@@ -34,10 +34,19 @@ const generateMessages = (publicWalletAddress, walletConnector, nonce, projectEn
34
34
  const chainId = yield getChainIdForMessage(walletConnector);
35
35
  const parsedAddress = walletConnector.parseAddress(publicWalletAddress);
36
36
  const currentUrl = PlatformService.getUrl();
37
+ // For native mobile, getDisplayOrigin() returns the app's web domain (e.g., 'demo.dynamic.xyz')
38
+ // which is needed for valid SIWE messages instead of the deep link scheme we get from getUrl()
39
+ const displayOrigin = PlatformService.isNativeMobile
40
+ ? PlatformService.getDisplayOrigin()
41
+ : undefined;
42
+ const domain = displayOrigin !== null && displayOrigin !== void 0 ? displayOrigin : currentUrl.host;
43
+ const uri = displayOrigin
44
+ ? `https://${displayOrigin}`
45
+ : currentUrl.origin + currentUrl.pathname;
37
46
  const messageToSign = generateMessageToSign({
38
47
  blockchain: walletConnector.connectedChain,
39
48
  chainId: chainId,
40
- domain: currentUrl.host,
49
+ domain,
41
50
  nonce,
42
51
  // The SIWE parser library used to validate signed messages for EVM/Ethereum
43
52
  // checks that an address is in EIP55 format, so make sure we do that here.
@@ -48,7 +57,7 @@ const generateMessages = (publicWalletAddress, walletConnector, nonce, projectEn
48
57
  statement: displaySiweStatement
49
58
  ? siweStatement.replace(/(\r\n|\n|\r)/gm, ' ').trim()
50
59
  : undefined,
51
- uri: currentUrl.origin + currentUrl.pathname,
60
+ uri,
52
61
  });
53
62
  const signedMessage = yield walletConnector.proveOwnership(parsedAddress, messageToSign);
54
63
  if (!signedMessage) {
@@ -4,6 +4,7 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var logger = require('../../../shared/logger.cjs');
7
8
  var index = require('../generateMessages/index.cjs');
8
9
  var nonce = require('../../../store/state/nonce/nonce.cjs');
9
10
 
@@ -16,12 +17,28 @@ const getVerifyArgs = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* (
16
17
  // This could manifest in users being directed to the app store
17
18
  // instead of the actual wallet app.
18
19
  const chain = walletConnector.connectedChain;
20
+ logger.logger.logVerboseTroubleshootingMessage('[getVerifyArgs] called', {
21
+ chain,
22
+ displaySiweStatement,
23
+ environmentId,
24
+ hasMessageToSignOverride: Boolean(messageToSignOverride),
25
+ hasSignedMessageOverride: Boolean(signedMessageOverride),
26
+ publicWalletAddress,
27
+ siweStatement,
28
+ walletConnectorKey: walletConnector.key,
29
+ });
19
30
  if (signedMessageOverride && messageToSignOverride) {
31
+ logger.logger.logVerboseTroubleshootingMessage('[getVerifyArgs] using overrides', {
32
+ messageToSignOverride,
33
+ messageToSignOverrideLength: messageToSignOverride.length,
34
+ signedMessageOverride,
35
+ signedMessageOverrideLength: signedMessageOverride.length,
36
+ });
20
37
  const [network, additionalWalletAddresses] = yield Promise.all([
21
38
  walletConnector.getNetwork(true),
22
39
  walletConnector.getAdditionalAddresses(publicWalletAddress),
23
40
  ]);
24
- return {
41
+ const result = {
25
42
  additionalWalletAddresses,
26
43
  chain,
27
44
  messageToSign: messageToSignOverride,
@@ -32,6 +49,15 @@ const getVerifyArgs = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* (
32
49
  walletName: walletConnector.key,
33
50
  walletProvider,
34
51
  };
52
+ logger.logger.logVerboseTroubleshootingMessage('[getVerifyArgs] returning with overrides', {
53
+ chain: result.chain,
54
+ messageToSign: result.messageToSign,
55
+ network: result.network,
56
+ publicWalletAddress: result.publicWalletAddress,
57
+ signedMessage: result.signedMessage,
58
+ walletName: result.walletName,
59
+ });
60
+ return result;
35
61
  }
36
62
  const nonce$1 = nonce.consumeNonce();
37
63
  // generate message to sign and then initiate signing step to prove ownership
@@ -1,5 +1,6 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { logger } from '../../../shared/logger.js';
3
4
  import { generateMessages } from '../generateMessages/index.js';
4
5
  import { consumeNonce } from '../../../store/state/nonce/nonce.js';
5
6
 
@@ -12,12 +13,28 @@ const getVerifyArgs = (_a) => __awaiter(void 0, [_a], void 0, function* ({ walle
12
13
  // This could manifest in users being directed to the app store
13
14
  // instead of the actual wallet app.
14
15
  const chain = walletConnector.connectedChain;
16
+ logger.logVerboseTroubleshootingMessage('[getVerifyArgs] called', {
17
+ chain,
18
+ displaySiweStatement,
19
+ environmentId,
20
+ hasMessageToSignOverride: Boolean(messageToSignOverride),
21
+ hasSignedMessageOverride: Boolean(signedMessageOverride),
22
+ publicWalletAddress,
23
+ siweStatement,
24
+ walletConnectorKey: walletConnector.key,
25
+ });
15
26
  if (signedMessageOverride && messageToSignOverride) {
27
+ logger.logVerboseTroubleshootingMessage('[getVerifyArgs] using overrides', {
28
+ messageToSignOverride,
29
+ messageToSignOverrideLength: messageToSignOverride.length,
30
+ signedMessageOverride,
31
+ signedMessageOverrideLength: signedMessageOverride.length,
32
+ });
16
33
  const [network, additionalWalletAddresses] = yield Promise.all([
17
34
  walletConnector.getNetwork(true),
18
35
  walletConnector.getAdditionalAddresses(publicWalletAddress),
19
36
  ]);
20
- return {
37
+ const result = {
21
38
  additionalWalletAddresses,
22
39
  chain,
23
40
  messageToSign: messageToSignOverride,
@@ -28,6 +45,15 @@ const getVerifyArgs = (_a) => __awaiter(void 0, [_a], void 0, function* ({ walle
28
45
  walletName: walletConnector.key,
29
46
  walletProvider,
30
47
  };
48
+ logger.logVerboseTroubleshootingMessage('[getVerifyArgs] returning with overrides', {
49
+ chain: result.chain,
50
+ messageToSign: result.messageToSign,
51
+ network: result.network,
52
+ publicWalletAddress: result.publicWalletAddress,
53
+ signedMessage: result.signedMessage,
54
+ walletName: result.walletName,
55
+ });
56
+ return result;
31
57
  }
32
58
  const nonce = consumeNonce();
33
59
  // generate message to sign and then initiate signing step to prove ownership
@@ -62,7 +62,6 @@ export * from './hasEmbeddedWallet';
62
62
  export * from './getEmbeddedWalletAuthHandler';
63
63
  export * from './getEmbeddedWalletSessionExpiration';
64
64
  export * from './serializeWalletConnectors';
65
- export * from './downloadFile';
66
65
  export * from './getSupportedCountriesForVerificationFromProjectSettings';
67
66
  export * from './getDefaultCountriesIfEmpty';
68
67
  export * from './getPlatformForConnector';
@@ -4,5 +4,5 @@ type DynamicEventListener<E extends keyof DynamicEvents> = (...args: EventArgs<D
4
4
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
5
5
  export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents | keyof import("../../../../events/multiWallet").MultiWalletInternalEvents | "tokenBalancesChanged" | "userProfileUpdated" | "walletConnectedForFunding">(event: E, listener: DynamicEventListener<E>) => void;
6
6
  /** Allows subscribing to dynamic events directly inside components with a hook */
7
- export declare const useDynamicEvents: <E extends "authFailure" | "authInit" | "logout" | "mfaCompletionSuccess" | "mfaCompletionFailure" | "authFlowOpen" | "authFlowClose" | "authFlowCancelled" | "walletTabSelected" | "emailVerificationResult" | "smsVerificationResult" | "walletAdded" | "walletRemoved" | "primaryWalletChanged" | "primaryWalletNetworkChanged" | "userWalletsChanged" | "walletConnectionFailed" | "walletConnectionQrCodeReady" | "embeddedWalletCreated" | "walletConnectedForFunding">(event: E, listener: DynamicEventListener<E>) => void;
7
+ export declare const useDynamicEvents: <E extends "authFailure" | "authInit" | "logout" | "mfaCompletionSuccess" | "mfaCompletionFailure" | "authFlowOpen" | "authFlowClose" | "authFlowCancelled" | "walletTabSelected" | "emailVerificationResult" | "smsVerificationResult" | "walletAdded" | "walletRemoved" | "primaryWalletChanged" | "primaryWalletNetworkChanged" | "userWalletsChanged" | "walletConnectionFailed" | "walletConnectionQrCodeReady" | "embeddedWalletCreated" | "embeddedWalletRevealCompleted" | "embeddedWalletRevealFailed" | "walletConnectedForFunding">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -96,3 +96,5 @@ export { useUpgradeToDynamicWaasFlow } from './useUpgradeToDynamicWaasFlow';
96
96
  export { useGetMfaToken } from './useGetMfaToken';
97
97
  export { useIsMfaRequiredForAction } from './useIsMfaRequiredForAction';
98
98
  export { useWalletDelegation } from './useWalletDelegation';
99
+ export { isWalletBackedUp, useBackupWallets, useWalletBackup, } from './useWalletBackup';
100
+ export type { WalletBackupStatus, WalletOperationState, WalletToBackup, WalletWithBackupStatus, } from './useWalletBackup';
@@ -6,6 +6,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
7
  var React = require('react');
8
8
  var client = require('@dynamic-labs-sdk/client');
9
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
9
10
 
10
11
  /**
11
12
  * Authenticate passkey for MFA
@@ -31,7 +32,10 @@ var client = require('@dynamic-labs-sdk/client');
31
32
  */
32
33
  const useAuthenticatePasskeyMFA = () => React.useCallback((props) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
33
34
  const result = yield client.authenticatePasskeyMFA(props);
35
+ dynamicEvents.dynamicEvents.emit('mfaCompletionSuccess', {
36
+ mfaToken: result.mfaToken,
37
+ });
34
38
  return result.mfaToken;
35
- }), []);
39
+ }), [dynamicEvents.dynamicEvents]);
36
40
 
37
41
  exports.useAuthenticatePasskeyMFA = useAuthenticatePasskeyMFA;
@@ -2,6 +2,7 @@
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { useCallback } from 'react';
4
4
  import { authenticatePasskeyMFA } from '@dynamic-labs-sdk/client';
5
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
5
6
 
6
7
  /**
7
8
  * Authenticate passkey for MFA
@@ -27,7 +28,10 @@ import { authenticatePasskeyMFA } from '@dynamic-labs-sdk/client';
27
28
  */
28
29
  const useAuthenticatePasskeyMFA = () => useCallback((props) => __awaiter(void 0, void 0, void 0, function* () {
29
30
  const result = yield authenticatePasskeyMFA(props);
31
+ dynamicEvents.emit('mfaCompletionSuccess', {
32
+ mfaToken: result.mfaToken,
33
+ });
30
34
  return result.mfaToken;
31
- }), []);
35
+ }), [dynamicEvents]);
32
36
 
33
37
  export { useAuthenticatePasskeyMFA };
@@ -85,6 +85,11 @@ require('qrcode');
85
85
  require('formik');
86
86
  require('../useSubdomainCheck/useSubdomainCheck.cjs');
87
87
  require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
88
+ var apiUrl = require('../../constants/waas/apiUrl.cjs');
89
+ var useClientSessionKeys = require('../useClientSessionKeys/useClientSessionKeys.cjs');
90
+ var useGetMfaToken = require('../useGetMfaToken/useGetMfaToken.cjs');
91
+ var useRefreshUser = require('../useRefreshUser/useRefreshUser.cjs');
92
+ var constants = require('./constants.cjs');
88
93
  require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
89
94
  require('../../../context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
90
95
  require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
@@ -97,11 +102,6 @@ require('../../../context/FooterAnimationContext/index.cjs');
97
102
  require('../../../views/MfaChooseDeviceView/useGetMfaOptions/useGetMfaOptions.cjs');
98
103
  require('../../../context/PasskeyContext/PasskeyContext.cjs');
99
104
  require('../../../context/OnrampContext/OnrampContext.cjs');
100
- var useRefreshUser = require('../useRefreshUser/useRefreshUser.cjs');
101
- var apiUrl = require('../../constants/waas/apiUrl.cjs');
102
- var useClientSessionKeys = require('../useClientSessionKeys/useClientSessionKeys.cjs');
103
- var useGetMfaToken = require('../useGetMfaToken/useGetMfaToken.cjs');
104
- var constants = require('./constants.cjs');
105
105
  require('../../../store/state/sendBalances.cjs');
106
106
  require('../../../store/state/connectorsInitializing/connectorsInitializing.cjs');
107
107
  require('../../../components/OverlayCardBase/OverlayCardTarget/OverlayCardTarget.cjs');
@@ -491,7 +491,36 @@ const useDynamicWaas = () => {
491
491
  throw new utils.DynamicError('Upgrade failed, please try again.');
492
492
  }
493
493
  }), [environmentId, getWaasWalletConnector, primaryWallet, refresh]);
494
+ /**
495
+ * Returns WaaS wallet instances from `userWallets` filtered by `key === 'dynamicwaas'`.
496
+ *
497
+ * Note: This returns runtime wallet instances which may not include all WaaS wallets.
498
+ * For example, an EVM WaaS wallet used as a signer for a smart wallet (e.g., ZeroDev)
499
+ * may appear in `userWallets` with a different key (e.g., 'zerodev') rather than 'dynamicwaas'.
500
+ *
501
+ * Use `getWaasWalletsByCredentials` if you need to identify all WaaS wallets regardless
502
+ * of how they're represented at runtime.
503
+ */
494
504
  const getWaasWallets = React.useCallback(() => userWallets.filter((w) => w.key === 'dynamicwaas'), [userWallets]);
505
+ /**
506
+ * Returns all WaaS wallet credentials based on `verifiedCredentials` (the backend source of truth).
507
+ *
508
+ * Unlike `getWaasWallets`, this method identifies WaaS wallets by their credential's
509
+ * `walletName === 'dynamicwaas'`, which is reliable regardless of how the wallet is
510
+ * instantiated at runtime. This is useful for operations like backup and key share export
511
+ * where you need to identify all WaaS wallets, including those used as signers for
512
+ * smart wallets (e.g., ZeroDev, EIP-7702).
513
+ *
514
+ * @returns Array of WaaS wallet credentials with valid address and chain.
515
+ */
516
+ const getWaasWalletsByCredentials = React.useCallback(() => {
517
+ if (!(user === null || user === void 0 ? void 0 : user.verifiedCredentials))
518
+ return [];
519
+ return user.verifiedCredentials.filter((cred) => cred.walletName === 'dynamicwaas' &&
520
+ cred.address &&
521
+ cred.chain &&
522
+ values.VerifiedCredentialNameToChainEnum[cred.chain]);
523
+ }, [user === null || user === void 0 ? void 0 : user.verifiedCredentials]);
495
524
  const processSignOnWalletSettings = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
496
525
  var _j;
497
526
  if (!(user === null || user === void 0 ? void 0 : user.verifiedCredentials)) {
@@ -555,6 +584,7 @@ const useDynamicWaas = () => {
555
584
  dynamicWaasIsEnabled,
556
585
  getWaasWalletConnector,
557
586
  getWaasWallets,
587
+ getWaasWalletsByCredentials,
558
588
  importPrivateKey,
559
589
  initializeWaas,
560
590
  needsAutoCreateWalletChains,
@@ -22,6 +22,7 @@ export declare const useDynamicWaas: () => {
22
22
  dynamicWaasIsEnabled: boolean;
23
23
  getWaasWalletConnector: (chainName: string) => IDynamicWaasConnector | undefined;
24
24
  getWaasWallets: () => Wallet<WalletConnectorCore.WalletConnector>[];
25
+ getWaasWalletsByCredentials: () => import("@dynamic-labs/sdk-api-core").JwtVerifiedCredential[];
25
26
  importPrivateKey: ({ chainName, privateKey, }: {
26
27
  chainName: ChainEnum;
27
28
  privateKey: string;
@@ -81,6 +81,11 @@ import 'qrcode';
81
81
  import 'formik';
82
82
  import '../useSubdomainCheck/useSubdomainCheck.js';
83
83
  import '../../../context/WalletGroupContext/WalletGroupContext.js';
84
+ import { DEFAULT_WAAS_API_URL } from '../../constants/waas/apiUrl.js';
85
+ import { useClientSessionKeys } from '../useClientSessionKeys/useClientSessionKeys.js';
86
+ import { useGetMfaToken } from '../useGetMfaToken/useGetMfaToken.js';
87
+ import { useRefreshUser } from '../useRefreshUser/useRefreshUser.js';
88
+ import { DYNAMIC_WAAS_CONNECTOR_NOT_FOUND_ERROR, NO_ENABLED_CHAINS_ERROR, INVALID_CHAINS_ERROR, WALLET_CREATION_FAILED_ERROR } from './constants.js';
84
89
  import '../../../context/IpConfigurationContext/IpConfigurationContext.js';
85
90
  import '../../../context/ConnectWithOtpContext/ConnectWithOtpContext.js';
86
91
  import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
@@ -93,11 +98,6 @@ import '../../../context/FooterAnimationContext/index.js';
93
98
  import '../../../views/MfaChooseDeviceView/useGetMfaOptions/useGetMfaOptions.js';
94
99
  import '../../../context/PasskeyContext/PasskeyContext.js';
95
100
  import '../../../context/OnrampContext/OnrampContext.js';
96
- import { useRefreshUser } from '../useRefreshUser/useRefreshUser.js';
97
- import { DEFAULT_WAAS_API_URL } from '../../constants/waas/apiUrl.js';
98
- import { useClientSessionKeys } from '../useClientSessionKeys/useClientSessionKeys.js';
99
- import { useGetMfaToken } from '../useGetMfaToken/useGetMfaToken.js';
100
- import { DYNAMIC_WAAS_CONNECTOR_NOT_FOUND_ERROR, NO_ENABLED_CHAINS_ERROR, INVALID_CHAINS_ERROR, WALLET_CREATION_FAILED_ERROR } from './constants.js';
101
101
  import '../../../store/state/sendBalances.js';
102
102
  import '../../../store/state/connectorsInitializing/connectorsInitializing.js';
103
103
  import '../../../components/OverlayCardBase/OverlayCardTarget/OverlayCardTarget.js';
@@ -487,7 +487,36 @@ const useDynamicWaas = () => {
487
487
  throw new DynamicError('Upgrade failed, please try again.');
488
488
  }
489
489
  }), [environmentId, getWaasWalletConnector, primaryWallet, refresh]);
490
+ /**
491
+ * Returns WaaS wallet instances from `userWallets` filtered by `key === 'dynamicwaas'`.
492
+ *
493
+ * Note: This returns runtime wallet instances which may not include all WaaS wallets.
494
+ * For example, an EVM WaaS wallet used as a signer for a smart wallet (e.g., ZeroDev)
495
+ * may appear in `userWallets` with a different key (e.g., 'zerodev') rather than 'dynamicwaas'.
496
+ *
497
+ * Use `getWaasWalletsByCredentials` if you need to identify all WaaS wallets regardless
498
+ * of how they're represented at runtime.
499
+ */
490
500
  const getWaasWallets = useCallback(() => userWallets.filter((w) => w.key === 'dynamicwaas'), [userWallets]);
501
+ /**
502
+ * Returns all WaaS wallet credentials based on `verifiedCredentials` (the backend source of truth).
503
+ *
504
+ * Unlike `getWaasWallets`, this method identifies WaaS wallets by their credential's
505
+ * `walletName === 'dynamicwaas'`, which is reliable regardless of how the wallet is
506
+ * instantiated at runtime. This is useful for operations like backup and key share export
507
+ * where you need to identify all WaaS wallets, including those used as signers for
508
+ * smart wallets (e.g., ZeroDev, EIP-7702).
509
+ *
510
+ * @returns Array of WaaS wallet credentials with valid address and chain.
511
+ */
512
+ const getWaasWalletsByCredentials = useCallback(() => {
513
+ if (!(user === null || user === void 0 ? void 0 : user.verifiedCredentials))
514
+ return [];
515
+ return user.verifiedCredentials.filter((cred) => cred.walletName === 'dynamicwaas' &&
516
+ cred.address &&
517
+ cred.chain &&
518
+ VerifiedCredentialNameToChainEnum[cred.chain]);
519
+ }, [user === null || user === void 0 ? void 0 : user.verifiedCredentials]);
491
520
  const processSignOnWalletSettings = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
492
521
  var _j;
493
522
  if (!(user === null || user === void 0 ? void 0 : user.verifiedCredentials)) {
@@ -551,6 +580,7 @@ const useDynamicWaas = () => {
551
580
  dynamicWaasIsEnabled,
552
581
  getWaasWalletConnector,
553
582
  getWaasWallets,
583
+ getWaasWalletsByCredentials,
554
584
  importPrivateKey,
555
585
  initializeWaas,
556
586
  needsAutoCreateWalletChains,
@@ -13,5 +13,6 @@ export declare const useFunding: () => {
13
13
  currency?: string | undefined;
14
14
  overrideOnRamp?: boolean | undefined;
15
15
  payingWithDynamic?: boolean | undefined;
16
+ merchantName?: string | undefined;
16
17
  }) => Promise<void>;
17
18
  };
@@ -107,45 +107,30 @@ const useOnramp = () => {
107
107
  const { onrampEnabled, enabledOnrampProviders, openOnramp } = OnrampContext.useOnrampContext();
108
108
  const { primaryWallet, network } = useInternalDynamicContext.useInternalDynamicContext();
109
109
  const environmentId = dynamicContextProps.useEnvironmentId();
110
- const getMatchingProvider = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }) {
111
- var _b;
110
+ const getMatchingProvider = (params) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
111
+ var _a, _b;
112
112
  if (!environmentId)
113
113
  return undefined;
114
114
  const providers = yield getOnrampProviders.getOnrampProviders({
115
- address,
116
- chainName,
117
- currency,
115
+ address: params.address,
116
+ chainName: params.chainName,
117
+ currency: params.currency,
118
118
  environmentId,
119
119
  includeDisabled: true,
120
- network: (_b = networkOverride !== null && networkOverride !== void 0 ? networkOverride : network) !== null && _b !== void 0 ? _b : undefined,
120
+ merchantName: params.merchantName,
121
+ network: (_b = (_a = params.network) !== null && _a !== void 0 ? _a : network) !== null && _b !== void 0 ? _b : undefined,
121
122
  primaryWallet,
122
- token,
123
- tokenAmount,
123
+ token: params.token,
124
+ tokenAmount: params.tokenAmount,
124
125
  });
125
- return providers.find((p) => String(p.provider) === String(onrampProvider));
126
+ return providers.find((p) => String(p.provider) === String(params.onrampProvider));
126
127
  });
127
- const getOnrampUrl = (_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }) {
128
- const match = yield getMatchingProvider({
129
- address,
130
- chainName,
131
- currency,
132
- network: networkOverride,
133
- onrampProvider,
134
- token,
135
- tokenAmount,
136
- });
128
+ const getOnrampUrl = (params) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
129
+ const match = yield getMatchingProvider(params);
137
130
  return match === null || match === void 0 ? void 0 : match.url;
138
131
  });
139
- const getOnrampQrCode = (_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }) {
140
- const match = yield getMatchingProvider({
141
- address,
142
- chainName,
143
- currency,
144
- network: networkOverride,
145
- onrampProvider,
146
- token,
147
- tokenAmount,
148
- });
132
+ const getOnrampQrCode = (params) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
133
+ const match = yield getMatchingProvider(params);
149
134
  return match === null || match === void 0 ? void 0 : match.qrCode;
150
135
  });
151
136
  return {
@@ -1,24 +1,18 @@
1
1
  import type { OnrampProviders } from '@dynamic-labs/sdk-api-core';
2
+ type OnrampParams = {
3
+ onrampProvider: OnrampProviders;
4
+ address?: string;
5
+ token?: string;
6
+ tokenAmount?: number;
7
+ network?: string | number;
8
+ chainName?: string;
9
+ currency?: string;
10
+ merchantName?: string;
11
+ };
2
12
  export declare const useOnramp: () => {
3
13
  enabled: boolean;
4
- getOnrampQrCode: ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }: {
5
- onrampProvider: OnrampProviders;
6
- address?: string;
7
- token?: string;
8
- tokenAmount?: number;
9
- network?: string | number;
10
- chainName?: string;
11
- currency?: string;
12
- }) => Promise<string | undefined>;
13
- getOnrampUrl: ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }: {
14
- onrampProvider: OnrampProviders;
15
- address?: string;
16
- token?: string;
17
- tokenAmount?: number;
18
- network?: string | number;
19
- chainName?: string;
20
- currency?: string;
21
- }) => Promise<string | undefined>;
14
+ getOnrampQrCode: (params: OnrampParams) => Promise<string | undefined>;
15
+ getOnrampUrl: (params: OnrampParams) => Promise<string | undefined>;
22
16
  open: (props: {
23
17
  address?: string | undefined;
24
18
  token?: string | undefined;
@@ -29,6 +23,8 @@ export declare const useOnramp: () => {
29
23
  currency?: string | undefined;
30
24
  overrideOnRamp?: boolean | undefined;
31
25
  payingWithDynamic?: boolean | undefined;
26
+ merchantName?: string | undefined;
32
27
  }) => Promise<void>;
33
28
  providers: import("../../../context/DynamicContext").OnrampOption[];
34
29
  };
30
+ export {};
@@ -103,45 +103,30 @@ const useOnramp = () => {
103
103
  const { onrampEnabled, enabledOnrampProviders, openOnramp } = useOnrampContext();
104
104
  const { primaryWallet, network } = useInternalDynamicContext();
105
105
  const environmentId = useEnvironmentId();
106
- const getMatchingProvider = (_a) => __awaiter(void 0, [_a], void 0, function* ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }) {
107
- var _b;
106
+ const getMatchingProvider = (params) => __awaiter(void 0, void 0, void 0, function* () {
107
+ var _a, _b;
108
108
  if (!environmentId)
109
109
  return undefined;
110
110
  const providers = yield getOnrampProviders({
111
- address,
112
- chainName,
113
- currency,
111
+ address: params.address,
112
+ chainName: params.chainName,
113
+ currency: params.currency,
114
114
  environmentId,
115
115
  includeDisabled: true,
116
- network: (_b = networkOverride !== null && networkOverride !== void 0 ? networkOverride : network) !== null && _b !== void 0 ? _b : undefined,
116
+ merchantName: params.merchantName,
117
+ network: (_b = (_a = params.network) !== null && _a !== void 0 ? _a : network) !== null && _b !== void 0 ? _b : undefined,
117
118
  primaryWallet,
118
- token,
119
- tokenAmount,
119
+ token: params.token,
120
+ tokenAmount: params.tokenAmount,
120
121
  });
121
- return providers.find((p) => String(p.provider) === String(onrampProvider));
122
+ return providers.find((p) => String(p.provider) === String(params.onrampProvider));
122
123
  });
123
- const getOnrampUrl = (_c) => __awaiter(void 0, [_c], void 0, function* ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }) {
124
- const match = yield getMatchingProvider({
125
- address,
126
- chainName,
127
- currency,
128
- network: networkOverride,
129
- onrampProvider,
130
- token,
131
- tokenAmount,
132
- });
124
+ const getOnrampUrl = (params) => __awaiter(void 0, void 0, void 0, function* () {
125
+ const match = yield getMatchingProvider(params);
133
126
  return match === null || match === void 0 ? void 0 : match.url;
134
127
  });
135
- const getOnrampQrCode = (_d) => __awaiter(void 0, [_d], void 0, function* ({ onrampProvider, address, token, tokenAmount, network: networkOverride, chainName, currency, }) {
136
- const match = yield getMatchingProvider({
137
- address,
138
- chainName,
139
- currency,
140
- network: networkOverride,
141
- onrampProvider,
142
- token,
143
- tokenAmount,
144
- });
128
+ const getOnrampQrCode = (params) => __awaiter(void 0, void 0, void 0, function* () {
129
+ const match = yield getMatchingProvider(params);
145
130
  return match === null || match === void 0 ? void 0 : match.qrCode;
146
131
  });
147
132
  return {
@@ -0,0 +1 @@
1
+ export { usePhantomRedirectEvents, type UsePhantomRedirectEventsProps, } from './usePhantomRedirectEvents';