@dynamic-labs/sdk-react-core 2.1.0-alpha.1 → 2.1.0-alpha.10

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 (210) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +13 -14
  5. package/src/index.cjs +6 -2
  6. package/src/index.d.ts +2 -1
  7. package/src/index.js +3 -1
  8. package/src/lib/Main.cjs +7 -0
  9. package/src/lib/Main.js +7 -0
  10. package/src/lib/components/Alert/Alert.cjs +2 -2
  11. package/src/lib/components/Alert/Alert.js +2 -2
  12. package/src/lib/components/Alert/Alert.types.d.ts +1 -0
  13. package/src/lib/components/EmailForm/EmailForm.cjs +1 -1
  14. package/src/lib/components/EmailForm/EmailForm.js +1 -1
  15. package/src/lib/components/PhoneNumberField/PhoneNumberField.cjs +1 -1
  16. package/src/lib/components/PhoneNumberField/PhoneNumberField.js +1 -1
  17. package/src/lib/components/Portal/Portal.cjs +2 -1
  18. package/src/lib/components/Portal/Portal.js +2 -1
  19. package/src/lib/components/RadioButton/RadioButton.cjs +14 -0
  20. package/src/lib/components/RadioButton/RadioButton.d.ts +5 -0
  21. package/src/lib/components/RadioButton/RadioButton.js +10 -0
  22. package/src/lib/components/RadioButton/index.d.ts +1 -0
  23. package/src/lib/components/Tooltip/Tooltip.cjs +2 -1
  24. package/src/lib/components/Tooltip/Tooltip.js +2 -1
  25. package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.cjs +1 -1
  26. package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.d.ts +2 -1
  27. package/src/lib/components/UserProfile/parts/UserProfileField/UserProfileField.js +1 -1
  28. package/src/lib/components/index.d.ts +1 -0
  29. package/src/lib/context/DynamicContext/DynamicContext.cjs +23 -7
  30. package/src/lib/context/DynamicContext/DynamicContext.d.ts +5 -0
  31. package/src/lib/context/DynamicContext/DynamicContext.js +20 -4
  32. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.cjs +2 -2
  33. package/src/lib/context/DynamicContext/hooks/useTieCallbacksToEvents/useTieCallbacksToEvents.js +2 -2
  34. package/src/lib/context/DynamicContext/types/index.d.ts +0 -1
  35. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +5 -2
  36. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +5 -2
  37. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +2 -1
  38. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
  39. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +2 -1
  40. package/src/lib/context/ErrorBoundary/ErrorBoundary.cjs +64 -0
  41. package/src/lib/context/ErrorBoundary/ErrorBoundary.d.ts +3 -0
  42. package/src/lib/context/ErrorBoundary/ErrorBoundary.js +60 -0
  43. package/src/lib/context/ErrorBoundary/ErrorBoundaryBase.cjs +40 -0
  44. package/src/lib/context/ErrorBoundary/ErrorBoundaryBase.d.ts +14 -0
  45. package/src/lib/context/ErrorBoundary/ErrorBoundaryBase.js +36 -0
  46. package/src/lib/context/ErrorBoundary/ErrorBoundaryContext.cjs +24 -0
  47. package/src/lib/context/ErrorBoundary/ErrorBoundaryContext.d.ts +5 -0
  48. package/src/lib/context/ErrorBoundary/ErrorBoundaryContext.js +18 -0
  49. package/src/lib/context/ErrorBoundary/ErrorBoundaryExclude.cjs +17 -0
  50. package/src/lib/context/ErrorBoundary/ErrorBoundaryExclude.d.ts +4 -0
  51. package/src/lib/context/ErrorBoundary/ErrorBoundaryExclude.js +13 -0
  52. package/src/lib/context/ErrorBoundary/ErrorBoundaryInclude.cjs +17 -0
  53. package/src/lib/context/ErrorBoundary/ErrorBoundaryInclude.d.ts +4 -0
  54. package/src/lib/context/ErrorBoundary/ErrorBoundaryInclude.js +13 -0
  55. package/src/lib/context/ErrorBoundary/index.d.ts +3 -0
  56. package/src/lib/context/ErrorBoundary/types.d.ts +13 -0
  57. package/src/lib/context/ViewContext/ViewContext.cjs +2 -2
  58. package/src/lib/context/ViewContext/ViewContext.js +2 -2
  59. package/src/lib/context/ViewContext/types/index.d.ts +7 -2
  60. package/src/lib/data/api/user/user.cjs +16 -0
  61. package/src/lib/data/api/user/user.js +16 -1
  62. package/src/lib/data/api/wallets/wallets.cjs +26 -6
  63. package/src/lib/data/api/wallets/wallets.d.ts +4 -0
  64. package/src/lib/data/api/wallets/wallets.js +26 -7
  65. package/src/lib/events/dynamicEvents.d.ts +1 -1
  66. package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +6 -0
  67. package/src/lib/layout/DynamicAuthLayout/Header/header.js +6 -0
  68. package/src/lib/locale/en/translation.cjs +45 -4
  69. package/src/lib/locale/en/translation.d.ts +44 -3
  70. package/src/lib/locale/en/translation.js +45 -4
  71. package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +2 -1
  72. package/src/lib/shared/utils/classes/storage/localStorage.cjs +2 -2
  73. package/src/lib/shared/utils/classes/storage/localStorage.js +2 -2
  74. package/src/lib/styles/index.shadow.cjs +1 -1
  75. package/src/lib/styles/index.shadow.js +1 -1
  76. package/src/lib/utils/constants/errors.cjs +0 -2
  77. package/src/lib/utils/constants/errors.js +1 -2
  78. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.cjs +14 -0
  79. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.d.ts +3 -0
  80. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.js +10 -0
  81. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/index.d.ts +1 -0
  82. package/src/lib/utils/functions/createUserProfile/createUserProfile.cjs +1 -2
  83. package/src/lib/utils/functions/createUserProfile/createUserProfile.js +1 -2
  84. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs +3 -4
  85. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.d.ts +1 -1
  86. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js +4 -5
  87. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +12 -9
  88. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.d.ts +8 -2
  89. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +13 -10
  90. package/src/lib/utils/functions/findTurnkeyWallet/index.d.ts +1 -1
  91. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.cjs +5 -5
  92. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.d.ts +3 -2
  93. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.js +5 -5
  94. package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs +7 -2
  95. package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.js +7 -2
  96. package/src/lib/utils/functions/index.d.ts +2 -1
  97. package/src/lib/utils/functions/serializeWalletConnectors/index.d.ts +1 -0
  98. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.cjs +32 -0
  99. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.d.ts +2 -0
  100. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.js +28 -0
  101. package/src/lib/utils/hooks/index.d.ts +1 -0
  102. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +22 -17
  103. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +22 -17
  104. package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.cjs +2 -1
  105. package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.js +2 -1
  106. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +22 -18
  107. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.d.ts +7 -2
  108. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +22 -18
  109. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +8 -0
  110. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +8 -0
  111. package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.cjs +3 -3
  112. package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.js +3 -3
  113. package/src/lib/utils/hooks/useElementById/useElementById.cjs +33 -18
  114. package/src/lib/utils/hooks/useElementById/useElementById.d.ts +3 -1
  115. package/src/lib/utils/hooks/useElementById/useElementById.js +33 -18
  116. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +14 -10
  117. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +14 -2
  118. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +14 -10
  119. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +6 -6
  120. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.d.ts +1 -1
  121. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +6 -6
  122. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +8 -8
  123. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.d.ts +2 -2
  124. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +8 -8
  125. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +148 -46
  126. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +21 -8
  127. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +152 -50
  128. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +45 -18
  129. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.d.ts +4 -1
  130. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +45 -18
  131. package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.cjs +2 -2
  132. package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.js +2 -2
  133. package/src/lib/utils/hooks/useMergeUserAccounts/index.d.ts +1 -0
  134. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +99 -0
  135. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.d.ts +4 -0
  136. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +95 -0
  137. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +2 -1
  138. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +2 -1
  139. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +13 -4
  140. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +10 -2
  141. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +13 -4
  142. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.cjs +6 -13
  143. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.d.ts +1 -3
  144. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.js +6 -12
  145. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +5 -0
  146. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +6 -1
  147. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.cjs +25 -2
  148. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.js +25 -2
  149. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +2 -4
  150. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +2 -1
  151. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +2 -4
  152. package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.cjs +3 -3
  153. package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.js +3 -3
  154. package/src/lib/views/CollectUserDataView/useFields.cjs +1 -0
  155. package/src/lib/views/CollectUserDataView/useFields.d.ts +2 -0
  156. package/src/lib/views/CollectUserDataView/useFields.js +1 -0
  157. package/src/lib/views/EmailVerification/EmailVerification.cjs +38 -11
  158. package/src/lib/views/EmailVerification/EmailVerification.js +38 -11
  159. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +2 -2
  160. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +2 -2
  161. package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.cjs +126 -0
  162. package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.d.ts +6 -0
  163. package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.js +122 -0
  164. package/src/lib/views/MergeUserAccountsConflictsView/index.d.ts +1 -0
  165. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +123 -0
  166. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.d.ts +4 -0
  167. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +119 -0
  168. package/src/lib/views/MergeUserAccountsView/index.d.ts +1 -0
  169. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.cjs +3 -3
  170. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.js +3 -3
  171. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +2 -3
  172. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +2 -3
  173. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.cjs +2 -1
  174. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.js +2 -1
  175. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +9 -9
  176. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.d.ts +6 -1
  177. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +9 -9
  178. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +2 -1
  179. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +2 -1
  180. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs → createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs} +18 -19
  181. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.d.ts → createEmbeddedWalletRequest/createEmbeddedWalletRequest.d.ts} +7 -3
  182. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js → createEmbeddedWalletRequest/createEmbeddedWalletRequest.js} +18 -19
  183. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/index.d.ts +1 -0
  184. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs +16 -0
  185. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.d.ts +2 -0
  186. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js +12 -0
  187. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/index.d.ts +1 -0
  188. package/src/lib/views/Passkey/utils/index.d.ts +1 -2
  189. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +9 -9
  190. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +9 -9
  191. package/src/lib/views/WalletList/WalletList.cjs +3 -6
  192. package/src/lib/views/WalletList/WalletList.js +3 -6
  193. package/src/lib/views/WalletLockedView/WalletLockedView.cjs +2 -8
  194. package/src/lib/views/WalletLockedView/WalletLockedView.js +2 -8
  195. package/src/lib/views/viewToComponentMap.cjs +4 -0
  196. package/src/lib/views/viewToComponentMap.d.ts +6 -2
  197. package/src/lib/views/viewToComponentMap.js +4 -0
  198. package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.cjs +2 -1
  199. package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.js +2 -1
  200. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.cjs +1 -1
  201. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.js +1 -1
  202. package/src/lib/utils/functions/isEmbeddedWalletPresent/index.d.ts +0 -1
  203. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.cjs +0 -19
  204. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.d.ts +0 -1
  205. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js +0 -15
  206. package/src/lib/views/Passkey/utils/createEmbeddedWalletWithPasskey/index.d.ts +0 -1
  207. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs +0 -65
  208. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.d.ts +0 -16
  209. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js +0 -61
  210. package/src/lib/views/Passkey/utils/createPregeneratedWallet/index.d.ts +0 -1
