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

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 (225) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +13 -14
  5. package/src/index.cjs +8 -2
  6. package/src/index.d.ts +2 -1
  7. package/src/index.js +4 -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/chains/balances.cjs +38 -0
  61. package/src/lib/data/api/chains/balances.d.ts +8 -0
  62. package/src/lib/data/api/chains/balances.js +34 -0
  63. package/src/lib/data/api/chains/index.d.ts +1 -0
  64. package/src/lib/data/api/user/user.cjs +16 -0
  65. package/src/lib/data/api/user/user.js +16 -1
  66. package/src/lib/data/api/wallets/wallets.cjs +26 -6
  67. package/src/lib/data/api/wallets/wallets.d.ts +4 -0
  68. package/src/lib/data/api/wallets/wallets.js +26 -7
  69. package/src/lib/events/dynamicEvents.d.ts +1 -1
  70. package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +6 -0
  71. package/src/lib/layout/DynamicAuthLayout/Header/header.js +6 -0
  72. package/src/lib/locale/en/translation.cjs +45 -4
  73. package/src/lib/locale/en/translation.d.ts +44 -3
  74. package/src/lib/locale/en/translation.js +45 -4
  75. package/src/lib/shared/types/dynamicEventsCallbacks.d.ts +2 -1
  76. package/src/lib/shared/types/general.d.ts +1 -0
  77. package/src/lib/shared/utils/classes/storage/localStorage.cjs +2 -2
  78. package/src/lib/shared/utils/classes/storage/localStorage.js +2 -2
  79. package/src/lib/styles/index.shadow.cjs +1 -1
  80. package/src/lib/styles/index.shadow.js +1 -1
  81. package/src/lib/utils/constants/errors.cjs +2 -2
  82. package/src/lib/utils/constants/errors.d.ts +1 -0
  83. package/src/lib/utils/constants/errors.js +2 -2
  84. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.cjs +14 -0
  85. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.d.ts +3 -0
  86. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/addPasskeyIdentifierToWalletConnector.js +10 -0
  87. package/src/lib/utils/functions/addPasskeyIdentifierToWalletConnector/index.d.ts +1 -0
  88. package/src/lib/utils/functions/createUserProfile/createUserProfile.cjs +1 -2
  89. package/src/lib/utils/functions/createUserProfile/createUserProfile.js +1 -2
  90. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.cjs +3 -4
  91. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.d.ts +1 -1
  92. package/src/lib/utils/functions/findEmbeddedWalletFromVerifiedCredentials/findEmbeddedWalletFromVerifiedCredentials.js +4 -5
  93. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +12 -9
  94. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.d.ts +8 -2
  95. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +13 -10
  96. package/src/lib/utils/functions/findTurnkeyWallet/index.d.ts +1 -1
  97. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.cjs +5 -5
  98. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.d.ts +3 -2
  99. package/src/lib/utils/functions/getUserVerifiedCredentialType/getUserVerifiedCredentialType.js +5 -5
  100. package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.cjs +7 -2
  101. package/src/lib/utils/functions/hasEmbeddedWallet/hasEmbeddedWallet.js +7 -2
  102. package/src/lib/utils/functions/index.d.ts +2 -1
  103. package/src/lib/utils/functions/serializeWalletConnectors/index.d.ts +1 -0
  104. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.cjs +32 -0
  105. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.d.ts +2 -0
  106. package/src/lib/utils/functions/serializeWalletConnectors/serializeWalletConnectors.js +28 -0
  107. package/src/lib/utils/hooks/index.d.ts +2 -0
  108. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +22 -17
  109. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +22 -17
  110. package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.cjs +2 -1
  111. package/src/lib/utils/hooks/useConfirmationModal/useConfirmationModal.js +2 -1
  112. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +22 -18
  113. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.d.ts +7 -2
  114. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +22 -18
  115. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +8 -0
  116. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +8 -0
  117. package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.cjs +3 -3
  118. package/src/lib/utils/hooks/useDynamicScopes/useDynamicScopes.js +3 -3
  119. package/src/lib/utils/hooks/useElementById/useElementById.cjs +33 -18
  120. package/src/lib/utils/hooks/useElementById/useElementById.d.ts +3 -1
  121. package/src/lib/utils/hooks/useElementById/useElementById.js +33 -18
  122. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +46 -11
  123. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +23 -2
  124. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +46 -11
  125. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +6 -6
  126. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.d.ts +1 -1
  127. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +6 -6
  128. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +13 -9
  129. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.d.ts +3 -2
  130. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +13 -9
  131. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs +4 -0
  132. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.d.ts +2 -0
  133. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.js +3 -1
  134. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +192 -50
  135. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +26 -8
  136. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +197 -55
  137. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +45 -18
  138. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.d.ts +4 -1
  139. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +45 -18
  140. package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.cjs +2 -2
  141. package/src/lib/utils/hooks/useIsTurnkeyWallet/useIsTurnkeyWallet.js +2 -2
  142. package/src/lib/utils/hooks/useMergeUserAccounts/index.d.ts +1 -0
  143. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.cjs +99 -0
  144. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.d.ts +4 -0
  145. package/src/lib/utils/hooks/useMergeUserAccounts/useMergeUserAccounts.js +95 -0
  146. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +2 -1
  147. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +2 -1
  148. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +13 -4
  149. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +10 -2
  150. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +13 -4
  151. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.cjs +6 -13
  152. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.d.ts +1 -3
  153. package/src/lib/utils/hooks/useSendDynamicProps/useSendDynamicProps.js +6 -12
  154. package/src/lib/utils/hooks/useTokenBalances/index.d.ts +1 -0
  155. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.cjs +141 -0
  156. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.d.ts +12 -0
  157. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.js +137 -0
  158. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +5 -0
  159. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +6 -1
  160. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.cjs +25 -2
  161. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.js +25 -2
  162. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +2 -4
  163. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +2 -1
  164. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +2 -4
  165. package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.cjs +3 -3
  166. package/src/lib/views/CollectUserDataView/UserDataFields/UserField/UserField.js +3 -3
  167. package/src/lib/views/CollectUserDataView/useFields.cjs +1 -0
  168. package/src/lib/views/CollectUserDataView/useFields.d.ts +2 -0
  169. package/src/lib/views/CollectUserDataView/useFields.js +1 -0
  170. package/src/lib/views/EmailVerification/EmailVerification.cjs +38 -11
  171. package/src/lib/views/EmailVerification/EmailVerification.js +38 -11
  172. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +1 -1
  173. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +1 -1
  174. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +6 -5
  175. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +6 -5
  176. package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.cjs +126 -0
  177. package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.d.ts +6 -0
  178. package/src/lib/views/MergeUserAccountsConflictsView/MergeUserAccountsConflictsView.js +122 -0
  179. package/src/lib/views/MergeUserAccountsConflictsView/index.d.ts +1 -0
  180. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.cjs +123 -0
  181. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.d.ts +4 -0
  182. package/src/lib/views/MergeUserAccountsView/MergeUserAccountsView.js +119 -0
  183. package/src/lib/views/MergeUserAccountsView/index.d.ts +1 -0
  184. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.cjs +3 -3
  185. package/src/lib/views/MergeUserAccountsWithSameEmailView/MergeUserAccountsWithSameEmailView.js +3 -3
  186. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +2 -3
  187. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +2 -3
  188. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.cjs +2 -1
  189. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.js +2 -1
  190. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +9 -9
  191. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.d.ts +6 -1
  192. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +9 -9
  193. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.cjs +2 -1
  194. package/src/lib/views/Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery.js +2 -1
  195. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.cjs → createEmbeddedWalletRequest/createEmbeddedWalletRequest.cjs} +18 -19
  196. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.d.ts → createEmbeddedWalletRequest/createEmbeddedWalletRequest.d.ts} +7 -3
  197. package/src/lib/views/Passkey/utils/{createEmbeddedWalletWithPasskey/createEmbeddedWalletWithPasskey.js → createEmbeddedWalletRequest/createEmbeddedWalletRequest.js} +18 -19
  198. package/src/lib/views/Passkey/utils/createEmbeddedWalletRequest/index.d.ts +1 -0
  199. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs +16 -0
  200. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.d.ts +2 -0
  201. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js +12 -0
  202. package/src/lib/views/Passkey/utils/findPrimaryEmbeddedChain/index.d.ts +1 -0
  203. package/src/lib/views/Passkey/utils/index.d.ts +1 -2
  204. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +9 -9
  205. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +9 -9
  206. package/src/lib/views/WalletList/WalletList.cjs +3 -6
  207. package/src/lib/views/WalletList/WalletList.js +3 -6
  208. package/src/lib/views/WalletLockedView/WalletLockedView.cjs +2 -8
  209. package/src/lib/views/WalletLockedView/WalletLockedView.js +2 -8
  210. package/src/lib/views/viewToComponentMap.cjs +4 -0
  211. package/src/lib/views/viewToComponentMap.d.ts +6 -2
  212. package/src/lib/views/viewToComponentMap.js +4 -0
  213. package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.cjs +2 -1
  214. package/src/lib/widgets/DynamicWidget/components/PromptModal/PromptModal.js +2 -1
  215. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.cjs +1 -1
  216. package/src/lib/widgets/DynamicWidget/hooks/useFetchNameService/useFetchNameService.js +1 -1
  217. package/src/lib/utils/functions/isEmbeddedWalletPresent/index.d.ts +0 -1
  218. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.cjs +0 -19
  219. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.d.ts +0 -1
  220. package/src/lib/utils/functions/isEmbeddedWalletPresent/isEmbeddedWalletPresent.js +0 -15
  221. package/src/lib/views/Passkey/utils/createEmbeddedWalletWithPasskey/index.d.ts +0 -1
  222. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.cjs +0 -65
  223. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.d.ts +0 -16
  224. package/src/lib/views/Passkey/utils/createPregeneratedWallet/createPregeneratedWallet.js +0 -61
  225. package/src/lib/views/Passkey/utils/createPregeneratedWallet/index.d.ts +0 -1
