@dynamic-labs/sdk-react-core 4.19.5 → 4.19.6

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 (68) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +12 -12
  5. package/src/lib/components/AppOriginTile/AppOriginTile.cjs +8 -5
  6. package/src/lib/components/AppOriginTile/AppOriginTile.d.ts +4 -1
  7. package/src/lib/components/AppOriginTile/AppOriginTile.js +8 -5
  8. package/src/lib/components/Chip/Chip.cjs +2 -3
  9. package/src/lib/components/Chip/Chip.d.ts +5 -4
  10. package/src/lib/components/Chip/Chip.js +2 -3
  11. package/src/lib/components/NeedHelpSection/NeedHelpSection.cjs +3 -2
  12. package/src/lib/components/NeedHelpSection/NeedHelpSection.js +3 -2
  13. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.d.ts +2 -2
  14. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  15. package/src/lib/data/api/exchangeAccounts/exchangeAccounts.d.ts +45 -0
  16. package/src/lib/data/api/exchangeAccounts/index.d.ts +1 -0
  17. package/src/lib/data/api/index.d.ts +1 -0
  18. package/src/lib/data/api/onramp/onramp.d.ts +2 -2
  19. package/src/lib/locale/en/translation.cjs +16 -0
  20. package/src/lib/locale/en/translation.d.ts +16 -0
  21. package/src/lib/locale/en/translation.js +16 -0
  22. package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.cjs +1 -1
  23. package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.js +1 -1
  24. package/src/lib/modals/ZkSyncApprovalModal/ZkSyncApprovalModal.cjs +22 -0
  25. package/src/lib/modals/ZkSyncApprovalModal/ZkSyncApprovalModal.d.ts +8 -0
  26. package/src/lib/modals/ZkSyncApprovalModal/ZkSyncApprovalModal.js +18 -0
  27. package/src/lib/modals/ZkSyncApprovalModal/index.d.ts +1 -0
  28. package/src/lib/modals/index.d.ts +1 -0
  29. package/src/lib/shared/assets/backup.cjs +52 -0
  30. package/src/lib/shared/assets/backup.js +28 -0
  31. package/src/lib/shared/assets/clock.cjs +54 -0
  32. package/src/lib/shared/assets/clock.js +30 -0
  33. package/src/lib/shared/assets/index.d.ts +2 -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 +1 -0
  37. package/src/lib/utils/constants/authViewLayoutChecks.js +1 -0
  38. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.d.ts +2 -2
  39. package/src/lib/utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.cjs +25 -18
  40. package/src/lib/utils/functions/updatePrimaryWalletId/updatePrimaryWalletId.js +25 -18
  41. package/src/lib/utils/hooks/index.d.ts +1 -0
  42. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +4 -0
  43. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +4 -0
  44. package/src/lib/utils/hooks/useExchangeAccounts/index.d.ts +1 -0
  45. package/src/lib/utils/hooks/useExchangeAccounts/useExchangeAccounts.d.ts +13 -0
  46. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +4 -2
  47. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +4 -2
  48. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.cjs +12 -1
  49. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.js +12 -1
  50. package/src/lib/views/BackupUnsuccessfulView/BackupUnsuccessfulView.cjs +138 -0
  51. package/src/lib/views/BackupUnsuccessfulView/BackupUnsuccessfulView.d.ts +3 -0
  52. package/src/lib/views/BackupUnsuccessfulView/BackupUnsuccessfulView.js +133 -0
  53. package/src/lib/views/Passkey/PasskeyNewDomainDetectedView/PasskeyNewDomainDetectedView.cjs +1 -1
  54. package/src/lib/views/Passkey/PasskeyNewDomainDetectedView/PasskeyNewDomainDetectedView.js +1 -1
  55. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +1 -1
  56. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +1 -1
  57. package/src/lib/views/SessionKeyApprovalView/SessionKeyApprovalView.cjs +114 -0
  58. package/src/lib/views/SessionKeyApprovalView/SessionKeyApprovalView.js +110 -0
  59. package/src/lib/views/SessionPermissionsView/SessionPermissionsView.cjs +6 -6
  60. package/src/lib/views/SessionPermissionsView/SessionPermissionsView.js +2 -2
  61. package/src/lib/views/index.d.ts +1 -0
  62. package/src/lib/views/viewToComponentMap.cjs +2 -0
  63. package/src/lib/views/viewToComponentMap.d.ts +1 -0
  64. package/src/lib/views/viewToComponentMap.js +2 -0
  65. package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.cjs +1 -1
  66. package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.js +1 -1
  67. package/src/lib/widgets/DynamicWidget/views/SessionManagementView/RevokeAccessView/RevokeAccessView.cjs +6 -4
  68. package/src/lib/widgets/DynamicWidget/views/SessionManagementView/RevokeAccessView/RevokeAccessView.js +7 -5
package/CHANGELOG.md CHANGED
@@ -1,4 +1,17 @@
1
1
 
