@dynamic-labs/sdk-react-core 2.1.0-alpha.7 → 2.1.0-alpha.9

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 (102) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +13 -13
  5. package/src/lib/components/Portal/Portal.cjs +2 -1
  6. package/src/lib/components/Portal/Portal.js +2 -1
  7. package/src/lib/components/SandboxIndicatorWrapper/SandboxIndicatorWrapper.d.ts +0 -2
  8. package/src/lib/components/Toolkit/components/index.d.ts +0 -6
  9. package/src/lib/components/Tooltip/Tooltip.cjs +2 -1
  10. package/src/lib/components/Tooltip/Tooltip.js +2 -1
  11. package/src/lib/context/DynamicContext/DynamicContext.cjs +5 -2
  12. package/src/lib/context/DynamicContext/DynamicContext.js +5 -2
  13. package/src/lib/context/DynamicContext/types/index.d.ts +0 -1
  14. package/src/lib/data/api/wallets/wallets.cjs +21 -5
  15. package/src/lib/data/api/wallets/wallets.d.ts +4 -0
  16. package/src/lib/data/api/wallets/wallets.js +21 -6
  17. package/src/lib/shared/utils/classes/storage/localStorage.cjs +2 -2
  18. package/src/lib/shared/utils/classes/storage/localStorage.js +2 -2
  19. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.cjs +14 -0
  20. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.d.ts +3 -0
  21. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.js +10 -0
  22. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/index.d.ts +1 -0
  23. package/src/lib/utils/functions/createUserProfile/createUserProfile.cjs +1 -2
  24. package/src/lib/utils/functions/createUserProfile/createUserProfile.js +1 -2
  25. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs +3 -4
  26. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.d.ts +1 -1
  27. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js +4 -5
  28. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +1 -1
  29. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.d.ts +3 -1
  30. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +1 -1
  31. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.cjs +5 -5
  32. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.d.ts +3 -2
  33. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.js +5 -5
  34. package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs +7 -2
  35. package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.js +7 -2
  36. package/src/lib/utils/functions/index.d.ts +1 -1
  37. package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.cjs +2 -1
  38. package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.js +2 -1
  39. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +16 -11
  40. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.d.ts +7 -2
  41. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +16 -11
  42. package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.cjs +3 -3
  43. package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.js +3 -3
  44. package/src/lib/utils/hooks/useElementById/useElementById.cjs +33 -18
  45. package/src/lib/utils/hooks/useElementById/useElementById.d.ts +3 -1
  46. package/src/lib/utils/hooks/useElementById/useElementById.js +33 -18
  47. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +9 -4
  48. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +6 -3
  49. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +9 -4
  50. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +6 -6
  51. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.d.ts +1 -1
  52. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +6 -6
  53. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +7 -7
  54. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.d.ts +2 -2
  55. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +7 -7
  56. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +24 -27
  57. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +6 -3
  58. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +24 -27
  59. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +16 -11
  60. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.d.ts +4 -1
  61. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +16 -11
  62. package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.cjs +2 -2
  63. package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.js +2 -2
  64. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +2 -1
  65. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +2 -1
  66. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +13 -4
  67. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +10 -2
  68. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +13 -4
  69. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +2 -3
  70. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +2 -3
  71. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.cjs +2 -1
  72. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.js +2 -1
  73. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +5 -4
  74. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.d.ts +6 -1
  75. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +5 -4
  76. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +2 -1
  77. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +2 -1
  78. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs → createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs} +17 -18
  79. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.d.ts → createEmbeddedWalletRequest/createEmbeddedWalletRequest.d.ts} +7 -3
  80. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js → createEmbeddedWalletRequest/createEmbeddedWalletRequest.js} +17 -18
  81. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/index.d.ts +1 -0
  82. package/src/lib/views/Passkey/utils/index.d.ts +1 -2
  83. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +2 -2
  84. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +2 -2
  85. package/src/lib/views/WalletList/WalletList.cjs +3 -6
  86. package/src/lib/views/WalletList/WalletList.js +3 -6
  87. package/src/lib/views/WalletLockedView/WalletLockedView.cjs +2 -8
  88. package/src/lib/views/WalletLockedView/WalletLockedView.js +2 -8
  89. package/src/lib/views/viewToComponentMap.d.ts +4 -2
  90. package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.cjs +2 -1
  91. package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.js +2 -1
  92. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.cjs +1 -1
  93. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.js +1 -1
  94. package/src/lib/utils/functions/isEmbeddedWalletPresent/index.d.ts +0 -1
  95. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.cjs +0 -19
  96. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.d.ts +0 -1
  97. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js +0 -15
  98. package/src/lib/views/Passkey/utils/createEmbeddedWalletWithPasskey/index.d.ts +0 -1
  99. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs +0 -65
  100. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.d.ts +0 -16
  101. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js +0 -61
  102. package/src/lib/views/Passkey/utils/createPregeneratedWallet/index.d.ts +0 -1
@@ -1,11 +1,16 @@
1
1
  'use client'