@@ -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);
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);
@@ -40,9 +40,9 @@ require('../../../../context/UserWalletsContext/UserWalletsContext.cjs');
40
40
  require('../../../../context/VerificationContext/VerificationContext.cjs');
41
41
  require('react-dom');
42
42
  var WalletContext = require('../../../../context/WalletContext/WalletContext.cjs');
43
- var useEmbeddedWalletPassword = require('../../useEmbeddedWalletPassword/useEmbeddedWalletPassword.cjs');
44
43
  var validateUserIsLoggedIn = require('../../../validations/validateUserIsLoggedIn/validateUserIsLoggedIn.cjs');
45
44
  var validateMPCProviderEnabled = require('../../../validations/validateMPCProviderEnabled/validateMPCProviderEnabled.cjs');
45
+ var useEmbeddedWalletPassword = require('../../useEmbeddedWalletPassword/useEmbeddedWalletPassword.cjs');
46
46
  var useCoinbaseMPC = require('./useCoinbaseMPC/useCoinbaseMPC.cjs');
47
47
  require('../../../../context/ThemeContext/ThemeContext.cjs');
48
48
  require('@dynamic-labs/types');
@@ -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;
@@ -36,9 +36,9 @@ import '../../../../context/UserWalletsContext/UserWalletsContext.js';
36
36
  import '../../../../context/VerificationContext/VerificationContext.js';