@@ -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,10 +34,10 @@ 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');
40
+ var findPrimaryEmbeddedChain = require('../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.cjs');
41
41
  require('../../../context/WalletContext/WalletContext.cjs');
42
42
  require('../../../context/ThemeContext/ThemeContext.cjs');
43
43
  require('@dynamic-labs/types');
@@ -82,34 +82,31 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
82
82
 
83
83
  // This hook needs to be async that's why it's not using useMutation
84
84
  const useCreateDynamicEmbeddedWalletMutation = () => {
85
- var _a, _b, _c;
86
- const { setPrimaryWalletId, setCallback, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext.useInternalDynamicContext();
85
+ var _a, _b;
86
+ const { setPrimaryWalletId, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext.useInternalDynamicContext();
87
87
  const [isLoading, setIsLoading] = React.useState(false);
88
88
  const [error, setError] = React.useState();
89
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) || [];
90
- const primaryEmbeddedChain = ((_c = embeddedChainConfig.find((chain) => chain.primary)) === null || _c === void 0 ? void 0 : _c.name) === 'SOL'
91
- ? sdkApiCore.ChainEnum.Sol
92
- : sdkApiCore.ChainEnum.Evm;
90
+ const primaryEmbeddedChain = findPrimaryEmbeddedChain.findPrimaryEmbeddedChain(projectSettings);
93
91
  const embeddedChains = embeddedChainConfig
94
92
  .filter((chain) => chain.enabled)
95
93
  .map((c) => (c.name === 'SOL' ? sdkApiCore.ChainEnum.Sol : sdkApiCore.ChainEnum.Evm));
96
- const createDynamicEmbeddedWalletMutation = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, }) {
97
- var _e, _f;
94
+ const createDynamicEmbeddedWalletMutation = React.useCallback((_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }) {
95
+ var _d, _e;
98
96
  setIsLoading(true);
99
- const createEmbeddedWalletMethodToUse = withAuthenticator
100
- ? createEmbeddedWalletWithPasskey.createEmbeddedWalletWithPasskey
101
- : createPregeneratedWallet.createPregeneratedWallet;
102
97
  try {
103
- const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletMethodToUse({
98
+ const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletRequest.createEmbeddedWalletRequest({
104
99
  authToken,
105
- chains: embeddedChains,
100
+ chains: chains !== null && chains !== void 0 ? chains : embeddedChains,
106
101
  environmentId,
107
102
  user: user !== null && user !== void 0 ? user : createUserProfile.createUserProfile(decodedJwt),
108
103
  walletConnector: findPasskeyEmailWalletConnector.findPasskeyEmailWalletConnector(walletConnectorOptions, primaryEmbeddedChain),
104
+ webAuthnAttestation: options === null || options === void 0 ? void 0 : options.webAuthnAttestation,
105
+ withAuthenticator,
109
106
  });
110
- const turnkeyVerifiedCredentials = (_e = updatedDecodedJwt === null || updatedDecodedJwt === void 0 ? void 0 : updatedDecodedJwt.verifiedCredentials) === null || _e === void 0 ? void 0 : _e.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
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'));
111
108
  /** It's not authenticated if it's a turnkey wallet that still hasn't created a passkey */
112
- const authenticated = Boolean((_f = turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.walletProperties) === null || _f === void 0 ? void 0 : _f.isAuthenticatorAttached);
109
+ const authenticated = Boolean((_e = turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.walletProperties) === null || _e === void 0 ? void 0 : _e.isAuthenticatorAttached);
113
110
  const passkeyWallet = {
114
111
  address: (yield walletConnector.getAddress()) || '',
115
112
  authenticated,
@@ -132,7 +129,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
132
129
  }
133
130
  setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
134
131
  setShowAuthFlow(false, { performMultiWalletChecks: false });
135
- dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials);
132
+ dynamicEvents.dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, signersResponse.jwt);
136
133
  }
137
134
  catch (err) {
138
135
  setError(err);
@@ -142,7 +139,14 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
142
139
  finally {
143
140
  setIsLoading(false);
144
141
  }
145
- }), [setCallback, setPrimaryWalletId, setShowAuthFlow, setUser, user]);
142
+ }), [
143
+ embeddedChains,
144
+ primaryEmbeddedChain,
145
+ setPrimaryWalletId,
146
+ setShowAuthFlow,
147
+ setUser,
148
+ user,
149
+ ]);
146
150
  return {
147
151
  createDynamicEmbeddedWalletMutation,
148
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,10 +30,10 @@ 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';
36
+ import { findPrimaryEmbeddedChain } from '../../../views/Passkey/utils/findPrimaryEmbeddedChain/findPrimaryEmbeddedChain.js';
37
37
  import '../../../context/WalletContext/WalletContext.js';
38
38
  import '../../../context/ThemeContext/ThemeContext.js';
39
39
  import '@dynamic-labs/types';
@@ -78,34 +78,31 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
78
78
 
79
79
  // This hook needs to be async that's why it's not using useMutation
80
80
  const useCreateDynamicEmbeddedWalletMutation = () => {
81
- var _a, _b, _c;
82
- const { setPrimaryWalletId, setCallback, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext();
81
+ var _a, _b;
82
+ const { setPrimaryWalletId, setUser, user, setShowAuthFlow, projectSettings, } = useInternalDynamicContext();
83
83
  const [isLoading, setIsLoading] = useState(false);
84
84
  const [error, setError] = useState();
85
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) || [];
86
- const primaryEmbeddedChain = ((_c = embeddedChainConfig.find((chain) => chain.primary)) === null || _c === void 0 ? void 0 : _c.name) === 'SOL'
87
- ? ChainEnum.Sol
88
- : ChainEnum.Evm;
86
+ const primaryEmbeddedChain = findPrimaryEmbeddedChain(projectSettings);
89
87
  const embeddedChains = embeddedChainConfig
90
88
  .filter((chain) => chain.enabled)
91
89
  .map((c) => (c.name === 'SOL' ? ChainEnum.Sol : ChainEnum.Evm));
92
- const createDynamicEmbeddedWalletMutation = useCallback((_d) => __awaiter(void 0, [_d], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, }) {
93
- var _e, _f;
90
+ const createDynamicEmbeddedWalletMutation = useCallback((_c) => __awaiter(void 0, [_c], void 0, function* ({ authToken, decodedJwt, environmentId, walletConnectorOptions, withAuthenticator, options, chains, }) {
91
+ var _d, _e;
94
92
  setIsLoading(true);
95
- const createEmbeddedWalletMethodToUse = withAuthenticator
96
- ? createEmbeddedWalletWithPasskey
97
- : createPregeneratedWallet;
98
93
  try {
99
- const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletMethodToUse({
94
+ const { embeddedWalletVerifiedCredential, decodedJwt: updatedDecodedJwt, signersResponse, walletConnector, } = yield createEmbeddedWalletRequest({
100
95
  authToken,
101
- chains: embeddedChains,
96
+ chains: chains !== null && chains !== void 0 ? chains : embeddedChains,
102
97
  environmentId,
103
98
  user: user !== null && user !== void 0 ? user : createUserProfile(decodedJwt),
104
99
  walletConnector: findPasskeyEmailWalletConnector(walletConnectorOptions, primaryEmbeddedChain),
100
+ webAuthnAttestation: options === null || options === void 0 ? void 0 : options.webAuthnAttestation,
101
+ withAuthenticator,
105
102
  });
106
- const turnkeyVerifiedCredentials = (_e = updatedDecodedJwt === null || updatedDecodedJwt === void 0 ? void 0 : updatedDecodedJwt.verifiedCredentials) === null || _e === void 0 ? void 0 : _e.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
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'));
107
104
  /** It's not authenticated if it's a turnkey wallet that still hasn't created a passkey */
108
- const authenticated = Boolean((_f = turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.walletProperties) === null || _f === void 0 ? void 0 : _f.isAuthenticatorAttached);
105
+ const authenticated = Boolean((_e = turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.walletProperties) === null || _e === void 0 ? void 0 : _e.isAuthenticatorAttached);
109
106
  const passkeyWallet = {
110
107
  address: (yield walletConnector.getAddress()) || '',
111
108
  authenticated,
@@ -128,7 +125,7 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
128
125
  }
129
126
  setUser(updateJWTAndCreateUserProfile(signersResponse.jwt, signersResponse.minifiedJwt));
130
127
  setShowAuthFlow(false, { performMultiWalletChecks: false });
131
- dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials);
128
+ dynamicEvents.emit('embeddedWalletCreated', passkeyWallet, turnkeyVerifiedCredentials, signersResponse.jwt);
132
129
  }
133
130
  catch (err) {
134
131
  setError(err);
@@ -138,7 +135,14 @@ const useCreateDynamicEmbeddedWalletMutation = () => {
138
135
  finally {
139
136
  setIsLoading(false);
140
137
  }
141
- }), [setCallback, setPrimaryWalletId, setShowAuthFlow, setUser, user]);
138
+ }), [
139
+ embeddedChains,
140
+ primaryEmbeddedChain,
141
+ setPrimaryWalletId,
142
+ setShowAuthFlow,
143
+ setUser,
144
+ user,
145
+ ]);
142
146
  return {
143
147
  createDynamicEmbeddedWalletMutation,
144
148
  error,
@@ -97,6 +97,14 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
97
97
  copykey: 'dyn_login.title.wallet_only',
98
98
  heading: t('dyn_login.title.wallet_only'),
99
99
  },
100
+ 'merge-user-accounts': {
101
+ copykey: 'dyn_merge_user_accounts.same_wallet.title',
102
+ heading: t('dyn_merge_user_accounts.same_wallet.title'),
103
+ },
104
+ 'merge-user-accounts-conflicts': {
105
+ copykey: 'dyn_merge_user_accounts_conflicts.title',
106
+ heading: t('dyn_merge_user_accounts_conflicts.title'),
107
+ },
100
108
  'mfa-choose-device': {
101
109
  copykey: 'dyn_mfa.choose_device_view.title',
102
110
  heading: t('dyn_mfa.choose_device_view.title'),
@@ -93,6 +93,14 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
93
93
  copykey: 'dyn_login.title.wallet_only',
94
94
  heading: t('dyn_login.title.wallet_only'),
95
95
  },
96
+ 'merge-user-accounts': {
97
+ copykey: 'dyn_merge_user_accounts.same_wallet.title',
98
+ heading: t('dyn_merge_user_accounts.same_wallet.title'),
99
+ },
100
+ 'merge-user-accounts-conflicts': {
101
+ copykey: 'dyn_merge_user_accounts_conflicts.title',
102
+ heading: t('dyn_merge_user_accounts_conflicts.title'),
103
+ },
96
104
  'mfa-choose-device': {
97
105
  copykey: 'dyn_mfa.choose_device_view.title',
98
106
  heading: t('dyn_mfa.choose_device_view.title'),
@@ -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 };
@@ -35,7 +35,7 @@ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
35
35
  require('../../../context/VerificationContext/VerificationContext.cjs');
36
36
  require('react-dom');
37
37
  var WalletContext = require('../../../context/WalletContext/WalletContext.cjs');
38
- var useEmbeddedWalletPassword = require('../useEmbeddedWalletPassword/useEmbeddedWalletPassword.cjs');
38
+ var useIsTurnkeyWallet = require('../useIsTurnkeyWallet/useIsTurnkeyWallet.cjs');
39
39
  var useSecureEnclaveEmbeddedWallet = require('./useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs');
40
40
  var useMPCEmbeddedWallet = require('./useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs');
41
41
  require('../../../context/ThemeContext/ThemeContext.cjs');
@@ -83,34 +83,69 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
83
83
  /**
84
84
  * @returns {
85
85
  * createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
86
+ * createOrRestoreSession, - creates or restores session for the embedded wallet
87
+ * createPasskey, - creates passkey for the embedded wallet
86
88
  * createPassword, - creates MPC embedded wallet password
89
+ * getPasskeys, - gets passkeys for the embedded wallet
87
90
  * isLoadingEmbeddedWallet, - loading state of the embedded wallet
91
+ * isSessionActive, - checks if the session is active for the embedded wallet
92
+ * revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
93
+ * sendOneTimeCode, - sends one time code for the embedded wallet
88
94
  * userHasEmbeddedWallet, - checks if the user has an embedded wallet
89
95
  * }
90
96
  */
91
97
  const useEmbeddedWallet = () => {
92
- const { onboardingOnlyJwt } = useInternalDynamicContext.useInternalDynamicContext();
93
- const { createPassword: internalCreatePassword } = useEmbeddedWalletPassword.useEmbeddedWalletPassword();
94
- const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
95
- const { createEmbeddedWallet: createTurnkeyEmbeddedWallet } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
98
+ const { onboardingOnlyJwt, user } = useInternalDynamicContext.useInternalDynamicContext();
99
+ const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
100
+ const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
101
+ const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
96
102
  const { isLoadingEmbeddedWallet } = WalletContext.useWalletContext();
103
+ /**
104
+ * Checks if user has some embedded wallet
105
+ * @returns boolean - true if the user has an embedded wallet
106
+ */
97
107
  const userHasEmbeddedWallet = () => hasEmbeddedWallet.hasEmbeddedWallet(getAuthToken.getAuthToken() || onboardingOnlyJwt);
98
108
  /**
99
- * @deprecated - Use this from the useMPCEmbeddedWallet hook instead.
109
+ * Creates Dynamic embedded wallet according to the settings
110
+ * @param chains - array of chains to create the wallet for
111
+ * @param options - options for the wallet creation
112
+ * @returns Promise<Wallet | undefined> - created wallet object
100
113
  */
101
- const createPassword = React.useCallback((showIntro) => _tslib.__awaiter(void 0, void 0, void 0, function* () { return internalCreatePassword(showIntro); }), [internalCreatePassword]);
102
- const createEmbeddedWallet = React.useCallback((chain) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
103
- if (yield canCreateMPCWallet(chain)) {
104
- const wallet = yield createCoinbaseMPCWallet(chain);
114
+ const createEmbeddedWallet = React.useCallback((chains, options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
115
+ if (yield canCreateMPCWallet(chains)) {
116
+ const wallet = yield createCoinbaseMPCWallet(chains);
105
117
  return wallet;
106
118
  }
107
- const wallet = yield createTurnkeyEmbeddedWallet(chain);
119
+ const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
108
120
  return wallet;
109
121
  }), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
122
+ /**
123
+ * Reveals the private key or recovery phrase for the embedded wallet
124
+ * @param options - options for revealing the wallet key
125
+ * @returns Promise<boolean> - true if the key was revealed successfully
126
+ */
127
+ const revealWalletKey = (options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
128
+ if (!user) {
129
+ throw new Error('User is not logged in');
130
+ }
131
+ if (!userHasEmbeddedWallet()) {
132
+ throw new Error('Embedded wallet not found');
133
+ }
134
+ if (isTurnkeyWallet) {
135
+ return revealTurnkeyEmbeddedWalletKey(options);
136
+ }
137
+ return reveaCoinbaseMPCEmbeddedWalletKey();
138
+ });
110
139
  return {
111
140
  createEmbeddedWallet,
141
+ createOrRestoreSession,
142
+ createPasskey,
112
143
  createPassword,
144
+ getPasskeys,
113
145
  isLoadingEmbeddedWallet,
146
+ isSessionActive,
147
+ revealWalletKey,
148
+ sendOneTimeCode,
114
149
  userHasEmbeddedWallet,
115
150
  };
116
151
  };
@@ -3,14 +3,35 @@ import { Wallet } from '../../../shared';
3
3
  /**
4
4
  * @returns {
5
5
  * createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
6
+ * createOrRestoreSession, - creates or restores session for the embedded wallet
7
+ * createPasskey, - creates passkey for the embedded wallet
6
8
  * createPassword, - creates MPC embedded wallet password
9
+ * getPasskeys, - gets passkeys for the embedded wallet
7
10
  * isLoadingEmbeddedWallet, - loading state of the embedded wallet
11
+ * isSessionActive, - checks if the session is active for the embedded wallet
12
+ * revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
13
+ * sendOneTimeCode, - sends one time code for the embedded wallet
8
14
  * userHasEmbeddedWallet, - checks if the user has an embedded wallet
9
15
  * }
10
16
  */
11
17
  export declare const useEmbeddedWallet: () => {
12
- readonly createEmbeddedWallet: (chain?: ChainEnum) => Promise<Wallet | undefined>;
13
- readonly createPassword: (showIntro?: boolean) => Promise<string>;
18
+ readonly createEmbeddedWallet: (chains?: ChainEnum[], options?: {
19
+ webAuthnAttestation: import("dist/packages/wallet-connector-core/src").WebAuthnAttestation;
20
+ } | undefined) => Promise<Wallet | undefined>;
21
+ readonly createOrRestoreSession: (options: {
22
+ oneTimeCode: string;
23
+ } | undefined) => Promise<string>;
24
+ readonly createPasskey: (options: {
25
+ oneTimeCode: string;
26
+ } | undefined) => Promise<import("dist/packages/wallet-connector-core/src").WebAuthnAttestation>;
27
+ readonly createPassword: (showIntro?: boolean | undefined) => Promise<string>;
28
+ readonly getPasskeys: () => Promise<import("@dynamic-labs/sdk-api-core").UserPasskey[]>;
14
29
  readonly isLoadingEmbeddedWallet: boolean;
30
+ readonly isSessionActive: boolean;
31
+ readonly revealWalletKey: (options?: {
32
+ type: "recoveryPhrase" | "privateKey";
33
+ htmlContainerId?: string | undefined;
34
+ } | undefined) => Promise<boolean>;
35
+ readonly sendOneTimeCode: () => Promise<string>;
15
36
  readonly userHasEmbeddedWallet: () => boolean;
16
37
  };
@@ -31,7 +31,7 @@ import '../../../context/UserWalletsContext/UserWalletsContext.js';
31
31
  import '../../../context/VerificationContext/VerificationContext.js';
32
32
  import 'react-dom';
33
33
  import { useWalletContext } from '../../../context/WalletContext/WalletContext.js';
34
- import { useEmbeddedWalletPassword } from '../useEmbeddedWalletPassword/useEmbeddedWalletPassword.js';
34
+ import { useIsTurnkeyWallet } from '../useIsTurnkeyWallet/useIsTurnkeyWallet.js';
35
35
  import { useSecureEnclaveEmbeddedWallet } from './useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js';
36
36
  import { useMPCEmbeddedWallet } from './useMPCEmbeddedWallet/useMPCEmbeddedWallet.js';
37
37
  import '../../../context/ThemeContext/ThemeContext.js';
@@ -79,34 +79,69 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
79
79
  /**
80
80
  * @returns {
81
81
  * createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
82
+ * createOrRestoreSession, - creates or restores session for the embedded wallet
83
+ * createPasskey, - creates passkey for the embedded wallet
82
84
  * createPassword, - creates MPC embedded wallet password
85
+ * getPasskeys, - gets passkeys for the embedded wallet
83
86
  * isLoadingEmbeddedWallet, - loading state of the embedded wallet
87
+ * isSessionActive, - checks if the session is active for the embedded wallet
88
+ * revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
89
+ * sendOneTimeCode, - sends one time code for the embedded wallet
84
90
  * userHasEmbeddedWallet, - checks if the user has an embedded wallet
85
91
  * }
86
92
  */
87
93
  const useEmbeddedWallet = () => {
88
- const { onboardingOnlyJwt } = useInternalDynamicContext();
89
- const { createPassword: internalCreatePassword } = useEmbeddedWalletPassword();
90
- const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet } = useMPCEmbeddedWallet();
91
- const { createEmbeddedWallet: createTurnkeyEmbeddedWallet } = useSecureEnclaveEmbeddedWallet();
94
+ const { onboardingOnlyJwt, user } = useInternalDynamicContext();
95
+ const { isTurnkeyWallet } = useIsTurnkeyWallet();
96
+ const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet();
97
+ const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
92
98
  const { isLoadingEmbeddedWallet } = useWalletContext();
99
+ /**
100
+ * Checks if user has some embedded wallet
101
+ * @returns boolean - true if the user has an embedded wallet
102
+ */
93
103
  const userHasEmbeddedWallet = () => hasEmbeddedWallet(getAuthToken() || onboardingOnlyJwt);
94
104
  /**
95
- * @deprecated - Use this from the useMPCEmbeddedWallet hook instead.
105
+ * Creates Dynamic embedded wallet according to the settings
106
+ * @param chains - array of chains to create the wallet for
107
+ * @param options - options for the wallet creation
108
+ * @returns Promise<Wallet | undefined> - created wallet object
96
109
  */
97
- const createPassword = useCallback((showIntro) => __awaiter(void 0, void 0, void 0, function* () { return internalCreatePassword(showIntro); }), [internalCreatePassword]);
98
- const createEmbeddedWallet = useCallback((chain) => __awaiter(void 0, void 0, void 0, function* () {
99
- if (yield canCreateMPCWallet(chain)) {
100
- const wallet = yield createCoinbaseMPCWallet(chain);
110
+ const createEmbeddedWallet = useCallback((chains, options) => __awaiter(void 0, void 0, void 0, function* () {
111
+ if (yield canCreateMPCWallet(chains)) {
112
+ const wallet = yield createCoinbaseMPCWallet(chains);
101
113
  return wallet;
102
114
  }
103
- const wallet = yield createTurnkeyEmbeddedWallet(chain);
115
+ const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
104
116
  return wallet;
105
117
  }), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
118
+ /**
119
+ * Reveals the private key or recovery phrase for the embedded wallet
120
+ * @param options - options for revealing the wallet key
121
+ * @returns Promise<boolean> - true if the key was revealed successfully
122
+ */
123
+ const revealWalletKey = (options) => __awaiter(void 0, void 0, void 0, function* () {
124
+ if (!user) {
125
+ throw new Error('User is not logged in');
126
+ }
127
+ if (!userHasEmbeddedWallet()) {
128
+ throw new Error('Embedded wallet not found');
129
+ }
130
+ if (isTurnkeyWallet) {
131
+ return revealTurnkeyEmbeddedWalletKey(options);
132
+ }
133
+ return reveaCoinbaseMPCEmbeddedWalletKey();
134
+ });
106
135
  return {
107
136
  createEmbeddedWallet,
137
+ createOrRestoreSession,
138
+ createPasskey,
108
139
  createPassword,
140
+ getPasskeys,
109
141
  isLoadingEmbeddedWallet,
142
+ isSessionActive,
143
+ revealWalletKey,
144
+ sendOneTimeCode,
110
145
  userHasEmbeddedWallet,
111
146
  };
112
147
  };