2
- import { isEmbeddedWalletPresent } from '../isEmbeddedWalletPresent/isEmbeddedWalletPresent.js';
2
+ import { findEmbeddedWalletFromVerifiedCredentials } from '../findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js';
3
3
 
4
4
  const hasEmbeddedWallet = (jwt, walletName) => {
5
+ var _a;
5
6
  if (!jwt) {
6
7
  return false;
7
8
  }
8
- return isEmbeddedWalletPresent(jwt, walletName);
9
+ const embeddedWallet = findEmbeddedWalletFromVerifiedCredentials(jwt);
10
+ if (!walletName) {
11
+ return Boolean(embeddedWallet);
12
+ }
13
+ return Boolean((_a = embeddedWallet === null || embeddedWallet === void 0 ? void 0 : embeddedWallet.walletName) === null || _a === void 0 ? void 0 : _a.startsWith(walletName));
9
14
  };
10
15
 
11
16
  export { hasEmbeddedWallet };
@@ -36,7 +36,7 @@ export * from './groupBy';
36
36
  export * from './isAccountAbstractionWallet';
37
37
  export * from './isEmailProviderEnabled';
38
38
  export * from './isEmailValid';
39
- export * from './isEmbeddedWalletPresent';
39
+ export * from './addPasskeyIdentifierToWalletConnector';
40
40
  export * from './isMagicConnector';
41
41
  export * from './isNetworkUnsupported';
42
42
  export * from './isOnrampProvider';
@@ -17,7 +17,8 @@ var useElementById = require('../useElementById/useElementById.cjs');
17
17
  * confirms or cancels the operation, and must return the ReactNode for the modal to be displayed.
18
18
  */