2
+ ### [4.19.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.5...v4.19.6) (2025-06-04)
3
+
4
+
5
+ ### Features
6
+
7
+ * backup unsuccessful popup when create wallet fails ([#8872](https://github.com/dynamic-labs/dynamic-auth/issues/8872)) ([c8f88f2](https://github.com/dynamic-labs/dynamic-auth/commit/c8f88f2cafdb7856764305764a230e159f09dadf))
8
+ * **global-wallet:** new native api method to return the eoa wallet for a connected smart wallet ([#8864](https://github.com/dynamic-labs/dynamic-auth/issues/8864)) ([5d0e200](https://github.com/dynamic-labs/dynamic-auth/commit/5d0e2002caefb658f6120b102abe145d6caafaf4))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * dont call select endpoint when signing in with 7702 wallet ([#8854](https://github.com/dynamic-labs/dynamic-auth/issues/8854)) ([9828a8f](https://github.com/dynamic-labs/dynamic-auth/commit/9828a8fb758b07dd4dc51cb9eadee483b884defe))
14
+
2
15
  ### [4.19.5](https://github.com/dynamic-labs/dynamic-auth/compare/v4.19.4...v4.19.5) (2025-06-02)
3
16
 
4
17
 
package/package.cjs CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.19.5";
6
+ var version = "4.19.6";
7
7
  var dependencies = {
8
- "@dynamic-labs/sdk-api-core": "0.0.672",
8
+ "@dynamic-labs/sdk-api-core": "0.0.681",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
10
10
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
11
11
  "country-list": "2.3.0",
package/package.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client'
2
- var version = "4.19.5";
2
+ var version = "4.19.6";
3
3
  var dependencies = {
4
- "@dynamic-labs/sdk-api-core": "0.0.672",
4
+ "@dynamic-labs/sdk-api-core": "0.0.681",
5
5
  "@hcaptcha/react-hcaptcha": "1.4.4",
6
6
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
7
7
  "country-list": "2.3.0",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.19.5",
3
+ "version": "4.19.6",
4
4
  "dependencies": {
5
- "@dynamic-labs/sdk-api-core": "0.0.672",
5
+ "@dynamic-labs/sdk-api-core": "0.0.681",
6
6
  "@hcaptcha/react-hcaptcha": "1.4.4",
7
7
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
8
8
  "country-list": "2.3.0",
@@ -14,16 +14,16 @@
14
14
  "yup": "0.32.11",
15
15
  "react-international-phone": "4.2.5",
16
16
  "bs58": "5.0.0",
17
- "@dynamic-labs/assert-package-version": "4.19.5",
18
- "@dynamic-labs/iconic": "4.19.5",
19
- "@dynamic-labs/logger": "4.19.5",
20
- "@dynamic-labs/multi-wallet": "4.19.5",
21
- "@dynamic-labs/rpc-providers": "4.19.5",
22
- "@dynamic-labs/store": "4.19.5",
23
- "@dynamic-labs/types": "4.19.5",
24
- "@dynamic-labs/utils": "4.19.5",
25
- "@dynamic-labs/wallet-book": "4.19.5",
26
- "@dynamic-labs/wallet-connector-core": "4.19.5",
17
+ "@dynamic-labs/assert-package-version": "4.19.6",
18
+ "@dynamic-labs/iconic": "4.19.6",
19
+ "@dynamic-labs/logger": "4.19.6",
20
+ "@dynamic-labs/multi-wallet": "4.19.6",
21
+ "@dynamic-labs/rpc-providers": "4.19.6",
22
+ "@dynamic-labs/store": "4.19.6",
23
+ "@dynamic-labs/types": "4.19.6",
24
+ "@dynamic-labs/utils": "4.19.6",
25
+ "@dynamic-labs/wallet-book": "4.19.6",
26
+ "@dynamic-labs/wallet-connector-core": "4.19.6",
27
27
  "eventemitter3": "5.0.1"
28
28
  },
29
29
  "devDependencies": {
@@ -10,18 +10,21 @@ var Typography = require('../Typography/Typography.cjs');
10
10
  var Chip = require('../Chip/Chip.cjs');
11
11
  var getGlobalWalletContext = require('../../shared/utils/functions/getGlobalWalletContext/getGlobalWalletContext.cjs');
12
12
 
13
- const AppOriginTile = () => {
13
+ const AppOriginTile = ({ origin }) => {
14
14
  const { requesterOrigin } = getGlobalWalletContext.getGlobalWalletContext();
15
- const origin = React.useMemo(() => {
15
+ const displayOrigin = React.useMemo(() => {
16
+ if (origin) {
17
+ return origin;
18
+ }
16
19
  if (requesterOrigin) {
17
20
  return requesterOrigin;
18
21
  }
19
22
  return utils.PlatformService.getDisplayOrigin();
20
- }, [requesterOrigin]);
21
- if (!origin) {
23
+ }, [origin, requesterOrigin]);
24
+ if (!displayOrigin) {
22
25
  return null;
23
26
  }
24
- return (jsxRuntime.jsx(Chip.Chip, { className: 'app-origin-tile', children: jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_normal', weight: 'regular', children: origin }) }));
27
+ return (jsxRuntime.jsx(Chip.Chip, { className: 'app-origin-tile', children: jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_normal', weight: 'regular', as: 'span', children: displayOrigin }) }));
25
28
  };
26
29
 
27
30
  exports.AppOriginTile = AppOriginTile;
@@ -1,2 +1,5 @@
1
1
  import { FC } from 'react';
2
- export declare const AppOriginTile: FC;
2
+ export interface AppOriginTileProps {
3
+ origin?: string;
4
+ }
5
+ export declare const AppOriginTile: FC<AppOriginTileProps>;
@@ -6,18 +6,21 @@ import { Typography } from '../Typography/Typography.js';
6
6
  import { Chip } from '../Chip/Chip.js';
7
7
  import { getGlobalWalletContext } from '../../shared/utils/functions/getGlobalWalletContext/getGlobalWalletContext.js';
8
8
 
9
- const AppOriginTile = () => {
9
+ const AppOriginTile = ({ origin }) => {
10
10
  const { requesterOrigin } = getGlobalWalletContext();
11
- const origin = useMemo(() => {
11
+ const displayOrigin = useMemo(() => {
12
+ if (origin) {
13
+ return origin;
14
+ }
12
15
  if (requesterOrigin) {
13
16
  return requesterOrigin;
14
17
  }
15
18
  return PlatformService.getDisplayOrigin();
16
- }, [requesterOrigin]);
17
- if (!origin) {
19
+ }, [origin, requesterOrigin]);
20
+ if (!displayOrigin) {
18
21
  return null;
19
22
  }
20
- return (jsx(Chip, { className: 'app-origin-tile', children: jsx(Typography, { color: 'secondary', variant: 'body_normal', weight: 'regular', children: origin }) }));
23
+ return (jsx(Chip, { className: 'app-origin-tile', children: jsx(Typography, { color: 'secondary', variant: 'body_normal', weight: 'regular', as: 'span', children: displayOrigin }) }));
21
24
  };
22
25
 
23
26
  export { AppOriginTile };
@@ -7,8 +7,7 @@ var jsxRuntime = require('react/jsx-runtime');
7
7
  var Typography = require('../Typography/Typography.cjs');
8
8
  var classNames = require('../../utils/functions/classNames/classNames.cjs');
9
9
 
10
- const Chip = ({ children, icon, className, }) => (jsxRuntime.jsxs("div", { className: classNames.classNames('chip', className, {
11
- 'chip__with-icon': Boolean(icon),
12
- }), children: [Boolean(icon) && jsxRuntime.jsx("div", { className: 'chip--icon', children: icon }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', children: children })] }));
10
+ /** An outlined chip component that displays a label and optional leading and trailing icons. */
11
+ const Chip = ({ children, leading, trailing, className, }) => (jsxRuntime.jsxs("div", { className: classNames.classNames('chip', className), children: [Boolean(leading) && jsxRuntime.jsx("div", { className: 'chip--leading', children: leading }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', children: children }), Boolean(trailing) && jsxRuntime.jsx("div", { className: 'chip--trailing', children: trailing })] }));
13
12
 
14
13
  exports.Chip = Chip;
@@ -1,7 +1,8 @@
1
1
  import { FC, PropsWithChildren, ReactNode } from 'react';
2
- type ChipProps = {
2
+ export interface ChipProps {
3
3
  className?: string;
4
- icon?: ReactNode;
5
- };
4
+ leading?: ReactNode;
5
+ trailing?: ReactNode;
6
+ }
7
+ /** An outlined chip component that displays a label and optional leading and trailing icons. */
6
8
  export declare const Chip: FC<PropsWithChildren<ChipProps>>;
7
- export {};
@@ -3,8 +3,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { Typography } from '../Typography/Typography.js';
4
4
  import { classNames } from '../../utils/functions/classNames/classNames.js';
5
5
 
6
- const Chip = ({ children, icon, className, }) => (jsxs("div", { className: classNames('chip', className, {
7
- 'chip__with-icon': Boolean(icon),
8
- }), children: [Boolean(icon) && jsx("div", { className: 'chip--icon', children: icon }), jsx(Typography, { variant: 'body_small', children: children })] }));
6
+ /** An outlined chip component that displays a label and optional leading and trailing icons. */
7
+ const Chip = ({ children, leading, trailing, className, }) => (jsxs("div", { className: classNames('chip', className), children: [Boolean(leading) && jsx("div", { className: 'chip--leading', children: leading }), jsx(Typography, { variant: 'body_small', children: children }), Boolean(trailing) && jsx("div", { className: 'chip--trailing', children: trailing })] }));
9
8
 
10
9
  export { Chip };
@@ -103,7 +103,7 @@ var useInternalDynamicContext = require('../../context/DynamicContext/useDynamic
103
103
 
104
104
  const NeedHelpSection = ({ isRecoveryFlow = false, isExport = false, }) => {
105
105
  var _a, _b, _c, _d, _e;
106
- const { projectSettings, user } = useInternalDynamicContext.useInternalDynamicContext();
106
+ const { projectSettings, user, primaryWallet } = useInternalDynamicContext.useInternalDynamicContext();
107
107
  const { t } = reactI18next.useTranslation();
108
108
  const { pushView } = ViewContext.useViewContext();
109
109
  const { initPasskeyRecoveryProcess } = usePasskeyRecovery.usePasskeyRecovery();
@@ -114,8 +114,9 @@ const NeedHelpSection = ({ isRecoveryFlow = false, isExport = false, }) => {
114
114
  ((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) === null || _c === void 0 ? void 0 : _c.find((p) => p.provider === sdkApiCore.ProviderEnum.Turnkey && p.enabledAt)) &&
115
115
  Boolean((_e = (_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _d === void 0 ? void 0 : _d.embeddedWallets) === null || _e === void 0 ? void 0 : _e.emailRecoveryEnabled);
116
116
  const v2Wallet = user === null || user === void 0 ? void 0 : user.verifiedCredentials.some((credential) => { var _a; return ((_a = credential.walletProperties) === null || _a === void 0 ? void 0 : _a.version) === sdkApiCore.EmbeddedWalletVersionEnum.V2; });
117
+ const v3Wallet = (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.key) === 'dynamicwaas';
117
118
  // revert to v2 wallet view (no passkey recovery) if passkey recovery is not enabled
118
- const v1Wallet = !v2Wallet && isRecoveryEnabled;
119
+ const v1Wallet = !v3Wallet && !v2Wallet && isRecoveryEnabled;
119
120
  const hasContactInfo = Boolean(supportEmail || Object.keys(supportUrls || {}).length > 0);
120
121
  const getSupportHelpSession = () => {
121
122
  // For v1 wallets, only show the "Go here for support" link that triggers recovery
@@ -99,7 +99,7 @@ import { useInternalDynamicContext } from '../../context/DynamicContext/useDynam
99
99
 
100
100
  const NeedHelpSection = ({ isRecoveryFlow = false, isExport = false, }) => {
101
101
  var _a, _b, _c, _d, _e;
102
- const { projectSettings, user } = useInternalDynamicContext();
102
+ const { projectSettings, user, primaryWallet } = useInternalDynamicContext();
103
103
  const { t } = useTranslation();
104
104
  const { pushView } = useViewContext();
105
105
  const { initPasskeyRecoveryProcess } = usePasskeyRecovery();
@@ -110,8 +110,9 @@ const NeedHelpSection = ({ isRecoveryFlow = false, isExport = false, }) => {
110
110
  ((_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) === null || _c === void 0 ? void 0 : _c.find((p) => p.provider === ProviderEnum.Turnkey && p.enabledAt)) &&
111
111
  Boolean((_e = (_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _d === void 0 ? void 0 : _d.embeddedWallets) === null || _e === void 0 ? void 0 : _e.emailRecoveryEnabled);
112
112
  const v2Wallet = user === null || user === void 0 ? void 0 : user.verifiedCredentials.some((credential) => { var _a; return ((_a = credential.walletProperties) === null || _a === void 0 ? void 0 : _a.version) === EmbeddedWalletVersionEnum.V2; });
113
+ const v3Wallet = (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.key) === 'dynamicwaas';
113
114
  // revert to v2 wallet view (no passkey recovery) if passkey recovery is not enabled
114
- const v1Wallet = !v2Wallet && isRecoveryEnabled;
115
+ const v1Wallet = !v3Wallet && !v2Wallet && isRecoveryEnabled;
115
116
  const hasContactInfo = Boolean(supportEmail || Object.keys(supportUrls || {}).length > 0);
116
117
  const getSupportHelpSession = () => {
117
118
  // For v1 wallets, only show the "Go here for support" link that triggers recovery
@@ -1,5 +1,5 @@
1
1
  import { type Wallet } from '@dynamic-labs/wallet-connector-core';
2
- import { type OnrampConfiguration, type OnrampProviders } from '@dynamic-labs/sdk-api-core';
2
+ import { type RampConfiguration, type OnrampProviders } from '@dynamic-labs/sdk-api-core';
3
3
  export type EnabledOnrampProvidersTarget = {
4
4
  address?: string;
5
5
  token?: string;
@@ -11,5 +11,5 @@ type UseEnabledOnrampProvidersProps = {
11
11
  environmentId: string;
12
12
  target: EnabledOnrampProvidersTarget;
13
13
  };
14
- export declare const useEnabledOnrampProviders: ({ primaryWallet, network, environmentId, projectSettingsOnramps, target, }: UseEnabledOnrampProvidersProps) => OnrampConfiguration[];
14
+ export declare const useEnabledOnrampProviders: ({ primaryWallet, network, environmentId, projectSettingsOnramps, target, }: UseEnabledOnrampProvidersProps) => RampConfiguration[];
15
15
  export {};
@@ -1,6 +1,6 @@
1
1
  import { ComponentProps, FC } from 'react';
2
2
  import { viewToComponentMap } from '../../../views/viewToComponentMap';
3
- export type ViewType = 'access-blocked' | 'select-hardware-wallet' | 'captcha' | 'chainalysis-blocked-wallet' | 'collect-user-data' | 'collect-user-data-login-no-wallet' | 'login-with-email-or-wallet-full-wallet-list' | 'login-with-email-or-wallet' | 'login-with-wallet-only' | 'login-with-email-verification' | 'login-with-sms-verification' | 'network-not-supported' | 'network-not-supported-manual' | 'no-access' | 'no-qr-not-installed' | 'pending-connect' | 'pending-signature-without-back-button' | 'pending-signature' | 'qr-code' | 'verify-email' | 'verify-sms' | 'wallet-connect-mobile-wallets-list' | 'wallet-list' | 'external-funding-wallet-list' | 'sandbox-maximum-threshold-reached' | 'multi-wallet-wallet-list' | 'wallet-sign' | 'wallet-used' | 'wallet-group' | 'select-wallet-in-wallet-group' | 'wait-for-email-confirmation-view' | 'email-wallet-otp-verification-view' | 'social-redirect-view' | 'wallet-locked-view' | 'social-wrong-account' | 'gate-blocked-wallet' | 'bridge-welcome' | 'bridge-summary' | 'bridge-next-wallet-connection' | 'account-exists' | 'merge-user-accounts' | 'merge-user-accounts-conflicts' | 'merge-user-accounts-with-same-email' | 'mfa-choose-device' | 'mfa-recovery' | 'mfa-secure-device' | 'mfa-secure-device-help' | 'mfa-verification' | 'mfa-display-backup-codes' | 'wallet-cannot-be-transferred' | 'passkey-intro' | 'passkey-recovery-add-email' | 'global-wallet-confirm' | 'global-wallet-malicious' | 'global-wallet-info' | 'passkey-recovery-start' | 'passkey-recovery-bundle' | 'passkey-recovery-complete' | 'passkey-new-domain-detected' | 'embedded-delete-view' | 'embedded-reveal-view' | 'embedded-reveal-account-view' | 'embedded-wallet-auth-choice' | 'rename-passkey' | 'wallet-redirect-view' | 'mobile-wallet-redirect-view' | 'farcaster-connect-view' | 'embedded-wallet-exists' | 'user-delete-account';
3
+ export type ViewType = 'access-blocked' | 'backup-unsuccessful' | 'select-hardware-wallet' | 'captcha' | 'chainalysis-blocked-wallet' | 'collect-user-data' | 'collect-user-data-login-no-wallet' | 'login-with-email-or-wallet-full-wallet-list' | 'login-with-email-or-wallet' | 'login-with-wallet-only' | 'login-with-email-verification' | 'login-with-sms-verification' | 'network-not-supported' | 'network-not-supported-manual' | 'no-access' | 'no-qr-not-installed' | 'pending-connect' | 'pending-signature-without-back-button' | 'pending-signature' | 'qr-code' | 'verify-email' | 'verify-sms' | 'wallet-connect-mobile-wallets-list' | 'wallet-list' | 'external-funding-wallet-list' | 'sandbox-maximum-threshold-reached' | 'multi-wallet-wallet-list' | 'wallet-sign' | 'wallet-used' | 'wallet-group' | 'select-wallet-in-wallet-group' | 'wait-for-email-confirmation-view' | 'email-wallet-otp-verification-view' | 'social-redirect-view' | 'wallet-locked-view' | 'social-wrong-account' | 'gate-blocked-wallet' | 'bridge-welcome' | 'bridge-summary' | 'bridge-next-wallet-connection' | 'account-exists' | 'merge-user-accounts' | 'merge-user-accounts-conflicts' | 'merge-user-accounts-with-same-email' | 'mfa-choose-device' | 'mfa-recovery' | 'mfa-secure-device' | 'mfa-secure-device-help' | 'mfa-verification' | 'mfa-display-backup-codes' | 'wallet-cannot-be-transferred' | 'passkey-intro' | 'passkey-recovery-add-email' | 'global-wallet-confirm' | 'global-wallet-malicious' | 'global-wallet-info' | 'passkey-recovery-start' | 'passkey-recovery-bundle' | 'passkey-recovery-complete' | 'passkey-new-domain-detected' | 'embedded-delete-view' | 'embedded-reveal-view' | 'embedded-reveal-account-view' | 'embedded-wallet-auth-choice' | 'rename-passkey' | 'wallet-redirect-view' | 'mobile-wallet-redirect-view' | 'farcaster-connect-view' | 'embedded-wallet-exists' | 'user-delete-account';
4
4
  export type ViewMapConstraint = Record<ViewType, FC<any>>;
5
5
  export type ViewMap = typeof viewToComponentMap;
6
6
  export type ViewState<T extends ViewType> = {
@@ -0,0 +1,45 @@
1
+ import { Account, CreateExchangeTransferRequest, ExchangeKeyEnum, ExchangeTransferResponse } from '@dynamic-labs/sdk-api-core';
2
+ /**
3
+ * Retrieve the list of exchange accounts linked to a user for a given exchange provider.
4
+ *
5
+ * @param environmentId – Dynamic environment ID
6
+ * @param exchangeKey – The key identifying the exchange provider (e.g., 'coinbase')
7
+ * @returns An array of `Account` objects representing the user's linked exchange accounts
8
+ */
9
+ export declare const getUserExchangeAccounts: ({ environmentId, exchangeKey, }: {
10
+ environmentId: string;
11
+ exchangeKey: ExchangeKeyEnum;
12
+ }) => Promise<Account[]>;
13
+ /**
14
+ * Transfer funds from a user-linked exchange account to an external address
15
+ * or another Coinbase account.
16
+ *
17
+ * @param environmentId – Dynamic environment ID
18
+ * @param exchangeKey – The key identifying the exchange provider (e.g., `'coinbase'`)
19
+ * @param accountId – The exchange-account ID to transfer funds **from**
20
+ * @param transfer – JSON body matching `CreateExchangeTransferRequest`
21
+ * @returns Details of the created transfer (`ExchangeTransferResponse`)
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * await createExchangeAccountTransfer({
26
+ * environmentId: 'env_123',
27
+ * exchangeKey: ExchangeKeyEnum.COINBASE,
28
+ * accountId: 'acc_456',
29
+ * transfer: {
30
+ * to: '0xRecipientAddress',
31
+ * amount: 0.25,
32
+ * currency: 'ETH',
33
+ * network: 'ethereum',
34
+ * description: 'Withdrawal to cold wallet',
35
+ * mfaCode: '123456',
36
+ * },
37
+ * });
38
+ * ```
39
+ */
40
+ export declare const createExchangeAccountTransfer: ({ environmentId, exchangeKey, accountId, transfer, }: {
41
+ environmentId: string;
42
+ exchangeKey: ExchangeKeyEnum;
43
+ accountId: string;
44
+ transfer: CreateExchangeTransferRequest;
45
+ }) => Promise<ExchangeTransferResponse>;
@@ -0,0 +1 @@
1
+ export * from './exchangeAccounts';
@@ -1,5 +1,6 @@
1
1
  export * from './email';
2
2
  export * from './embeddedWallets';
3
+ export * from './exchangeAccounts';
3
4
  export * from './externalAuth';
4
5
  export * from './mfa';
5
6
  export * from './oauth';
@@ -1,8 +1,8 @@
1
- import { OnrampConfiguration } from '@dynamic-labs/sdk-api-core';
1
+ import { RampConfiguration } from '@dynamic-labs/sdk-api-core';
2
2
  export declare const getOnrampProviders: ({ chain, environmentId, networkId, token, walletAddress, }: {
3
3
  chain: string;
4
4
  environmentId: string;
5
5
  networkId?: string | number;
6
6
  token?: string;
7
7
  walletAddress: string;
8
- }) => Promise<OnrampConfiguration[]>;
8
+ }) => Promise<RampConfiguration[]>;
@@ -1167,6 +1167,22 @@ const translation = {
1167
1167
  no_devices: 'No authenticator apps configured',
1168
1168
  generate_backup_codes_button: 'Get new backup codes',
1169
1169
  },
1170
+ /**
1171
+ * @description copy keys for waas backup unsuccessful view
1172
+ * @default
1173
+ * {
1174
+ title: 'Backup Unsuccessful',
1175
+ description: "We weren't able to back up your wallet. To keep things secure, we'll need to refresh and generate a new wallet for you.",
1176
+ try_again: 'Try Again',
1177
+ },
1178
+ */
1179
+ dyn_waas: {
1180
+ backup_unsuccessful: {
1181
+ title: 'Backup Unsuccessful',
1182
+ description: "We weren't able to back up your wallet. To keep things secure, we'll need to refresh and generate a new wallet for you.",
1183
+ try_again: 'Try Again',
1184
+ },
1185
+ },
1170
1186
  /**
1171
1187
  * @description copy keys for mfa views
1172
1188
  * @default
@@ -1163,6 +1163,22 @@ export declare const translation: {
1163
1163
  no_devices: string;
1164
1164
  generate_backup_codes_button: string;
1165
1165
  };
1166
+ /**
1167
+ * @description copy keys for waas backup unsuccessful view
1168
+ * @default
1169
+ * {
1170
+ title: 'Backup Unsuccessful',
1171
+ description: "We weren't able to back up your wallet. To keep things secure, we'll need to refresh and generate a new wallet for you.",
1172
+ try_again: 'Try Again',
1173
+ },
1174
+ */
1175
+ dyn_waas: {
1176
+ backup_unsuccessful: {
1177
+ title: string;
1178
+ description: string;
1179
+ try_again: string;
1180
+ };
1181
+ };
1166
1182
  /**
1167
1183
  * @description copy keys for mfa views
1168
1184
  * @default
@@ -1163,6 +1163,22 @@ const translation = {
1163
1163
  no_devices: 'No authenticator apps configured',
1164
1164
  generate_backup_codes_button: 'Get new backup codes',
1165
1165
  },
1166
+ /**
1167
+ * @description copy keys for waas backup unsuccessful view
1168
+ * @default
1169
+ * {
1170
+ title: 'Backup Unsuccessful',
1171
+ description: "We weren't able to back up your wallet. To keep things secure, we'll need to refresh and generate a new wallet for you.",
1172
+ try_again: 'Try Again',
1173
+ },
1174
+ */
1175
+ dyn_waas: {
1176
+ backup_unsuccessful: {
1177
+ title: 'Backup Unsuccessful',
1178
+ description: "We weren't able to back up your wallet. To keep things secure, we'll need to refresh and generate a new wallet for you.",
1179
+ try_again: 'Try Again',
1180
+ },
1181
+ },
1166
1182
  /**
1167
1183
  * @description copy keys for mfa views
1168
1184
  * @default
@@ -102,12 +102,12 @@ require('qrcode');
102
102
  require('../../widgets/DynamicWidget/views/ReceiveWalletFunds/ReceiveWalletFunds.cjs');
103
103
  var getProperErrorMessage = require('./getProperErrorMessage.cjs');
104
104
  require('../../../index.cjs');
105
+ var NeedHelpSection = require('../../components/NeedHelpSection/NeedHelpSection.cjs');
105
106
  require('../../context/IpConfigurationContext/IpConfigurationContext.cjs');
106
107
  require('../../context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
107
108
  require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
108
109
  require('@hcaptcha/react-hcaptcha');
109
110
  require('../../context/ErrorContext/hooks/useErrorText/useErrorText.cjs');
110
- var NeedHelpSection = require('../../components/NeedHelpSection/NeedHelpSection.cjs');
111
111
  var PasskeyCreatedSuccessBanner = require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
112
112
  require('../../store/state/connectorsInitializing/connectorsInitializing.cjs');
113
113
  require('../../store/state/tokenBalances.cjs');
@@ -98,12 +98,12 @@ import 'qrcode';
98
98
  import '../../widgets/DynamicWidget/views/ReceiveWalletFunds/ReceiveWalletFunds.js';
99
99
  import { getProperErrorMessage } from './getProperErrorMessage.js';
100
100
  import '../../../index.js';
101
+ import { NeedHelpSection } from '../../components/NeedHelpSection/NeedHelpSection.js';
101
102
  import '../../context/IpConfigurationContext/IpConfigurationContext.js';
102
103
  import '../../context/ConnectWithOtpContext/ConnectWithOtpContext.js';
103
104
  import '../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
104
105
  import '@hcaptcha/react-hcaptcha';
105
106
  import '../../context/ErrorContext/hooks/useErrorText/useErrorText.js';
106
- import { NeedHelpSection } from '../../components/NeedHelpSection/NeedHelpSection.js';
107
107
  import { PasskeyCreatedSuccessBanner } from '../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
108
108
  import '../../store/state/connectorsInitializing/connectorsInitializing.js';
109
109
  import '../../store/state/tokenBalances.js';
@@ -0,0 +1,22 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var ConfirmationModal = require('../ConfirmationModal/ConfirmationModal.cjs');
8
+ var useConfirmationPortal = require('../../utils/hooks/useConfirmationPortal/useConfirmationPortal.cjs');
9
+ var SessionKeyApprovalView = require('../../views/SessionKeyApprovalView/SessionKeyApprovalView.cjs');
10
+
11
+ const ZkSyncApprovalModal = ({ session, onCancel, onApproved, }) => {
12
+ const { onSuccess, show, handleOnModalUnmount, closeModal } = useConfirmationPortal.useConfirmationPortal({
13
+ defaultErrorMessage: 'User canceled',
14
+ onReject: onCancel,
15
+ onResolve: onApproved,
16
+ });
17
+ return (jsxRuntime.jsx(ConfirmationModal.ConfirmationModal, { modalId: 'zksync-approval-modal', show: show,
18
+ // Disables the closing by clicking outside the modal
19
+ closeModal: () => { }, handleOnModalUnmount: handleOnModalUnmount, children: jsxRuntime.jsx(SessionKeyApprovalView.SessionKeyApprovalView, { session: session, onApprove: onSuccess, onReject: closeModal }) }));
20
+ };
21
+
22
+ exports.ZkSyncApprovalModal = ZkSyncApprovalModal;
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ type ZkSyncApprovalModalProps = {
3
+ session: unknown;
4
+ onCancel: (error: unknown) => void;
5
+ onApproved: () => void;
6
+ };
7
+ export declare const ZkSyncApprovalModal: FC<ZkSyncApprovalModalProps>;
8
+ export {};
@@ -0,0 +1,18 @@
1
+ 'use client'
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { ConfirmationModal } from '../ConfirmationModal/ConfirmationModal.js';
4
+ import { useConfirmationPortal } from '../../utils/hooks/useConfirmationPortal/useConfirmationPortal.js';
5
+ import { SessionKeyApprovalView } from '../../views/SessionKeyApprovalView/SessionKeyApprovalView.js';
6
+
7
+ const ZkSyncApprovalModal = ({ session, onCancel, onApproved, }) => {
8
+ const { onSuccess, show, handleOnModalUnmount, closeModal } = useConfirmationPortal({
9
+ defaultErrorMessage: 'User canceled',
10
+ onReject: onCancel,
11
+ onResolve: onApproved,
12
+ });
13
+ return (jsx(ConfirmationModal, { modalId: 'zksync-approval-modal', show: show,
14
+ // Disables the closing by clicking outside the modal
15
+ closeModal: () => { }, handleOnModalUnmount: handleOnModalUnmount, children: jsx(SessionKeyApprovalView, { session: session, onApprove: onSuccess, onReject: closeModal }) }));
16
+ };
17
+
18
+ export { ZkSyncApprovalModal };
@@ -0,0 +1 @@
1
+ export * from './ZkSyncApprovalModal';
@@ -6,3 +6,4 @@ export * from './SyncWalletPromptModal';
6
6
  export * from './TransactionConfirmationModal';
7
7
  export * from './UserFieldEditorModal';
8
8
  export * from './AddNetworkModal';
9
+ export * from './ZkSyncApprovalModal';
@@ -0,0 +1,52 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n["default"] = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ var _path;
29
+ var _excluded = ["title", "titleId"];
30
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }
31
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }
32
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }
33
+ var SvgBackup = function SvgBackup(_ref) {
34
+ var title = _ref.title,
35
+ titleId = _ref.titleId,
36
+ props = _objectWithoutProperties(_ref, _excluded);
37
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends({
38
+ xmlns: "http://www.w3.org/2000/svg",
39
+ width: 65,
40
+ height: 64,
41
+ viewBox: "0 0 65 64",
42
+ fill: "none",
43
+ "aria-labelledby": titleId
44
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
45
+ id: titleId
46
+ }, title) : null, _path || (_path = /*#__PURE__*/React__namespace.createElement("path", {
47
+ d: "M32.5 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32 0-17.673 14.327-32 32-32Zm10.325 34.635a.89.89 0 0 0-1.258-.016l-1.8 1.757a.89.89 0 0 0-.016 1.258l1.758 1.801a.89.89 0 0 0 1.273-1.242l-.338-.346a7.119 7.119 0 1 1-5.245.735.89.89 0 1 0-.886-1.543 8.897 8.897 0 1 0 6.321-.975l.176-.171a.89.89 0 0 0 .015-1.258ZM20.45 15a4.95 4.95 0 0 0-4.95 4.95v23.1A4.95 4.95 0 0 0 20.45 48h8.11a12.481 12.481 0 0 1-.383-3.081c0-6.004 4.247-11.016 9.901-12.194a2.462 2.462 0 0 1 2.172-.256 12.403 12.403 0 0 1 8.25 2.795V26.55a4.95 4.95 0 0 0-4.95-4.95h-23.1a1.65 1.65 0 1 1 0-3.3h19.8a1.65 1.65 0 1 0 0-3.3h-19.8Z",
48
+ fill: "currentColor"
49
+ })));
50
+ };
51
+
52
+ exports.ReactComponent = SvgBackup;
@@ -0,0 +1,28 @@
1
+ 'use client'
2
+ import * as React from 'react';
3
+
4
+ var _path;
5
+ var _excluded = ["title", "titleId"];
6
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }
7
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }
8
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }
9
+ var SvgBackup = function SvgBackup(_ref) {
10
+ var title = _ref.title,
11
+ titleId = _ref.titleId,
12
+ props = _objectWithoutProperties(_ref, _excluded);
13
+ return /*#__PURE__*/React.createElement("svg", _extends({
14
+ xmlns: "http://www.w3.org/2000/svg",
15
+ width: 65,
16
+ height: 64,
17
+ viewBox: "0 0 65 64",
18
+ fill: "none",
19
+ "aria-labelledby": titleId
20
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
21
+ id: titleId
22
+ }, title) : null, _path || (_path = /*#__PURE__*/React.createElement("path", {
23
+ d: "M32.5 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32 0-17.673 14.327-32 32-32Zm10.325 34.635a.89.89 0 0 0-1.258-.016l-1.8 1.757a.89.89 0 0 0-.016 1.258l1.758 1.801a.89.89 0 0 0 1.273-1.242l-.338-.346a7.119 7.119 0 1 1-5.245.735.89.89 0 1 0-.886-1.543 8.897 8.897 0 1 0 6.321-.975l.176-.171a.89.89 0 0 0 .015-1.258ZM20.45 15a4.95 4.95 0 0 0-4.95 4.95v23.1A4.95 4.95 0 0 0 20.45 48h8.11a12.481 12.481 0 0 1-.383-3.081c0-6.004 4.247-11.016 9.901-12.194a2.462 2.462 0 0 1 2.172-.256 12.403 12.403 0 0 1 8.25 2.795V26.55a4.95 4.95 0 0 0-4.95-4.95h-23.1a1.65 1.65 0 1 1 0-3.3h19.8a1.65 1.65 0 1 0 0-3.3h-19.8Z",
24
+ fill: "currentColor"
25
+ })));
26
+ };
27
+
28
+ export { SvgBackup as ReactComponent };