37
37
  import 'react-dom';
38
38
  import { useWalletContext } from '../../../../context/WalletContext/WalletContext.js';
39
- import { useEmbeddedWalletPassword } from '../../useEmbeddedWalletPassword/useEmbeddedWalletPassword.js';
40
39
  import { validateUserIsLoggedIn } from '../../../validations/validateUserIsLoggedIn/validateUserIsLoggedIn.js';
41
40
  import { validateMPCProviderEnabled } from '../../../validations/validateMPCProviderEnabled/validateMPCProviderEnabled.js';
41
+ import { useEmbeddedWalletPassword } from '../../useEmbeddedWalletPassword/useEmbeddedWalletPassword.js';
42
42
  import { useCoinbaseMPC } from './useCoinbaseMPC/useCoinbaseMPC.js';
43
43
  import '../../../../context/ThemeContext/ThemeContext.js';
44
44
  import '@dynamic-labs/types';
@@ -97,12 +97,12 @@ const useMPCEmbeddedWallet = () => {
97
97
  const { isLoadingEmbeddedWallet, setIsLoadingEmbeddedWallet } = useWalletContext();
98
98
  const userHasEmbeddedWallet = () => hasEmbeddedWallet(getAuthToken() || onboardingOnlyJwt, 'coinbase');
99
99
  const createPassword = useCallback((showIntro) => __awaiter(void 0, void 0, void 0, function* () { return internalCreatePassword(showIntro); }), [internalCreatePassword]);
100
- const prepareToCreateMPCWallet = useCallback((chain) => __awaiter(void 0, void 0, void 0, function* () {
100
+ const prepareToCreateMPCWallet = useCallback((chains) => __awaiter(void 0, void 0, void 0, function* () {
101
101
  var _a, _b, _c, _d;
102
102
  const jwt = (_a = getAuthToken()) !== null && _a !== void 0 ? _a : onboardingOnlyJwt;
103
103
  const { decodedJwt } = validateUserIsLoggedIn(jwt);
104
104
  const userWaletsCredentials = getUserWalletsFromVerifiedCredentials(jwt);
105
- const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
105
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials(jwt, chains);
106
106
  const isManualMode = ((_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _b === void 0 ? void 0 : _b.automaticEmbeddedWalletCreation) === false;
107
107
  // if user has a wallet and it's not embedded,
108
108
  // throw error to follow another flow and set up the right wallet
@@ -122,24 +122,24 @@ const useMPCEmbeddedWallet = () => {
122
122
  connector.setRequiredPassword((_d = requiresPasswordForEmbeddedWallet(projectSettings)) !== null && _d !== void 0 ? _d : false);
123
123
  return { decodedJwt, embeddedWalletVerifiedCredential, jwt };
124
124
  }), [onboardingOnlyJwt, projectSettings, walletConnectorOptions]);
125
- const canCreateMPCWallet = useCallback((chain) => __awaiter(void 0, void 0, void 0, function* () {
125
+ const canCreateMPCWallet = useCallback((chains) => __awaiter(void 0, void 0, void 0, function* () {
126
126
  try {
127
- yield prepareToCreateMPCWallet(chain);
127
+ yield prepareToCreateMPCWallet(chains);
128
128
  return true;
129
129
  }
130
130
  catch (e) {
131
131
  return false;
132
132
  }
133
133
  }), [prepareToCreateMPCWallet]);
134
- const createEmbeddedWallet = useCallback((chain) => __awaiter(void 0, void 0, void 0, function* () {
135
- const { decodedJwt, embeddedWalletVerifiedCredential, jwt } = yield prepareToCreateMPCWallet(chain);
134
+ const createEmbeddedWallet = useCallback((chains) => __awaiter(void 0, void 0, void 0, function* () {
135
+ const { decodedJwt, embeddedWalletVerifiedCredential, jwt } = yield prepareToCreateMPCWallet(chains);
136
136
  setIsLoadingEmbeddedWallet(true);
137
137
  let password;
138
138
  if (!embeddedWalletVerifiedCredential &&
139
139
  requiresPasswordForEmbeddedWalletOnSignup(projectSettings)) {
140
140
  password = yield internalCreatePassword(false, true);
141
141
  }
142
- const wallet = yield createCoinbaseMPCWallet(jwt, decodedJwt, chain, password);
142
+ const wallet = yield createCoinbaseMPCWallet(jwt, decodedJwt, chains, password);
143
143
  setIsLoadingEmbeddedWallet(false);
144
144
  return wallet;
145
145
  }), [
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../../../_virtual/_tslib.cjs');
7
7
  var React = require('react');
8
+ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
8
9
  var utils = require('@dynamic-labs/utils');
9
10
  require('../../../../context/DynamicContext/DynamicContext.cjs');
10
- require('@dynamic-labs/sdk-api-core');
11
11
  var logger = require('../../../../shared/logger.cjs');
12
12
  require('@dynamic-labs/iconic');
13
13
  require('@dynamic-labs/wallet-connector-core');
@@ -28,12 +28,15 @@ require('@dynamic-labs/multi-wallet');
28
28
  var getAuthToken = require('../../../functions/getAuthToken/getAuthToken.cjs');
29
29
  require('react-international-phone');
30
30
  var getUserWalletsFromVerifiedCredentials = require('../../../functions/getUserWalletsFromVerifiedCredentials/getUserWalletsFromVerifiedCredentials.cjs');
31
+ var addPasskeyIdentifierToWalletConnector = require('../../../functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.cjs');
31
32
  require('viem');
32
33
  require('viem/chains');
33
34
  var getEOAWallet = require('../../../functions/getEOAWallet/getEOAWallet.cjs');
34
35
  require('../../../../config/ApiEndpoint.cjs');
35
36
  var embeddedWallets = require('../../../../data/api/embeddedWallets/embeddedWallets.cjs');
36
37
  require('../../../../locale/locale.cjs');
38
+ var updateJWTAndCreateUserProfile = require('../../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.cjs');
39
+ var getUserVerifiedCredentialType = require('../../../functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.cjs');
37
40
  var hasEmbeddedWallet = require('../../../functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs');
38
41
  var getEmbeddedWalletAuthHandler = require('../../../functions/getEmbeddedWalletAuthHandler/getEmbeddedWalletAuthHandler.cjs');
39
42
  var getEmbeddedWalletSessionExpiration = require('../../../functions/getEmbeddedWalletSessionExpiration/getEmbeddedWalletSessionExpiration.cjs');
@@ -92,30 +95,46 @@ require('../../../../views/TransactionConfirmationView/helpers/transactionErrorM
92
95
  require('../../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
93
96
  var useInternalDynamicContext = require('../../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
94
97
 
95
- // Hook exposed to customers and used internally to trigger dynamic embedded wallet creation
98
+ // Hook exposed to customers
96
99
  /**
100
+ *
97
101
  * @returns {
98
- * createEmbeddedWallet, - creates Dynamic or MPC embedded wallet according to the settings
99
- * isLoadingEmbeddedWallet, - loading state of the embedded wallet
100
- * userHasEmbeddedWallet, - checks if the user has an embedded wallet
102
+ * createEmbeddedWallet, - creates Secure enclave embedded wallet according to the settings
103
+ * createOrRestoreSession, - creates or restores a embedded wallet session
104
+ * createPasskey, - creates a new passkey both for an existing wallet or a wallet to be created
105
+ * getPasskeys, - gets all passkeys for the user
106
+ * isLoadingEmbeddedWallet, - loading state of the embedded wallet
107
+ * isSessionActive, - checks if the embedded wallet session is active
108
+ * sendOneTimeCode, - sends a one-time code to the user so they can create a session or add a new passkey
109
+ * userHasEmbeddedWallet, - checks if the user has an embedded wallet
101
110
  * }
102
111
  */
103
112
  const useSecureEnclaveEmbeddedWallet = () => {
104
- var _a, _b;
105
- const { projectSettings, onboardingOnlyJwt, primaryWallet, user, environmentId, } = useInternalDynamicContext.useInternalDynamicContext();
113
+ var _a, _b, _c, _d;
114
+ const { projectSettings, onboardingOnlyJwt, primaryWallet, user, environmentId, walletConnectorOptions, setUser, } = useInternalDynamicContext.useInternalDynamicContext();
106
115
  const { createTurnkeyWallet } = useTurnkey.useTurnkey();
107
116
  const { hasRecoveryEmail } = useIsTurnkeyWallet.useIsTurnkeyWallet();
108
- const turnkeyAuthIframeContainerRef = useElementById.useElementById(constants.iframeContainerId);
117
+ const { createRootElement } = useElementById.useElementById();
109
118
  const { isLoadingEmbeddedWallet, setIsLoadingEmbeddedWallet } = WalletContext.useWalletContext();
110
119
  const wallet = getEOAWallet.getEOAWallet(primaryWallet, (user === null || user === void 0 ? void 0 : user.verifiedCredentials) || []);
120
+ /**
121
+ * Checks if the user has an embedded wallet or not
122
+ * @returns boolean
123
+ */
111
124
  const userHasEmbeddedWallet = React.useCallback(() => hasEmbeddedWallet.hasEmbeddedWallet(getAuthToken.getAuthToken() || onboardingOnlyJwt, 'turnkey'), [onboardingOnlyJwt]);
112
- const createEmbeddedWallet = React.useCallback((chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
113
- var _c, _d;
114
- const jwt = (_c = getAuthToken.getAuthToken()) !== null && _c !== void 0 ? _c : onboardingOnlyJwt;
125
+ /**
126
+ * Creates a new secure enclave embedded wallet according to the settings from the dashboard
127
+ * @param chain - optional chain parameter to create the wallet for
128
+ * @param options - optional parameter contained more settings for the wallet creation
129
+ * @returns Promise<Wallet | undefined>
130
+ */
131
+ const createEmbeddedWallet = React.useCallback((chains, options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
132
+ var _e, _f;
133
+ const jwt = (_e = getAuthToken.getAuthToken()) !== null && _e !== void 0 ? _e : onboardingOnlyJwt;
115
134
  const { decodedJwt } = validateUserIsLoggedIn.validateUserIsLoggedIn(jwt);
116
135
  const userWaletsCredentials = getUserWalletsFromVerifiedCredentials.getUserWalletsFromVerifiedCredentials(jwt);
117
- const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chain);
118
- const isManualMode = ((_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _d === void 0 ? void 0 : _d.automaticEmbeddedWalletCreation) === false;
136
+ const embeddedWalletVerifiedCredential = findEmbeddedWalletFromVerifiedCredentials.findEmbeddedWalletFromVerifiedCredentials(jwt, chains);
137
+ const isManualMode = ((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _f === void 0 ? void 0 : _f.automaticEmbeddedWalletCreation) === false;
119
138
  // if user has a wallet and it's not embedded,
120
139
  // throw error to follow another flow and set up the right wallet
121
140
  // However, if the user is in manual mode continue.
@@ -125,48 +144,56 @@ const useSecureEnclaveEmbeddedWallet = () => {
125
144
  throw new utils.DynamicError('Manual mode must be enabled to create an embedded wallet for this user');
126
145
  }
127
146
  validateTurnkeyProviderEnabled.validateTurnkeyProviderEnabled(projectSettings);
128
- setIsLoadingEmbeddedWallet(true);
129
147
  // TEMP: immediately disable loading state
130
148
  setIsLoadingEmbeddedWallet(false);
131
- const wallet = yield createTurnkeyWallet(jwt, decodedJwt, chain);
132
- return wallet;
149
+ return createTurnkeyWallet(jwt, decodedJwt, chains, options);
133
150
  }), [
134
151
  createTurnkeyWallet,
135
152
  onboardingOnlyJwt,
136
153
  projectSettings,
137
154
  setIsLoadingEmbeddedWallet,
138
155
  ]);
139
- const createOrRestoreSession = React.useCallback((oneTimeCode) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
140
- var _e, _f, _g, _h, _j, _k, _l;
141
- const jwt = (_e = getAuthToken.getAuthToken()) !== null && _e !== void 0 ? _e : onboardingOnlyJwt;
156
+ /**
157
+ * Creates or restores a secure enclave embedded wallet session
158
+ * If it detects that the session is possible to be restored, it will restore it
159
+ * @param oneTimeCode - optional one-time code parameter. If not informed it tries to restore a session
160
+ * @returns Promise<'session_created' | 'session_restored'> - returns a string indicating the status of the session
161
+ */
162
+ const createOrRestoreSession = React.useCallback((_g) => _tslib.__awaiter(void 0, [_g], void 0, function* ({ oneTimeCode }) {
163
+ var _h, _j, _k, _l, _m, _o, _p;
164
+ const jwt = (_h = getAuthToken.getAuthToken()) !== null && _h !== void 0 ? _h : onboardingOnlyJwt;
142
165
  const { decodedJwt } = validateUserIsLoggedIn.validateUserIsLoggedIn(jwt);
143
166
  const turnkeyRecoveryHandler = getEmbeddedWalletAuthHandler.getEmbeddedWalletAuthHandler(wallet === null || wallet === void 0 ? void 0 : wallet.connector);
144
- // try to restore session if it's active or can be restored
145
- if (turnkeyRecoveryHandler.isSessionActive() ||
146
- passkeyRecovery.canRestoreEmbeddedWalletSession((_f = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _f === void 0 ? void 0 : _f.sessionKeyDuration)) {
167
+ if (turnkeyRecoveryHandler.isSessionActive()) {
168
+ return errors.ACTIVE_SESSION;
169
+ }
170
+ const turnkeyAuthIframeContainerRef = createRootElement(constants.iframeContainerId);
171
+ // try to restore session if possible
172
+ if (passkeyRecovery.canRestoreEmbeddedWalletSession((_j = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _j === void 0 ? void 0 : _j.sessionKeyDuration)) {
147
173
  try {
148
- yield passkeyRecovery.restoreEmbeddedWalletSession({
174
+ const sessionRestored = yield passkeyRecovery.restoreEmbeddedWalletSession({
149
175
  authToken: jwt,
150
176
  iframeContainer: turnkeyAuthIframeContainerRef.current,
151
177
  iframeElementId: constants.iframeElementId,
152
- sessionExpiration: getEmbeddedWalletSessionExpiration.getEmbeddedWalletSessionExpiration((_h = (_g = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _g === void 0 ? void 0 : _g.embeddedWallets) === null || _h === void 0 ? void 0 : _h.sessionKeyDuration),
178
+ sessionExpiration: getEmbeddedWalletSessionExpiration.getEmbeddedWalletSessionExpiration((_l = (_k = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _k === void 0 ? void 0 : _k.embeddedWallets) === null || _l === void 0 ? void 0 : _l.sessionKeyDuration),
153
179
  wallet: primaryWallet,
154
180
  });
155
- return errors.SESSION_RESTORED;
181
+ if (sessionRestored)
182
+ return errors.SESSION_RESTORED;
156
183
  }
157
184
  catch (err) {
158
185
  logger.logger.error('Failed to restore embedded wallet', err);
159
186
  }
160
187
  }
161
- // creates a new session
162
188
  if (!oneTimeCode) {
163
189
  throw new utils.DynamicError('One-time code is required to create a session.', errors.INVALID_REQUEST);
164
190
  }
191
+ // tries to create a new session with the informed one-time code
165
192
  // verify user has a turnkey wallet and email VC
166
193
  if (!userHasEmbeddedWallet() || !hasRecoveryEmail) {
167
194
  throw new utils.DynamicError('User does not have a secure enclave wallet or a verified email', errors.INVALID_WALLET_DATA);
168
195
  }
169
- const organizationId = (_l = (_k = (_j = decodedJwt.verifiedCredentials) === null || _j === void 0 ? void 0 : _j.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'))) === null || _k === void 0 ? void 0 : _k.walletProperties) === null || _l === void 0 ? void 0 : _l.turnkeySubOrganizationId;
196
+ const organizationId = (_p = (_o = (_m = decodedJwt.verifiedCredentials) === null || _m === void 0 ? void 0 : _m.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'))) === null || _o === void 0 ? void 0 : _o.walletProperties) === null || _p === void 0 ? void 0 : _p.turnkeySubOrganizationId;
170
197
  yield turnkeyRecoveryHandler.verifyRecoveryCode(oneTimeCode, organizationId);
171
198
  const sessionSettings = {
172
199
  createdAt: new Date().getTime(),
@@ -176,40 +203,113 @@ const useSecureEnclaveEmbeddedWallet = () => {
176
203
  localStorage.LocalStorage.setToLS(localStorage$1.EMBEDDED_WALLET_SESSION_SETTINGS, sessionSettings);
177
204
  return errors.SESSION_CREATED;
178
205
  }), [
206
+ createRootElement,
179
207
  hasRecoveryEmail,
180
208
  onboardingOnlyJwt,
181
209
  primaryWallet,
182
210
  (_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.sessionKeyDuration,
183
- turnkeyAuthIframeContainerRef,
184
211
  userHasEmbeddedWallet,
185
212
  wallet === null || wallet === void 0 ? void 0 : wallet.connector,
186
213
  ]);
187
- const isSessionActive = React.useMemo(() => {
188
- if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connector))
189
- return false;
190
- try {
191
- const turnkeyAuthenticatorHandler = getEmbeddedWalletAuthHandler.getEmbeddedWalletAuthHandler(wallet === null || wallet === void 0 ? void 0 : wallet.connector);
192
- return turnkeyAuthenticatorHandler.isSessionActive();
214
+ /**
215
+ * Creates a new passkey both for an existing wallet or a wallet to be created
216
+ * @param oneTimeCode: string | undefined,
217
+ *
218
+ * @returns Promise<WebAuthnAttestation>
219
+ */
220
+ const createPasskey = React.useCallback((_q) => _tslib.__awaiter(void 0, [_q], void 0, function* ({ oneTimeCode, }) {
221
+ var _r, _s;
222
+ const { decodedJwt, jwt } = validateUserIsLoggedIn.validateUserIsLoggedIn(getAuthToken.getAuthToken() || onboardingOnlyJwt);
223
+ validateTurnkeyProviderEnabled.validateTurnkeyProviderEnabled(projectSettings);
224
+ const turnkeyWallet = findTurnkeyWallet.findTurnkeyWalletByPrimaryChain(walletConnectorOptions, (_r = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _r === void 0 ? void 0 : _r.chainConfigurations, decodedJwt.verifiedCredentials);
225
+ if (!(turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector)) {
226
+ throw new utils.DynamicError('Wallet connector not found', errors.INVALID_WALLET_DATA);
227
+ }
228
+ const walletConnector = turnkeyWallet.walletConnector;
229
+ walletConnector.setEmail(user === null || user === void 0 ? void 0 : user.email);
230
+ if (user && !(user === null || user === void 0 ? void 0 : user.email)) {
231
+ addPasskeyIdentifierToWalletConnector.addPasskeyIdentifierToWalletConnector(walletConnector, user);
193
232
  }
194
- catch (err) {
195
- return false;
233
+ const hasEmailVC = getUserVerifiedCredentialType.getUserVerifiedCredentialType(decodedJwt, sdkApiCore.JwtVerifiedCredentialFormatEnum.Email);
234
+ // return a new passkey if the user doesn't have a wallet yet or
235
+ // none of the requirements to add a passkey to an existing wallet are met
236
+ if (!('id' in turnkeyWallet) || !hasEmailVC) {
237
+ return walletConnector.getWebAuthnAttestation();
196
238
  }
197
- }, [wallet === null || wallet === void 0 ? void 0 : wallet.connector]);
198
- const sendOneTimeCode = React.useCallback((_m) => _tslib.__awaiter(void 0, [_m], void 0, function* ({ address }) {
199
- var _o, _p;
200
- const { jwt, decodedJwt } = validateUserIsLoggedIn.validateUserIsLoggedIn((_o = getAuthToken.getAuthToken()) !== null && _o !== void 0 ? _o : onboardingOnlyJwt);
239
+ const organizationId = (_s = turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletProperties) === null || _s === void 0 ? void 0 : _s.turnkeySubOrganizationId;
240
+ if (!organizationId) {
241
+ throw new utils.DynamicError('No sub organization id found for the wallet', errors.INVALID_WALLET_DATA);
242
+ }
243
+ const turnkAuthenticatorHandler = getEmbeddedWalletAuthHandler.getEmbeddedWalletAuthHandler(walletConnector);
244
+ // add new passkey to the wallet through an active session
245
+ yield createOrRestoreSession({ oneTimeCode });
246
+ const { attestation, challenge, displayName } = yield walletConnector.getWebAuthnAttestation();
247
+ yield turnkAuthenticatorHandler.addPasskeyAuthenticator({
248
+ attestation,
249
+ challenge,
250
+ organizationId,
251
+ });
252
+ const passkeyResponse = yield embeddedWallets.completePasskeyRecovery({
253
+ attestation: attestation,
254
+ challenge,
255
+ environmentId,
256
+ userJwt: jwt,
257
+ walletId: turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.id,
258
+ });
259
+ const { jwt: updatedJwt, minifiedJwt } = passkeyResponse;
260
+ setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(updatedJwt, minifiedJwt));
261
+ return { attestation, challenge, displayName };
262
+ }), [
263
+ createOrRestoreSession,
264
+ environmentId,
265
+ onboardingOnlyJwt,
266
+ projectSettings,
267
+ setUser,
268
+ user === null || user === void 0 ? void 0 : user.email,
269
+ user === null || user === void 0 ? void 0 : user.phoneNumber,
270
+ user === null || user === void 0 ? void 0 : user.verifiedCredentials,
271
+ walletConnectorOptions,
272
+ ]);
273
+ /**
274
+ * Gets all passkeys for the user
275
+ * @returns Promise<Passkey[]>
276
+ */
277
+ const getPasskeys = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
278
+ var _t;
279
+ const { jwt } = validateUserIsLoggedIn.validateUserIsLoggedIn((_t = getAuthToken.getAuthToken()) !== null && _t !== void 0 ? _t : onboardingOnlyJwt);
280
+ const data = yield embeddedWallets.getUserPasskeys({
281
+ environmentId: environmentId,
282
+ userJwt: jwt,
283
+ });
284
+ return data.passkeys;
285
+ }), [environmentId, onboardingOnlyJwt]);
286
+ /**
287
+ * Checks if the embedded wallet session is active
288
+ * @returns boolean
289
+ */
290
+ const isSessionActive = (_d = ((wallet === null || wallet === void 0 ? void 0 : wallet.connector) &&
291
+ 'getAuthenticatorHandler' in wallet.connector &&
292
+ ((_c = getEmbeddedWalletAuthHandler.getEmbeddedWalletAuthHandler(wallet.connector)) === null || _c === void 0 ? void 0 : _c.isSessionActive()))) !== null && _d !== void 0 ? _d : false;
293
+ /**
294
+ * Sends a one-time code to the user so they can create a session or add a new passkey
295
+ * @returns Promise<'code_sent'>
296
+ */
297
+ const sendOneTimeCode = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
298
+ var _u, _v, _w;
299
+ const { jwt, decodedJwt } = validateUserIsLoggedIn.validateUserIsLoggedIn((_u = getAuthToken.getAuthToken()) !== null && _u !== void 0 ? _u : onboardingOnlyJwt);
201
300
  validateTurnkeyProviderEnabled.validateTurnkeyProviderEnabled(projectSettings);
202
- const targetTurnkeyWallet = findTurnkeyWallet.findTurnkeyWalletByAddress(decodedJwt.verifiedCredentials, address);
203
- if (!targetTurnkeyWallet || !targetTurnkeyWallet.id) {
301
+ const targetTurnkeyWallet = findTurnkeyWallet.findTurnkeyWalletByPrimaryChain(walletConnectorOptions, (_v = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _v === void 0 ? void 0 : _v.chainConfigurations, decodedJwt.verifiedCredentials);
302
+ if (!targetTurnkeyWallet || !('id' in targetTurnkeyWallet)) {
204
303
  throw new utils.DynamicError('User does not have a valid secure enclave wallet', errors.INVALID_WALLET_DATA);
205
304
  }
206
- const turnkeyAuthenticatorHandler = getEmbeddedWalletAuthHandler.getEmbeddedWalletAuthHandler(wallet === null || wallet === void 0 ? void 0 : wallet.connector);
305
+ const turnkeyAuthenticatorHandler = getEmbeddedWalletAuthHandler.getEmbeddedWalletAuthHandler(targetTurnkeyWallet === null || targetTurnkeyWallet === void 0 ? void 0 : targetTurnkeyWallet.walletConnector);
207
306
  const targetTurnkeyWalletId = targetTurnkeyWallet.id;
208
307
  const isSessionActive = turnkeyAuthenticatorHandler.isSessionActive();
209
308
  if (isSessionActive) {
210
309
  throw new utils.DynamicError('Session is active. No need to create a new one', errors.ACTIVE_SESSION);
211
310
  }
212
- const publicKey = yield turnkeyAuthenticatorHandler.initRecovery('email', turnkeyAuthIframeContainerRef.current, 'dyn-turnkey-auth-element-id', getEmbeddedWalletSessionExpiration.getEmbeddedWalletSessionExpiration((_p = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _p === void 0 ? void 0 : _p.sessionKeyDuration));
311
+ const turnkeyAuthIframeContainerRef = createRootElement(constants.iframeContainerId);
312
+ const publicKey = yield turnkeyAuthenticatorHandler.initRecovery('email', turnkeyAuthIframeContainerRef.current, constants.iframeElementId, getEmbeddedWalletSessionExpiration.getEmbeddedWalletSessionExpiration((_w = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _w === void 0 ? void 0 : _w.sessionKeyDuration));
213
313
  if (!publicKey) {
214
314
  throw new utils.DynamicError(errors.ERROR_SENDING_CODE);
215
315
  }
@@ -223,15 +323,17 @@ const useSecureEnclaveEmbeddedWallet = () => {
223
323
  turnkeyAuthenticatorHandler.recoveryUserId = response.turnkeyUserId;
224
324
  return errors.CODE_SENT;
225
325
  }), [
326
+ createRootElement,
226
327
  environmentId,
227
328
  onboardingOnlyJwt,
228
329
  projectSettings,
229
- turnkeyAuthIframeContainerRef,
230
- wallet === null || wallet === void 0 ? void 0 : wallet.connector,
330
+ walletConnectorOptions,
231
331
  ]);
232
332
  return {
233
333
  createEmbeddedWallet,
234
334
  createOrRestoreSession,
335
+ createPasskey,
336
+ getPasskeys,
235
337
  isLoadingEmbeddedWallet,
236
338
  isSessionActive,
237
339
  sendOneTimeCode,
@@ -1,19 +1,32 @@
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
  /**
5
+ *
4
6
  * @returns {
5
- * createEmbeddedWallet, - creates Dynamic or MPC embedded wallet according to the settings
6
- * isLoadingEmbeddedWallet, - loading state of the embedded wallet
7
- * userHasEmbeddedWallet, - checks if the user has an embedded wallet
7
+ * createEmbeddedWallet, - creates Secure enclave embedded wallet according to the settings
8
+ * createOrRestoreSession, - creates or restores a embedded wallet session
9
+ * createPasskey, - creates a new passkey both for an existing wallet or a wallet to be created
10
+ * getPasskeys, - gets all passkeys for the user
11
+ * isLoadingEmbeddedWallet, - loading state of the embedded wallet
12
+ * isSessionActive, - checks if the embedded wallet session is active
13
+ * sendOneTimeCode, - sends a one-time code to the user so they can create a session or add a new passkey
14
+ * userHasEmbeddedWallet, - checks if the user has an embedded wallet
8
15
  * }
9
16
  */
10
17
  export declare const useSecureEnclaveEmbeddedWallet: () => {
11
- readonly createEmbeddedWallet: (chain?: ChainEnum) => Promise<Wallet | undefined>;
12
- readonly createOrRestoreSession: (oneTimeCode?: string) => Promise<string>;
18
+ readonly createEmbeddedWallet: (chains?: ChainEnum[], options?: {
19
+ webAuthnAttestation: WebAuthnAttestation;
20
+ }) => Promise<Wallet | undefined>;
21
+ readonly createOrRestoreSession: ({ oneTimeCode }: {
22
+ oneTimeCode?: string;
23
+ }) => Promise<string>;
24
+ readonly createPasskey: ({ oneTimeCode, }: {
25
+ oneTimeCode?: string;
26
+ }) => Promise<WebAuthnAttestation>;
27
+ readonly getPasskeys: () => Promise<import("@dynamic-labs/sdk-api-core").UserPasskey[]>;
13
28
  readonly isLoadingEmbeddedWallet: boolean;
14
29
  readonly isSessionActive: boolean;
15
- readonly sendOneTimeCode: ({ address }: {
16
- address: string;
17
- }) => Promise<string>;
30
+ readonly sendOneTimeCode: () => Promise<string>;
18
31
  readonly userHasEmbeddedWallet: () => boolean;
19
32
  };