19
19
  const useConfirmationModal = ({ elementId, }) => {
20
- const modalRootElementRef = useElementById.useElementById(elementId);
20
+ const { createRootElement } = useElementById.useElementById();
21
+ const modalRootElementRef = createRootElement(elementId);
21
22
  const [node, setNode] = React.useState(null);
22
23
  const open = React.useCallback((builder) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
23
24
  const promise = new Promise((resolve, reject) => {
@@ -13,7 +13,8 @@ import { useElementById } from '../useElementById/useElementById.js';
13
13
  * confirms or cancels the operation, and must return the ReactNode for the modal to be displayed.
14
14
  */
15
15
  const useConfirmationModal = ({ elementId, }) => {
16
- const modalRootElementRef = useElementById(elementId);
16
+ const { createRootElement } = useElementById();
17
+ const modalRootElementRef = createRootElement(elementId);
17
18
  const [node, setNode] = useState(null);
18
19
  const open = useCallback((builder) => __awaiter(void 0, void 0, void 0, function* () {
19
20
  const promise = new Promise((resolve, reject) => {
@@ -34,9 +34,8 @@ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
34
34
  require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
35
35
  require('../../../context/VerificationContext/VerificationContext.cjs');
36
36
  require('react-dom');
37
- var createEmbeddedWalletWithPasskey = require('../../../views/Passkey/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs');
37
+ var createEmbeddedWalletRequest = require('../../../views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs');
38
38
  var findPasskeyEmailWalletConnector = require('../../../views/Passkey/utils/findPasskeyEmailWalletConnector/findPasskeyEmailWalletConnector.cjs');
39
- var createPregeneratedWallet = require('../../../views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs');
40
39
  var smartWallet = require('../useWalletConnectors/utils/smartWallet/smartWallet.cjs');
41
40
  var findPrimaryEmbeddedChain = require('../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
42
41
  require('../../../context/WalletContext/WalletContext.cjs');
@@ -84,7 +83,7 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
84
83
  // This hook needs to be async that's why it's not using useMutation
85
84
  const useCreateDynamicEmbeddedWalletMutation = () => {
86
85
  var _a, _b;
87
- const { setPrimaryWalletId, setCallback, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext.useInternalDynamicContext();
86
+ const { setPrimaryWalletId, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext.useInternalDynamicContext();
88
87
  const [isLoading, setIsLoading] = React.useState(false);
89
88
  const [error, setError] = React.useState();
90
89
  const embeddedChainConfig = ((_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.chainConfigurations) || [];
@@ -92,19 +91,18 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
92
91
  const embeddedChains = embeddedChainConfig
93
92
  .filter((chain) => chain.enabled)
94
93
  .map((c) => (c.name === 'SOL' ? sdkApiCore.ChainEnum.Sol : sdkApiCore.ChainEnum.Evm));
95
- const createDynamicEmbeddedWalletMutation = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, }) {
94
+ const createDynamicEmbeddedWalletMutation = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }) {
96
95
  var _d, _e;
97
96
  setIsLoading(true);
98
- const createEmbeddedWalletMethodToUse = withAuthenticator
99
- ? createEmbeddedWalletWithPasskey.createEmbeddedWalletWithPasskey
100
- : createPregeneratedWallet.createPregeneratedWallet;
101
97
  try {
102
- const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletMethodToUse({
98
+ const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletRequest.createEmbeddedWalletRequest({
103
99
  authToken,
104
- chains: embeddedChains,
100
+ chains: chains !== null && chains !== void 0 ? chains : embeddedChains,
105
101
  environmentId,
106
102
  user: user !== null && user !== void 0 ? user : createUserProfile.createUserProfile(decodedJwt),
107
103
  walletConnector: findPasskeyEmailWalletConnector.findPasskeyEmailWalletConnector(walletConnectorOptions, primaryEmbeddedChain),
104
+ webAuthnAttestation: options === null || options === void 0 ? void 0 : options.webAuthnAttestation,
105
+ withAuthenticator,
108
106
  });
109
107
  const turnkeyVerifiedCredentials = (_d = updatedDecodedJwt === null || updatedDecodedJwt === void 0 ? void 0 : updatedDecodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
110
108
  /** It's not authenticated if it's a turnkey wallet that still hasn't created a passkey */
@@ -131,7 +129,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
131
129
  }
132
130
  setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
133
131
  setShowAuthFlow(false, { performMultiWalletChecks: false });
134
- dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, authToken);
132
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, signersResponse.jwt);
135
133
  }
136
134
  catch (err) {
137
135
  setError(err);
@@ -141,7 +139,14 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
141
139
  finally {
142
140
  setIsLoading(false);
143
141
  }
144
- }), [setCallback, setPrimaryWalletId, setShowAuthFlow, setUser, user]);
142
+ }), [
143
+ embeddedChains,
144
+ primaryEmbeddedChain,
145
+ setPrimaryWalletId,
146
+ setShowAuthFlow,
147
+ setUser,
148
+ user,
149
+ ]);
145
150
  return {
146
151
  createDynamicEmbeddedWalletMutation,
147
152
  error,
@@ -1,4 +1,5 @@
1
- import { DynamicJwt } from '@dynamic-labs/sdk-api-core';
1
+ import { DynamicJwt, ChainEnum } from '@dynamic-labs/sdk-api-core';
2
+ import { WebAuthnAttestation } from '@dynamic-labs/wallet-connector-core';
2
3
  import { WalletOption } from '../../../shared';
3
4
  type MutationProps = {
4
5
  authToken: string | undefined;
@@ -6,9 +7,13 @@ type MutationProps = {
6
7
  walletConnectorOptions: WalletOption[];
7
8
  decodedJwt: DynamicJwt;
8
9
  withAuthenticator: boolean;
10
+ options?: {
11
+ webAuthnAttestation: WebAuthnAttestation;
12
+ };
13
+ chains?: ChainEnum[];
9
14
  };
10
15
  export declare const useCreateDynamicEmbeddedWalletMutation: () => {
11
- createDynamicEmbeddedWalletMutation: ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, }: MutationProps) => Promise<void>;
16
+ createDynamicEmbeddedWalletMutation: ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }: MutationProps) => Promise<void>;
12
17
  error: unknown;
13
18
  isLoading: boolean;
14
19
  };
@@ -30,9 +30,8 @@ import '../../../context/AccountExistsContext/AccountExistsContext.js';
30
30
  import '../../../context/UserWalletsContext/UserWalletsContext.js';
31
31
  import '../../../context/VerificationContext/VerificationContext.js';
32
32
  import 'react-dom';
33
- import { createEmbeddedWalletWithPasskey } from '../../../views/Passkey/utils/createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js';
33
+ import { createEmbeddedWalletRequest } from '../../../views/Passkey/utils/createEmbeddedWalletRequest/createEmbeddedWalletRequest.js';
34
34
  import { findPasskeyEmailWalletConnector } from '../../../views/Passkey/utils/findPasskeyEmailWalletConnector/findPasskeyEmailWalletConnector.js';
35
- import { createPregeneratedWallet } from '../../../views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js';
36
35
  import { findSmartWallet, initializeSmartWallet } from '../useWalletConnectors/utils/smartWallet/smartWallet.js';
37
36
  import { findPrimaryEmbeddedChain } from '../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js';
38
37
  import '../../../context/WalletContext/WalletContext.js';
@@ -80,7 +79,7 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
80
79
  // This hook needs to be async that's why it's not using useMutation
81
80
  const useCreateDynamicEmbeddedWalletMutation = () => {
82
81
  var _a, _b;
83
- const { setPrimaryWalletId, setCallback, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext();
82
+ const { setPrimaryWalletId, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext();
84
83
  const [isLoading, setIsLoading] = useState(false);
85
84
  const [error, setError] = useState();
86
85
  const embeddedChainConfig = ((_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.embeddedWallets) === null || _b === void 0 ? void 0 : _b.chainConfigurations) || [];
@@ -88,19 +87,18 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
88
87
  const embeddedChains = embeddedChainConfig
89
88
  .filter((chain) => chain.enabled)
90
89
  .map((c) => (c.name === 'SOL' ? ChainEnum.Sol : ChainEnum.Evm));
91
- const createDynamicEmbeddedWalletMutation = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, }) {
90
+ const createDynamicEmbeddedWalletMutation = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }) {
92
91
  var _d, _e;
93
92
  setIsLoading(true);
94
- const createEmbeddedWalletMethodToUse = withAuthenticator
95
- ? createEmbeddedWalletWithPasskey
96
- : createPregeneratedWallet;
97
93
  try {
98
- const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletMethodToUse({
94
+ const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletRequest({
99
95
  authToken,
100
- chains: embeddedChains,
96
+ chains: chains !== null && chains !== void 0 ? chains : embeddedChains,
101
97
  environmentId,
102
98
  user: user !== null && user !== void 0 ? user : createUserProfile(decodedJwt),
103
99
  walletConnector: findPasskeyEmailWalletConnector(walletConnectorOptions, primaryEmbeddedChain),
100
+ webAuthnAttestation: options === null || options === void 0 ? void 0 : options.webAuthnAttestation,
101
+ withAuthenticator,
104
102
  });
105
103
  const turnkeyVerifiedCredentials = (_d = updatedDecodedJwt === null || updatedDecodedJwt === void 0 ? void 0 : updatedDecodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
106
104
  /** It's not authenticated if it's a turnkey wallet that still hasn't created a passkey */
@@ -127,7 +125,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
127
125
  }
128
126
  setUser(updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
129
127
  setShowAuthFlow(false, { performMultiWalletChecks: false });
130
- dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, authToken);
128
+ dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, signersResponse.jwt);
131
129
  }
132
130
  catch (err) {
133
131
  setError(err);
@@ -137,7 +135,14 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
137
135
  finally {
138
136
  setIsLoading(false);
139
137
  }
140
- }), [setCallback, setPrimaryWalletId, setShowAuthFlow, setUser, user]);
138
+ }), [
139
+ embeddedChains,
140
+ primaryEmbeddedChain,
141
+ setPrimaryWalletId,
142
+ setShowAuthFlow,
143
+ setUser,
144
+ user,
145
+ ]);
141
146
  return {
142
147
  createDynamicEmbeddedWalletMutation,
143
148
  error,
@@ -77,16 +77,16 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
77
77
  // This hook can be used to get all of the user's scopes (nft/token gates)
78
78
  // and check if the user has a specific scopes with some logic AND/OR (nft/token gate)
79
79
  const useDynamicScopes = () => {
80
- const { decodedAuthToken } = useInternalDynamicContext.useInternalDynamicContext();
80
+ const { user } = useInternalDynamicContext.useInternalDynamicContext();
81
81
  const userScopes = React.useMemo(() => {
82
- const { scope } = decodedAuthToken || {};
82
+ const { scope } = user || {};
83
83
  if (!scope)
84
84
  return [];
85
85
  // We need to split the scopes string into an array of scopes
86
86
  // because the scopes string is a space separated string of scopes
87
87
  // e.g. '"scope": "customerservice marketing tech"'
88
88
  return scope.split(' ');
89
- }, [decodedAuthToken]);
89
+ }, [user]);
90
90
  // If customer will set scopes to an empty string it will return false
91
91
  const userHasScopes = (scopes, logicOperator = 'OR') => {
92
92
  if (!scopes.length)
@@ -73,16 +73,16 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
73
73
  // This hook can be used to get all of the user's scopes (nft/token gates)
74
74
  // and check if the user has a specific scopes with some logic AND/OR (nft/token gate)
75
75
  const useDynamicScopes = () => {
76
- const { decodedAuthToken } = useInternalDynamicContext();
76
+ const { user } = useInternalDynamicContext();
77
77
  const userScopes = useMemo(() => {
78
- const { scope } = decodedAuthToken || {};
78
+ const { scope } = user || {};
79
79
  if (!scope)
80
80
  return [];
81
81
  // We need to split the scopes string into an array of scopes
82
82
  // because the scopes string is a space separated string of scopes
83
83
  // e.g. '"scope": "customerservice marketing tech"'
84
84
  return scope.split(' ');
85
- }, [decodedAuthToken]);
85
+ }, [user]);
86
86
  // If customer will set scopes to an empty string it will return false
87
87
  const userHasScopes = (scopes, logicOperator = 'OR') => {
88
88
  if (!scopes.length)
@@ -5,26 +5,41 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var React = require('react');
7
7
 
8
- const useElementById = (elementId = 'dynamic-modal') => {
9
- const modalRootElement = React.useRef(null);
10
- if (typeof window !== 'undefined') {
11
- modalRootElement.current = window.document.getElementById(elementId);
8
+ const useElementById = () => {
9
+ const targetElement = React.useRef(null);
10
+ const createRootElement = (elementId = 'dynamic-modal', parentElementId) => {
11
+ if (typeof window === 'undefined')
12
+ return targetElement;
13
+ const isElementCreated = window.document.getElementById(elementId);
14
+ if (isElementCreated) {
15
+ targetElement.current = isElementCreated;
16
+ return targetElement;
17
+ }
18
+ const parentElement = parentElementId
19
+ ? window.document.getElementById(parentElementId)
20
+ : undefined;
12
21
  // creates div and attaches it to the body
13
- if (!modalRootElement.current) {
14
- modalRootElement.current = window.document.createElement('div');
15
- modalRootElement.current.setAttribute('id', elementId);
16
- modalRootElement.current.setAttribute('class', elementId);
17
- modalRootElement.current.setAttribute('data-testid', elementId);
18
- /**
19
- * Setting the pointer-events to auto is necessary to allow the user to interact with the modal
20
- * when other packages that use a modal set the pointer-events to none on the body element.
21
- * For example: https://reservoir.tools/ use chakra-ui and sets the pointer-events to none on the body element.
22
- */
23
- modalRootElement.current.style.pointerEvents = 'auto';
24
- window.document.body.appendChild(modalRootElement.current);
22
+ targetElement.current = window.document.createElement('div');
23
+ targetElement.current.setAttribute('id', elementId);
24
+ targetElement.current.setAttribute('class', elementId);
25
+ targetElement.current.setAttribute('data-testid', elementId);
26
+ /**
27
+ * Setting the pointer-events to auto is necessary to allow the user to interact with the modal
28
+ * when other packages that use a modal set the pointer-events to none on the body element.
29
+ * For example: https://reservoir.tools/ use chakra-ui and sets the pointer-events to none on the body element.
30
+ */
31
+ targetElement.current.style.pointerEvents = 'auto';
32
+ if (parentElement) {
33
+ parentElement.appendChild(targetElement.current);
34
+ }
35
+ else {
36
+ window.document.body.appendChild(targetElement.current);
25
37
  }
26
- }
27
- return modalRootElement;
38
+ return targetElement;
39
+ };
40
+ return {
41
+ createRootElement,
42
+ };
28
43
  };
29
44
 
30
45
  exports.useElementById = useElementById;
@@ -1,2 +1,4 @@
1
1
  import React from 'react';
2
- export declare const useElementById: (elementId?: string) => React.MutableRefObject<HTMLElement>;
2
+ export declare const useElementById: () => {
3
+ createRootElement: (elementId?: string, parentElementId?: string) => React.MutableRefObject<HTMLElement>;
4
+ };
@@ -1,26 +1,41 @@
1
1
  'use client'
2
2
  import { useRef } from 'react';
3
3
 
4
- const useElementById = (elementId = 'dynamic-modal') => {
5
- const modalRootElement = useRef(null);
6
- if (typeof window !== 'undefined') {
7
- modalRootElement.current = window.document.getElementById(elementId);
4
+ const useElementById = () => {
5
+ const targetElement = useRef(null);
6
+ const createRootElement = (elementId = 'dynamic-modal', parentElementId) => {
7
+ if (typeof window === 'undefined')
8
+ return targetElement;
9
+ const isElementCreated = window.document.getElementById(elementId);
10
+ if (isElementCreated) {
11
+ targetElement.current = isElementCreated;
12
+ return targetElement;
13
+ }
14
+ const parentElement = parentElementId
15
+ ? window.document.getElementById(parentElementId)
16
+ : undefined;
8
17
  // creates div and attaches it to the body
9
- if (!modalRootElement.current) {
10
- modalRootElement.current = window.document.createElement('div');
11
- modalRootElement.current.setAttribute('id', elementId);
12
- modalRootElement.current.setAttribute('class', elementId);
13
- modalRootElement.current.setAttribute('data-testid', elementId);
14
- /**
15
- * Setting the pointer-events to auto is necessary to allow the user to interact with the modal
16
- * when other packages that use a modal set the pointer-events to none on the body element.
17
- * For example: https://reservoir.tools/ use chakra-ui and sets the pointer-events to none on the body element.
18
- */
19
- modalRootElement.current.style.pointerEvents = 'auto';
20
- window.document.body.appendChild(modalRootElement.current);
18
+ targetElement.current = window.document.createElement('div');
19
+ targetElement.current.setAttribute('id', elementId);
20
+ targetElement.current.setAttribute('class', elementId);
21
+ targetElement.current.setAttribute('data-testid', elementId);
22
+ /**
23
+ * Setting the pointer-events to auto is necessary to allow the user to interact with the modal
24
+ * when other packages that use a modal set the pointer-events to none on the body element.
25
+ * For example: https://reservoir.tools/ use chakra-ui and sets the pointer-events to none on the body element.
26
+ */
27
+ targetElement.current.style.pointerEvents = 'auto';
28
+ if (parentElement) {
29
+ parentElement.appendChild(targetElement.current);
30
+ }
31
+ else {
32
+ window.document.body.appendChild(targetElement.current);
21
33
  }
22
- }
23
- return modalRootElement;
34
+ return targetElement;
35
+ };
36
+ return {
37
+ createRootElement,
38
+ };
24
39
  };
25
40
 
26
41
  export { useElementById };
@@ -93,12 +93,17 @@ const useEmbeddedWallet = () => {
93
93
  const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
94
94
  const { isLoadingEmbeddedWallet } = WalletContext.useWalletContext();
95
95
  const userHasEmbeddedWallet = () => hasEmbeddedWallet.hasEmbeddedWallet(getAuthToken.getAuthToken() || onboardingOnlyJwt);
96
- const createEmbeddedWallet = React.useCallback((chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
97
- if (yield canCreateMPCWallet(chain)) {
98
- const wallet = yield createCoinbaseMPCWallet(chain);
96
+ /**
97
+ * Creates Dynamic embedded wallet according to the settings
98
+ * @param chains - array of chains to create the wallet for
99
+ * @param options - options for the wallet creation
100
+ */
101
+ const createEmbeddedWallet = React.useCallback((chains, options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
102
+ if (yield canCreateMPCWallet(chains)) {
103
+ const wallet = yield createCoinbaseMPCWallet(chains);
99
104
  return wallet;
100
105
  }
101
- const wallet = yield createTurnkeyEmbeddedWallet(chain);
106
+ const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
102
107
  return wallet;
103
108
  }), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
104
109
  return {
@@ -1,4 +1,5 @@
1
1
  import { ChainEnum } from '@dynamic-labs/sdk-api-core';
2
+ import { WebAuthnAttestation } from '@dynamic-labs/wallet-connector-core';
2
3
  import { Wallet } from '../../../shared';
3
4
  /**
4
5
  * @returns {
@@ -9,13 +10,15 @@ import { Wallet } from '../../../shared';
9
10
  * }
10
11
  */
11
12
  export declare const useEmbeddedWallet: () => {
12
- readonly createEmbeddedWallet: (chain?: ChainEnum) => Promise<Wallet | undefined>;
13
+ readonly createEmbeddedWallet: (chains?: ChainEnum[], options?: {
14
+ webAuthnAttestation: WebAuthnAttestation;
15
+ }) => Promise<Wallet | undefined>;
13
16
  readonly createOrRestoreSession: ({ oneTimeCode }: {
14
17
  oneTimeCode?: string | undefined;
15
18
  }) => Promise<string>;
16
- readonly createPasskey: ({ oneTimeCode }: {
19
+ readonly createPasskey: ({ oneTimeCode, }: {
17
20
  oneTimeCode?: string | undefined;
18
- }) => Promise<import("dist/packages/wallet-connector-core/src").WebAuthnAttestation>;
21
+ }) => Promise<WebAuthnAttestation>;
19
22
  readonly createPassword: (showIntro?: boolean | undefined) => Promise<string>;
20
23
  readonly getPasskeys: () => Promise<import("@dynamic-labs/sdk-api-core").UserPasskey[]>;
21
24
  readonly isLoadingEmbeddedWallet: boolean;
@@ -89,12 +89,17 @@ const useEmbeddedWallet = () => {
89
89
  const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
90
90
  const { isLoadingEmbeddedWallet } = useWalletContext();
91
91
  const userHasEmbeddedWallet = () => hasEmbeddedWallet(getAuthToken() || onboardingOnlyJwt);
92
- const createEmbeddedWallet = useCallback((chain) => __awaiter(void 0, void 0, void 0, function* () {
93
- if (yield canCreateMPCWallet(chain)) {
94
- const wallet = yield createCoinbaseMPCWallet(chain);
92
+ /**
93
+ * Creates Dynamic embedded wallet according to the settings
94
+ * @param chains - array of chains to create the wallet for
95
+ * @param options - options for the wallet creation
96
+ */
97
+ const createEmbeddedWallet = useCallback((chains, options) => __awaiter(void 0, void 0, void 0, function* () {
98
+ if (yield canCreateMPCWallet(chains)) {
99
+ const wallet = yield createCoinbaseMPCWallet(chains);
95
100
  return wallet;
96
101
  }
97
- const wallet = yield createTurnkeyEmbeddedWallet(chain);
102
+ const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
98
103
  return wallet;
99
104
  }), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
100
105
  return {
@@ -128,7 +128,7 @@ const useCoinbaseMPC = () => {
128
128
  setPrimaryWalletId(newSelectedCredentialWallet.id);
129
129
  setUser(user);
130
130
  connector.setVerifiedCredentials(user.verifiedCredentials);
131
- return newSelectedCredentialWallet;
131
+ return { authToken: response === null || response === void 0 ? void 0 : response.jwt, newSelectedCredentialWallet };
132
132
  }), [
133
133
  appName,
134
134
  consumeNonce,
@@ -147,7 +147,7 @@ const useCoinbaseMPC = () => {
147
147
  : sdkApiCore.PasswordSourceTypeEnum.Dynamic;
148
148
  try {
149
149
  const backupCode = yield connector.generateWallet(source, initialWalletPassword);
150
- const jwtVerifiedCredential = yield linkCoinbaseMPCWallet({
150
+ const { authToken, newSelectedCredentialWallet } = yield linkCoinbaseMPCWallet({
151
151
  backupCode,
152
152
  connector,
153
153
  jwt,
@@ -160,9 +160,9 @@ const useCoinbaseMPC = () => {
160
160
  chain: (connector === null || connector === void 0 ? void 0 : connector.connectedChain) || '',
161
161
  connected: true,
162
162
  connector,
163
- id: jwtVerifiedCredential.id,
163
+ id: newSelectedCredentialWallet.id,
164
164
  };
165
- dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, jwtVerifiedCredential, jwt);
165
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, newSelectedCredentialWallet, authToken);
166
166
  return coinbaseMPCWallet;
167
167
  }
168
168
  catch (error) {
@@ -175,7 +175,7 @@ const useCoinbaseMPC = () => {
175
175
  }
176
176
  return undefined;
177
177
  }), [linkCoinbaseMPCWallet, handleLogOut, setError]);
178
- const createCoinbaseMPCWallet = React.useCallback((jwt_1, decodedJwt_1, ...args_1) => _tslib.__awaiter(void 0, [jwt_1, decodedJwt_1, ...args_1], void 0, function* (jwt, decodedJwt, chain = sdkApiCore.ChainEnum.Evm, password) {
178
+ const createCoinbaseMPCWallet = React.useCallback((jwt_1, decodedJwt_1, ...args_1) => _tslib.__awaiter(void 0, [jwt_1, decodedJwt_1, ...args_1], void 0, function* (jwt, decodedJwt, chains = [sdkApiCore.ChainEnum.Evm], password) {
179
179
  var _b;
180
180
  const connector = (_b = findCoinbaseMPCWallet.findCoinbaseMPCWallet(walletConnectorOptions)) === null || _b === void 0 ? void 0 : _b.walletConnector;
181
181
  if (!connector || !walletConnectorCore.isCoinbaseMpcWalletConnector(connector)) {
@@ -193,7 +193,7 @@ const useCoinbaseMPC = () => {
193
193
  if (fetchAuthToken) {
194
194
  connector.setAuthTokenFetcher(fetchAuthToken);
195
195
  }
196
- const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
196
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chains);
197
197
  // if user already has embedded wallet, set it as primary wallet and return
198
198
  if (embeddedWalletVerifiedCredential) {
199
199
  return returnExistingCoinbaseMPCWallet(connector, decodedJwt, embeddedWalletVerifiedCredential);
@@ -1,5 +1,5 @@
1
1
  import { ChainEnum, DynamicJwt } from '@dynamic-labs/sdk-api-core';
2
2
  import { Wallet } from '../../../../../shared';
3
3
  export declare const useCoinbaseMPC: () => {
4
- createCoinbaseMPCWallet: (jwt: string, decodedJwt: DynamicJwt, chain?: ChainEnum, password?: string) => Promise<Wallet | undefined>;
4
+ createCoinbaseMPCWallet: (jwt: string, decodedJwt: DynamicJwt, chains?: ChainEnum[], password?: string) => Promise<Wallet | undefined>;
5
5
  };
@@ -124,7 +124,7 @@ const useCoinbaseMPC = () => {
124
124
  setPrimaryWalletId(newSelectedCredentialWallet.id);
125
125
  setUser(user);
126
126
  connector.setVerifiedCredentials(user.verifiedCredentials);
127
- return newSelectedCredentialWallet;
127
+ return { authToken: response === null || response === void 0 ? void 0 : response.jwt, newSelectedCredentialWallet };
128
128
  }), [
129
129
  appName,
130
130
  consumeNonce,
@@ -143,7 +143,7 @@ const useCoinbaseMPC = () => {
143
143
  : PasswordSourceTypeEnum.Dynamic;
144
144
  try {
145
145
  const backupCode = yield connector.generateWallet(source, initialWalletPassword);
146
- const jwtVerifiedCredential = yield linkCoinbaseMPCWallet({
146
+ const { authToken, newSelectedCredentialWallet } = yield linkCoinbaseMPCWallet({
147
147
  backupCode,
148
148
  connector,
149
149
  jwt,
@@ -156,9 +156,9 @@ const useCoinbaseMPC = () => {
156
156
  chain: (connector === null || connector === void 0 ? void 0 : connector.connectedChain) || '',
157
157
  connected: true,
158
158
  connector,
159
- id: jwtVerifiedCredential.id,
159
+ id: newSelectedCredentialWallet.id,
160
160
  };
161
- dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, jwtVerifiedCredential, jwt);
161
+ dynamicEvents.emit('embeddedWalletCreated', coinbaseMPCWallet, newSelectedCredentialWallet, authToken);
162
162
  return coinbaseMPCWallet;
163
163
  }
164
164
  catch (error) {
@@ -171,7 +171,7 @@ const useCoinbaseMPC = () => {
171
171
  }
172
172
  return undefined;
173
173
  }), [linkCoinbaseMPCWallet, handleLogOut, setError]);
174
- const createCoinbaseMPCWallet = useCallback((jwt_1, decodedJwt_1, ...args_1) => __awaiter(void 0, [jwt_1, decodedJwt_1, ...args_1], void 0, function* (jwt, decodedJwt, chain = ChainEnum.Evm, password) {
174
+ const createCoinbaseMPCWallet = useCallback((jwt_1, decodedJwt_1, ...args_1) => __awaiter(void 0, [jwt_1, decodedJwt_1, ...args_1], void 0, function* (jwt, decodedJwt, chains = [ChainEnum.Evm], password) {
175
175
  var _b;
176
176
  const connector = (_b = findCoinbaseMPCWallet(walletConnectorOptions)) === null || _b === void 0 ? void 0 : _b.walletConnector;
177
177
  if (!connector || !isCoinbaseMpcWalletConnector(connector)) {
@@ -189,7 +189,7 @@ const useCoinbaseMPC = () => {
189
189
  if (fetchAuthToken) {
190
190
  connector.setAuthTokenFetcher(fetchAuthToken);
191
191
  }
192
- const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
192
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt, chains);
193
193
  // if user already has embedded wallet, set it as primary wallet and return
194
194
  if (embeddedWalletVerifiedCredential) {
195
195
  return returnExistingCoinbaseMPCWallet(connector, decodedJwt, embeddedWalletVerifiedCredential);
@@ -101,12 +101,12 @@ const useMPCEmbeddedWallet = () => {
101
101
  const { isLoadingEmbeddedWallet, setIsLoadingEmbeddedWallet } = WalletContext.useWalletContext();
102
102
  const userHasEmbeddedWallet = () => hasEmbeddedWallet.hasEmbeddedWallet(getAuthToken.getAuthToken() || onboardingOnlyJwt, 'coinbase');
103
103
  const createPassword = React.useCallback((showIntro) => _tslib.__awaiter(void 0, void 0, void 0, function* () { return internalCreatePassword(showIntro); }), [internalCreatePassword]);
104
- const prepareToCreateMPCWallet = React.useCallback((chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
104
+ const prepareToCreateMPCWallet = React.useCallback((chains) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
105
105
  var _a, _b, _c, _d;
106
106
  const jwt = (_a = getAuthToken.getAuthToken()) !== null && _a !== void 0 ? _a : onboardingOnlyJwt;
107
107
  const { decodedJwt } = validateUserIsLoggedIn.validateUserIsLoggedIn(jwt);
108
108
  const userWaletsCredentials = getUserWalletsFromVerifiedCredentials.getUserWalletsFromVerifiedCredentials(jwt);
109
- const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
109
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chains);
110
110
  const isManualMode = ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation) === false;
111
111
  // if user has a wallet and it's not embedded,
112
112
  // throw error to follow another flow and set up the right wallet
@@ -126,24 +126,24 @@ const useMPCEmbeddedWallet = () => {
126
126
  connector.setRequiredPassword((_d = requiresPasswordForEmbeddedWallet.requiresPasswordForEmbeddedWallet(projectSettings)) !== null && _d !== void 0 ? _d : false);
127
127
  return { decodedJwt, embeddedWalletVerifiedCredential, jwt };
128
128
  }), [onboardingOnlyJwt, projectSettings, walletConnectorOptions]);
129
- const canCreateMPCWallet = React.useCallback((chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
129
+ const canCreateMPCWallet = React.useCallback((chains) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
130
130
  try {
131
- yield prepareToCreateMPCWallet(chain);
131
+ yield prepareToCreateMPCWallet(chains);
132
132
  return true;
133
133
  }
134
134
  catch (e) {
135
135
  return false;
136
136
  }
137
137
  }), [prepareToCreateMPCWallet]);
138
- const createEmbeddedWallet = React.useCallback((chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
139
- const { decodedJwt, embeddedWalletVerifiedCredential, jwt } = yield prepareToCreateMPCWallet(chain);
138
+ const createEmbeddedWallet = React.useCallback((chains) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
139
+ const { decodedJwt, embeddedWalletVerifiedCredential, jwt } = yield prepareToCreateMPCWallet(chains);
140
140
  setIsLoadingEmbeddedWallet(true);
141
141
  let password;
142
142
  if (!embeddedWalletVerifiedCredential &&
143
143
  requiresPasswordForEmbeddedWalletOnSignup.requiresPasswordForEmbeddedWalletOnSignup(projectSettings)) {
144
144
  password = yield internalCreatePassword(false, true);
145
145
  }
146
- const wallet = yield createCoinbaseMPCWallet(jwt, decodedJwt, chain, password);
146
+ const wallet = yield createCoinbaseMPCWallet(jwt, decodedJwt, chains, password);
147
147
  setIsLoadingEmbeddedWallet(false);
148
148
  return wallet;
149
149
  }), [
@@ -9,8 +9,8 @@ import { Wallet } from '../../../../shared';
9
9
  * }
10
10
  */
11
11
  export declare const useMPCEmbeddedWallet: () => {
12
- readonly canCreateMPCWallet: (chain?: ChainEnum) => Promise<boolean>;
13
- readonly createEmbeddedWallet: (chain?: ChainEnum) => Promise<Wallet | undefined>;
12
+ readonly canCreateMPCWallet: (chains?: ChainEnum[]) => Promise<boolean>;
13
+ readonly createEmbeddedWallet: (chains?: ChainEnum[]) => Promise<Wallet | undefined>;
14
14
  readonly createPassword: (showIntro?: boolean) => Promise<string>;
15
15
  readonly isLoadingEmbeddedWallet: boolean;
16
16
  readonly userHasEmbeddedWallet: () => boolean;