@n1xyz/wallet-widget 0.0.35-alpha.0 → 0.0.35-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/dist/bridge-assist/cctp-solana.d.ts +33 -0
  2. package/dist/bridge-assist/cctp-solana.js +392 -0
  3. package/dist/bridge-assist/cctp-solana.js.map +1 -0
  4. package/dist/main.css +1 -2
  5. package/dist/src/adapters/evm.d.ts +39 -0
  6. package/dist/src/adapters/evm.js +338 -0
  7. package/dist/src/adapters/evm.js.map +1 -0
  8. package/dist/src/adapters/factory.d.ts +37 -0
  9. package/dist/src/adapters/factory.js +82 -0
  10. package/dist/src/adapters/factory.js.map +1 -0
  11. package/dist/src/adapters/index.d.ts +33 -0
  12. package/dist/src/adapters/index.js +36 -0
  13. package/dist/src/adapters/index.js.map +1 -0
  14. package/dist/src/adapters/solana.d.ts +37 -0
  15. package/dist/src/adapters/solana.js +359 -0
  16. package/dist/src/adapters/solana.js.map +1 -0
  17. package/dist/src/adapters/types.d.ts +160 -0
  18. package/dist/src/adapters/types.js +20 -0
  19. package/dist/src/adapters/types.js.map +1 -0
  20. package/dist/src/animations/N1Loader.js.map +1 -0
  21. package/dist/src/animations/N1Loader.json +1 -0
  22. package/dist/src/animations/Processing.js.map +1 -0
  23. package/dist/src/animations/Processing.json +1 -0
  24. package/dist/{components → src/components}/LoadingFallback.d.ts +3 -0
  25. package/dist/{components → src/components}/LoadingFallback.js +3 -0
  26. package/dist/src/components/LoadingFallback.js.map +1 -0
  27. package/dist/{components → src/components}/Logo.d.ts +4 -0
  28. package/dist/{components → src/components}/Logo.js +4 -0
  29. package/dist/src/components/Logo.js.map +1 -0
  30. package/dist/src/components/N1ConnectButton.d.ts +13 -0
  31. package/dist/src/components/N1ConnectButton.js +66 -0
  32. package/dist/src/components/N1ConnectButton.js.map +1 -0
  33. package/dist/src/components/logos/ArbitrumLogo.js.map +1 -0
  34. package/dist/src/components/logos/BaseLogo.js +6 -0
  35. package/dist/src/components/logos/BaseLogo.js.map +1 -0
  36. package/dist/src/components/logos/BeraLogo.js.map +1 -0
  37. package/dist/src/components/logos/BitcoinLogo.js.map +1 -0
  38. package/dist/src/components/logos/EthereumLogo.js.map +1 -0
  39. package/dist/{components → src/components}/logos/HyperliquidLogo.js +1 -1
  40. package/dist/src/components/logos/HyperliquidLogo.js.map +1 -0
  41. package/dist/src/components/logos/OptimismLogo.js.map +1 -0
  42. package/dist/src/components/logos/SolanaLogo.js.map +1 -0
  43. package/dist/src/components/logos/ZeroOneLogo.js.map +1 -0
  44. package/dist/src/components/logos/index.js.map +1 -0
  45. package/dist/src/config/chains.d.ts +18 -0
  46. package/dist/src/config/chains.js +58 -0
  47. package/dist/src/config/chains.js.map +1 -0
  48. package/dist/src/config/dynamic.d.ts +1 -0
  49. package/dist/src/config/dynamic.js +18 -0
  50. package/dist/src/config/dynamic.js.map +1 -0
  51. package/dist/src/config/solana.js.map +1 -0
  52. package/dist/src/config/turnkey.d.ts +2 -0
  53. package/dist/src/config/turnkey.js +32 -0
  54. package/dist/src/config/turnkey.js.map +1 -0
  55. package/dist/src/context/n1-wallet-context.js.map +1 -0
  56. package/dist/src/errors/types.d.ts +72 -0
  57. package/dist/src/errors/types.js +140 -0
  58. package/dist/src/errors/types.js.map +1 -0
  59. package/dist/{features → src/features}/onboarding-flow/N1WalletModal.js +44 -29
  60. package/dist/src/features/onboarding-flow/N1WalletModal.js.map +1 -0
  61. package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.d.ts +2 -1
  62. package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.js +54 -8
  63. package/dist/src/features/onboarding-flow/OnboardingFlow.js.map +1 -0
  64. package/dist/src/features/onboarding-flow/bridge-assist/client.d.ts +42 -0
  65. package/dist/src/features/onboarding-flow/bridge-assist/client.js +268 -0
  66. package/dist/src/features/onboarding-flow/bridge-assist/client.js.map +1 -0
  67. package/dist/src/features/onboarding-flow/bridge-assist/config.d.ts +4 -0
  68. package/dist/src/features/onboarding-flow/bridge-assist/config.js +11 -0
  69. package/dist/src/features/onboarding-flow/bridge-assist/config.js.map +1 -0
  70. package/dist/src/features/onboarding-flow/bridge-assist/index.d.ts +1 -0
  71. package/dist/src/features/onboarding-flow/bridge-assist/index.js +2 -0
  72. package/dist/src/features/onboarding-flow/bridge-assist/index.js.map +1 -0
  73. package/dist/src/features/onboarding-flow/bridge-assist/types.d.ts +5 -0
  74. package/dist/src/features/onboarding-flow/bridge-assist/types.js +28 -0
  75. package/dist/src/features/onboarding-flow/bridge-assist/types.js.map +1 -0
  76. package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.d.ts +35 -0
  77. package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js +391 -0
  78. package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js.map +1 -0
  79. package/dist/src/features/onboarding-flow/cctp/clientFactory.d.ts +6 -0
  80. package/dist/src/features/onboarding-flow/cctp/clientFactory.js +9 -0
  81. package/dist/src/features/onboarding-flow/cctp/clientFactory.js.map +1 -0
  82. package/dist/src/features/onboarding-flow/cctp/config.d.ts +16 -0
  83. package/dist/src/features/onboarding-flow/cctp/config.js +55 -0
  84. package/dist/src/features/onboarding-flow/cctp/config.js.map +1 -0
  85. package/dist/src/features/onboarding-flow/cctp/mockCctpClient.d.ts +11 -0
  86. package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js +85 -0
  87. package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js.map +1 -0
  88. package/dist/src/features/onboarding-flow/cctp/solanaClaim.d.ts +1 -0
  89. package/dist/src/features/onboarding-flow/cctp/solanaClaim.js +2 -0
  90. package/dist/src/features/onboarding-flow/cctp/solanaClaim.js.map +1 -0
  91. package/dist/src/features/onboarding-flow/cctp/types.d.ts +50 -0
  92. package/dist/src/features/onboarding-flow/cctp/types.js +2 -0
  93. package/dist/src/features/onboarding-flow/cctp/types.js.map +1 -0
  94. package/dist/{features → src/features}/onboarding-flow/components/ChainButton.d.ts +5 -2
  95. package/dist/src/features/onboarding-flow/components/ChainButton.js +14 -0
  96. package/dist/src/features/onboarding-flow/components/ChainButton.js.map +1 -0
  97. package/dist/{features → src/features}/onboarding-flow/components/Header.d.ts +2 -2
  98. package/dist/src/features/onboarding-flow/components/Header.js +69 -0
  99. package/dist/src/features/onboarding-flow/components/Header.js.map +1 -0
  100. package/dist/{features → src/features}/onboarding-flow/components/ImageWithFallback.d.ts +2 -5
  101. package/dist/src/features/onboarding-flow/components/ImageWithFallback.js +33 -0
  102. package/dist/src/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
  103. package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.d.ts +5 -0
  104. package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.js +8 -3
  105. package/dist/src/features/onboarding-flow/components/TransactionTable.js.map +1 -0
  106. package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.d.ts +4 -0
  107. package/dist/src/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
  108. package/dist/src/features/onboarding-flow/components/index.js.map +1 -0
  109. package/dist/src/features/onboarding-flow/errors/depositError.d.ts +36 -0
  110. package/dist/src/features/onboarding-flow/errors/depositError.js +134 -0
  111. package/dist/src/features/onboarding-flow/errors/depositError.js.map +1 -0
  112. package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.d.ts +35 -0
  113. package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js +585 -0
  114. package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js.map +1 -0
  115. package/dist/src/features/onboarding-flow/hooks/useDepositAuth.d.ts +6 -0
  116. package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js +141 -0
  117. package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js.map +1 -0
  118. package/dist/src/features/onboarding-flow/hooks/useDepositHydration.d.ts +15 -0
  119. package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js +83 -0
  120. package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js.map +1 -0
  121. package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.d.ts +6 -0
  122. package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js +45 -0
  123. package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js.map +1 -0
  124. package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.d.ts +13 -0
  125. package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js +161 -0
  126. package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js.map +1 -0
  127. package/dist/src/features/onboarding-flow/index.js.map +1 -0
  128. package/dist/{features → src/features}/onboarding-flow/providers/DepositFlowProvider.d.ts +10 -3
  129. package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js +762 -0
  130. package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
  131. package/dist/{features → src/features}/onboarding-flow/providers/OnboardingStateProvider.d.ts +5 -0
  132. package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js +399 -0
  133. package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
  134. package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.d.ts +2 -2
  135. package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.js +2 -2
  136. package/dist/src/features/onboarding-flow/providers/StateProvider.js.map +1 -0
  137. package/dist/{features → src/features}/onboarding-flow/providers/WalletConnectionProvider.d.ts +8 -0
  138. package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js +938 -0
  139. package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
  140. package/dist/{features → src/features}/onboarding-flow/providers/debug.js +5 -1
  141. package/dist/src/features/onboarding-flow/providers/debug.js.map +1 -0
  142. package/dist/src/features/onboarding-flow/providers/index.js.map +1 -0
  143. package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.d.ts +28 -1
  144. package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.js +38 -4
  145. package/dist/src/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
  146. package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.d.ts +4 -0
  147. package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js +32 -0
  148. package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js.map +1 -0
  149. package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +5 -0
  150. package/dist/{features → src/features}/onboarding-flow/screens/01-ConnectWalletScreen.js +5 -0
  151. package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
  152. package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.d.ts +1 -0
  153. package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js +25 -0
  154. package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +1 -0
  155. package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.d.ts +1 -0
  156. package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js +25 -0
  157. package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +1 -0
  158. package/dist/{features/onboarding-flow/screens/02-ChainSelectionScreen.d.ts → src/features/onboarding-flow/screens/04-ChainSelectionScreen.d.ts} +11 -11
  159. package/dist/{features/onboarding-flow/screens/02-ChainSelectionScreen.js → src/features/onboarding-flow/screens/04-ChainSelectionScreen.js} +60 -30
  160. package/dist/src/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +1 -0
  161. package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.d.ts +11 -0
  162. package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js +585 -0
  163. package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js.map +1 -0
  164. package/dist/{features/onboarding-flow/screens/04-DepositProgressScreen.d.ts → src/features/onboarding-flow/screens/06-DepositProgressScreen.d.ts} +5 -0
  165. package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js +367 -0
  166. package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +1 -0
  167. package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +6 -0
  168. package/dist/{features/onboarding-flow/screens/05-DepositSuccessScreen.js → src/features/onboarding-flow/screens/07-DepositSuccessScreen.js} +12 -6
  169. package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +1 -0
  170. package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +5 -0
  171. package/dist/{features/onboarding-flow/screens/06-AuthLoadingScreen.js → src/features/onboarding-flow/screens/08-AuthLoadingScreen.js} +6 -2
  172. package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +1 -0
  173. package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.d.ts +5 -0
  174. package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js +43 -0
  175. package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js.map +1 -0
  176. package/dist/src/features/onboarding-flow/screens/index.d.ts +10 -0
  177. package/dist/src/features/onboarding-flow/screens/index.js +11 -0
  178. package/dist/src/features/onboarding-flow/screens/index.js.map +1 -0
  179. package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.d.ts +1 -0
  180. package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js +2 -0
  181. package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js.map +1 -0
  182. package/dist/{features → src/features}/onboarding-flow/types.d.ts +38 -11
  183. package/dist/{features → src/features}/onboarding-flow/types.js +5 -0
  184. package/dist/src/features/onboarding-flow/types.js.map +1 -0
  185. package/dist/src/features/onboarding-flow/utils/bridgeUtils.d.ts +6 -0
  186. package/dist/src/features/onboarding-flow/utils/bridgeUtils.js +34 -0
  187. package/dist/src/features/onboarding-flow/utils/bridgeUtils.js.map +1 -0
  188. package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.d.ts +29 -0
  189. package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js +82 -0
  190. package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js.map +1 -0
  191. package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.d.ts +5 -0
  192. package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js +10 -0
  193. package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js.map +1 -0
  194. package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.d.ts +14 -0
  195. package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js +94 -0
  196. package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js.map +1 -0
  197. package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.d.ts +25 -0
  198. package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js +212 -0
  199. package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js.map +1 -0
  200. package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.d.ts +37 -0
  201. package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js +199 -0
  202. package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js.map +1 -0
  203. package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.d.ts +27 -0
  204. package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js +149 -0
  205. package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js.map +1 -0
  206. package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.d.ts +5 -0
  207. package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js +121 -0
  208. package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js.map +1 -0
  209. package/dist/{features/onboarding-flow/utils/transaction.d.ts → src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.d.ts} +3 -3
  210. package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js +8 -0
  211. package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js.map +1 -0
  212. package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.d.ts +12 -0
  213. package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js +150 -0
  214. package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js.map +1 -0
  215. package/dist/src/features/onboarding-flow/utils/deposit/storage.d.ts +52 -0
  216. package/dist/src/features/onboarding-flow/utils/deposit/storage.js +243 -0
  217. package/dist/src/features/onboarding-flow/utils/deposit/storage.js.map +1 -0
  218. package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.d.ts +36 -0
  219. package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js +304 -0
  220. package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js.map +1 -0
  221. package/dist/src/features/onboarding-flow/utils/depositPolling.d.ts +1 -0
  222. package/dist/src/features/onboarding-flow/utils/depositPolling.js +3 -0
  223. package/dist/src/features/onboarding-flow/utils/depositPolling.js.map +1 -0
  224. package/dist/src/features/onboarding-flow/utils/explorerUrl.d.ts +14 -0
  225. package/dist/src/features/onboarding-flow/utils/explorerUrl.js +44 -0
  226. package/dist/src/features/onboarding-flow/utils/explorerUrl.js.map +1 -0
  227. package/dist/src/features/onboarding-flow/utils/nordUtils.d.ts +8 -0
  228. package/dist/{features/onboarding-flow/utils/nordUser.js → src/features/onboarding-flow/utils/nordUtils.js} +14 -1
  229. package/dist/src/features/onboarding-flow/utils/nordUtils.js.map +1 -0
  230. package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.d.ts +13 -0
  231. package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js +15 -0
  232. package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js.map +1 -0
  233. package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.d.ts +15 -0
  234. package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js +94 -0
  235. package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js.map +1 -0
  236. package/dist/{features → src/features}/onboarding-flow/utils/utils.d.ts +9 -2
  237. package/dist/{features → src/features}/onboarding-flow/utils/utils.js +9 -4
  238. package/dist/src/features/onboarding-flow/utils/utils.js.map +1 -0
  239. package/dist/src/features/onboarding-flow/utils/withImageFallback.d.ts +6 -0
  240. package/dist/{features → src/features}/onboarding-flow/utils/withImageFallback.js +2 -3
  241. package/dist/src/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
  242. package/dist/src/hooks/index.js.map +1 -0
  243. package/dist/src/hooks/useN1Wallet.d.ts +12 -0
  244. package/dist/{hooks → src/hooks}/useN1Wallet.js +10 -0
  245. package/dist/src/hooks/useN1Wallet.js.map +1 -0
  246. package/dist/src/hooks/useNordUserInitialization.d.ts +12 -0
  247. package/dist/{hooks → src/hooks}/useNordUserInitialization.js +74 -33
  248. package/dist/src/hooks/useNordUserInitialization.js.map +1 -0
  249. package/dist/src/index.d.ts +9 -0
  250. package/dist/src/index.js +16 -0
  251. package/dist/src/index.js.map +1 -0
  252. package/dist/src/providers/LazyWalletProvider.d.ts +4 -0
  253. package/dist/src/providers/LazyWalletProvider.js +404 -0
  254. package/dist/src/providers/LazyWalletProvider.js.map +1 -0
  255. package/dist/src/providers/N1WalletProvider/ContextBridge.d.ts +28 -0
  256. package/dist/src/providers/N1WalletProvider/ContextBridge.js +273 -0
  257. package/dist/src/providers/N1WalletProvider/ContextBridge.js.map +1 -0
  258. package/dist/src/providers/N1WalletProvider/ModalProvider.d.ts +113 -0
  259. package/dist/src/providers/N1WalletProvider/ModalProvider.js +319 -0
  260. package/dist/src/providers/N1WalletProvider/ModalProvider.js.map +1 -0
  261. package/dist/src/providers/N1WalletProvider/NetworkProvider.d.ts +88 -0
  262. package/dist/src/providers/N1WalletProvider/NetworkProvider.js +252 -0
  263. package/dist/src/providers/N1WalletProvider/NetworkProvider.js.map +1 -0
  264. package/dist/src/providers/N1WalletProvider/SessionProvider.d.ts +71 -0
  265. package/dist/src/providers/N1WalletProvider/SessionProvider.js +187 -0
  266. package/dist/src/providers/N1WalletProvider/SessionProvider.js.map +1 -0
  267. package/dist/src/providers/N1WalletProvider/SigningProvider.d.ts +58 -0
  268. package/dist/src/providers/N1WalletProvider/SigningProvider.js +134 -0
  269. package/dist/src/providers/N1WalletProvider/SigningProvider.js.map +1 -0
  270. package/dist/src/providers/N1WalletProvider/ThemingProvider.d.ts +50 -0
  271. package/dist/src/providers/N1WalletProvider/ThemingProvider.js +102 -0
  272. package/dist/src/providers/N1WalletProvider/ThemingProvider.js.map +1 -0
  273. package/dist/src/providers/N1WalletProvider/index.d.ts +21 -0
  274. package/dist/src/providers/N1WalletProvider/index.js +27 -0
  275. package/dist/src/providers/N1WalletProvider/index.js.map +1 -0
  276. package/dist/src/providers/N1WalletProvider.d.ts +17 -0
  277. package/dist/src/providers/N1WalletProvider.js +102 -0
  278. package/dist/src/providers/N1WalletProvider.js.map +1 -0
  279. package/dist/{providers → src/providers}/ShadowRootWrapper.d.ts +4 -0
  280. package/dist/{providers → src/providers}/ShadowRootWrapper.js +4 -5
  281. package/dist/src/providers/ShadowRootWrapper.js.map +1 -0
  282. package/dist/{providers → src/providers}/WalletErrorBoundary.d.ts +7 -2
  283. package/dist/{providers → src/providers}/WalletErrorBoundary.js +5 -1
  284. package/dist/src/providers/WalletErrorBoundary.js.map +1 -0
  285. package/dist/src/services/bootstrap/DepositRecoveryService.d.ts +64 -0
  286. package/dist/src/services/bootstrap/DepositRecoveryService.js +245 -0
  287. package/dist/src/services/bootstrap/DepositRecoveryService.js.map +1 -0
  288. package/dist/src/services/bootstrap/DynamicSdkService.d.ts +62 -0
  289. package/dist/src/services/bootstrap/DynamicSdkService.js +335 -0
  290. package/dist/src/services/bootstrap/DynamicSdkService.js.map +1 -0
  291. package/dist/src/services/bootstrap/SessionBootstrapService.d.ts +78 -0
  292. package/dist/src/services/bootstrap/SessionBootstrapService.js +280 -0
  293. package/dist/src/services/bootstrap/SessionBootstrapService.js.map +1 -0
  294. package/dist/src/services/bootstrap/TurnkeyBootstrapService.d.ts +92 -0
  295. package/dist/src/services/bootstrap/TurnkeyBootstrapService.js +253 -0
  296. package/dist/src/services/bootstrap/TurnkeyBootstrapService.js.map +1 -0
  297. package/dist/src/services/bootstrap/index.d.ts +13 -0
  298. package/dist/src/services/bootstrap/index.js +16 -0
  299. package/dist/src/services/bootstrap/index.js.map +1 -0
  300. package/dist/src/services/bootstrap/types.d.ts +92 -0
  301. package/dist/src/services/bootstrap/types.js +7 -0
  302. package/dist/src/services/bootstrap/types.js.map +1 -0
  303. package/dist/src/services/storage/StorageService.d.ts +98 -0
  304. package/dist/src/services/storage/StorageService.js +360 -0
  305. package/dist/src/services/storage/StorageService.js.map +1 -0
  306. package/dist/src/services/storage/index.d.ts +9 -0
  307. package/dist/src/services/storage/index.js +10 -0
  308. package/dist/src/services/storage/index.js.map +1 -0
  309. package/dist/src/services/storage/keys.d.ts +28 -0
  310. package/dist/src/services/storage/keys.js +45 -0
  311. package/dist/src/services/storage/keys.js.map +1 -0
  312. package/dist/src/services/storage/types.d.ts +73 -0
  313. package/dist/src/services/storage/types.js +23 -0
  314. package/dist/src/services/storage/types.js.map +1 -0
  315. package/dist/src/store/index.d.ts +8 -0
  316. package/dist/src/store/index.js +24 -0
  317. package/dist/src/store/index.js.map +1 -0
  318. package/dist/src/store/selectors.d.ts +105 -0
  319. package/dist/src/store/selectors.js +183 -0
  320. package/dist/src/store/selectors.js.map +1 -0
  321. package/dist/src/store/slices/bootstrapSlice.d.ts +64 -0
  322. package/dist/src/store/slices/bootstrapSlice.js +78 -0
  323. package/dist/src/store/slices/bootstrapSlice.js.map +1 -0
  324. package/dist/src/store/slices/configSlice.d.ts +7 -0
  325. package/dist/src/store/slices/configSlice.js +14 -0
  326. package/dist/src/store/slices/configSlice.js.map +1 -0
  327. package/dist/src/store/slices/index.d.ts +10 -0
  328. package/dist/src/store/slices/index.js +10 -0
  329. package/dist/src/store/slices/index.js.map +1 -0
  330. package/dist/src/store/slices/sessionSlice.d.ts +7 -0
  331. package/dist/src/store/slices/sessionSlice.js +17 -0
  332. package/dist/src/store/slices/sessionSlice.js.map +1 -0
  333. package/dist/src/store/slices/signingSlice.d.ts +7 -0
  334. package/dist/src/store/slices/signingSlice.js +14 -0
  335. package/dist/src/store/slices/signingSlice.js.map +1 -0
  336. package/dist/src/store/slices/uiSlice.d.ts +9 -0
  337. package/dist/src/store/slices/uiSlice.js +25 -0
  338. package/dist/src/store/slices/uiSlice.js.map +1 -0
  339. package/dist/src/store/slices/walletSlice.d.ts +7 -0
  340. package/dist/src/store/slices/walletSlice.js +21 -0
  341. package/dist/src/store/slices/walletSlice.js.map +1 -0
  342. package/dist/src/store/store.d.ts +50 -0
  343. package/dist/src/store/store.js +259 -0
  344. package/dist/src/store/store.js.map +1 -0
  345. package/dist/src/store/subscriptions/depositPersistence.d.ts +32 -0
  346. package/dist/src/store/subscriptions/depositPersistence.js +106 -0
  347. package/dist/src/store/subscriptions/depositPersistence.js.map +1 -0
  348. package/dist/src/store/subscriptions/index.d.ts +34 -0
  349. package/dist/src/store/subscriptions/index.js +73 -0
  350. package/dist/src/store/subscriptions/index.js.map +1 -0
  351. package/dist/src/store/subscriptions/turnkeyPersistence.d.ts +42 -0
  352. package/dist/src/store/subscriptions/turnkeyPersistence.js +127 -0
  353. package/dist/src/store/subscriptions/turnkeyPersistence.js.map +1 -0
  354. package/dist/src/store/types.d.ts +166 -0
  355. package/dist/src/store/types.js +7 -0
  356. package/dist/src/store/types.js.map +1 -0
  357. package/dist/src/styles/cdn-fonts.d.ts +12 -0
  358. package/dist/{styles → src/styles}/cdn-fonts.js +20 -2
  359. package/dist/src/styles/cdn-fonts.js.map +1 -0
  360. package/dist/src/styles/embedded-main-css.d.ts +2 -0
  361. package/dist/src/styles/embedded-main-css.js +3 -0
  362. package/dist/src/styles/embedded-main-css.js.map +1 -0
  363. package/dist/src/turnkey/TurnkeyProvider.d.ts +21 -0
  364. package/dist/src/turnkey/TurnkeyProvider.js +695 -0
  365. package/dist/src/turnkey/TurnkeyProvider.js.map +1 -0
  366. package/dist/src/turnkey/createTurnkeyWallet.d.ts +39 -0
  367. package/dist/src/turnkey/createTurnkeyWallet.js +319 -0
  368. package/dist/src/turnkey/createTurnkeyWallet.js.map +1 -0
  369. package/dist/src/turnkey/createWalletProvider.d.ts +8 -0
  370. package/dist/src/turnkey/createWalletProvider.js +286 -0
  371. package/dist/src/turnkey/createWalletProvider.js.map +1 -0
  372. package/dist/src/turnkey/index.d.ts +3 -0
  373. package/dist/src/turnkey/index.js +3 -0
  374. package/dist/src/turnkey/index.js.map +1 -0
  375. package/dist/src/turnkey/turnkeySessionMachine.d.ts +39 -0
  376. package/dist/src/turnkey/turnkeySessionMachine.js +77 -0
  377. package/dist/src/turnkey/turnkeySessionMachine.js.map +1 -0
  378. package/dist/src/turnkey/turnkeySessionStorage.d.ts +48 -0
  379. package/dist/src/turnkey/turnkeySessionStorage.js +183 -0
  380. package/dist/src/turnkey/turnkeySessionStorage.js.map +1 -0
  381. package/dist/src/turnkey/types.d.ts +61 -0
  382. package/dist/src/turnkey/types.js +12 -0
  383. package/dist/src/turnkey/types.js.map +1 -0
  384. package/dist/{types → src/types}/wallet.d.ts +39 -13
  385. package/dist/src/types/wallet.js.map +1 -0
  386. package/dist/src/utils/address.d.ts +130 -0
  387. package/dist/src/utils/address.js +274 -0
  388. package/dist/src/utils/address.js.map +1 -0
  389. package/dist/src/utils/chain.d.ts +89 -0
  390. package/dist/src/utils/chain.js +282 -0
  391. package/dist/src/utils/chain.js.map +1 -0
  392. package/dist/{utils → src/utils}/ed25519.d.ts +0 -2
  393. package/dist/{utils → src/utils}/ed25519.js +5 -20
  394. package/dist/src/utils/ed25519.js.map +1 -0
  395. package/dist/src/utils/errors.d.ts +68 -0
  396. package/dist/src/utils/errors.js +190 -0
  397. package/dist/src/utils/errors.js.map +1 -0
  398. package/dist/src/utils/events.d.ts +124 -0
  399. package/dist/src/utils/events.js +155 -0
  400. package/dist/src/utils/events.js.map +1 -0
  401. package/dist/src/utils/formatAmount.d.ts +4 -0
  402. package/dist/src/utils/formatAmount.js +9 -0
  403. package/dist/src/utils/formatAmount.js.map +1 -0
  404. package/dist/src/utils/logger.d.ts +45 -0
  405. package/dist/{utils → src/utils}/logger.js +68 -2
  406. package/dist/src/utils/logger.js.map +1 -0
  407. package/dist/src/utils/shortenString.d.ts +5 -0
  408. package/dist/src/utils/shortenString.js +16 -0
  409. package/dist/src/utils/shortenString.js.map +1 -0
  410. package/package.json +45 -29
  411. package/dist/animations/N1Loader.js.map +0 -1
  412. package/dist/animations/Processing.js.map +0 -1
  413. package/dist/components/LoadingFallback.js.map +0 -1
  414. package/dist/components/Logo.js.map +0 -1
  415. package/dist/components/N1ConnectButton.d.ts +0 -5
  416. package/dist/components/N1ConnectButton.js +0 -49
  417. package/dist/components/N1ConnectButton.js.map +0 -1
  418. package/dist/components/logos/ArbitrumLogo.js.map +0 -1
  419. package/dist/components/logos/BaseLogo.js +0 -6
  420. package/dist/components/logos/BaseLogo.js.map +0 -1
  421. package/dist/components/logos/BeraLogo.js.map +0 -1
  422. package/dist/components/logos/BitcoinLogo.js.map +0 -1
  423. package/dist/components/logos/EthereumLogo.js.map +0 -1
  424. package/dist/components/logos/HyperliquidLogo.js.map +0 -1
  425. package/dist/components/logos/OptimismLogo.js.map +0 -1
  426. package/dist/components/logos/SolanaLogo.js.map +0 -1
  427. package/dist/components/logos/ZeroOneLogo.js.map +0 -1
  428. package/dist/components/logos/index.js.map +0 -1
  429. package/dist/config/chains.d.ts +0 -0
  430. package/dist/config/chains.js +0 -2
  431. package/dist/config/chains.js.map +0 -1
  432. package/dist/config/solana.js.map +0 -1
  433. package/dist/config.d.ts +0 -2
  434. package/dist/config.js +0 -3
  435. package/dist/config.js.map +0 -1
  436. package/dist/context/n1-wallet-context.js.map +0 -1
  437. package/dist/errors/types.d.ts +0 -25
  438. package/dist/errors/types.js +0 -77
  439. package/dist/errors/types.js.map +0 -1
  440. package/dist/features/onboarding-flow/N1WalletModal.js.map +0 -1
  441. package/dist/features/onboarding-flow/OnboardingFlow.js.map +0 -1
  442. package/dist/features/onboarding-flow/components/ChainButton.js +0 -21
  443. package/dist/features/onboarding-flow/components/ChainButton.js.map +0 -1
  444. package/dist/features/onboarding-flow/components/Header.js +0 -45
  445. package/dist/features/onboarding-flow/components/Header.js.map +0 -1
  446. package/dist/features/onboarding-flow/components/ImageWithFallback.js +0 -63
  447. package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +0 -1
  448. package/dist/features/onboarding-flow/components/TransactionTable.js.map +0 -1
  449. package/dist/features/onboarding-flow/components/WaitingMessage.js.map +0 -1
  450. package/dist/features/onboarding-flow/components/index.js.map +0 -1
  451. package/dist/features/onboarding-flow/index.js.map +0 -1
  452. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +0 -525
  453. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +0 -1
  454. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +0 -185
  455. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +0 -1
  456. package/dist/features/onboarding-flow/providers/StateProvider.js.map +0 -1
  457. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +0 -394
  458. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +0 -1
  459. package/dist/features/onboarding-flow/providers/debug.js.map +0 -1
  460. package/dist/features/onboarding-flow/providers/index.js.map +0 -1
  461. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +0 -1
  462. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +0 -1
  463. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +0 -1
  464. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +0 -1
  465. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.d.ts +0 -6
  466. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +0 -360
  467. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +0 -1
  468. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +0 -31
  469. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +0 -1
  470. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.d.ts +0 -1
  471. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +0 -1
  472. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.d.ts +0 -1
  473. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +0 -1
  474. package/dist/features/onboarding-flow/screens/07-ErrorScreen.d.ts +0 -1
  475. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +0 -14
  476. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +0 -1
  477. package/dist/features/onboarding-flow/screens/index.d.ts +0 -7
  478. package/dist/features/onboarding-flow/screens/index.js +0 -8
  479. package/dist/features/onboarding-flow/screens/index.js.map +0 -1
  480. package/dist/features/onboarding-flow/types.js.map +0 -1
  481. package/dist/features/onboarding-flow/utils/depositStorage.d.ts +0 -4
  482. package/dist/features/onboarding-flow/utils/depositStorage.js +0 -48
  483. package/dist/features/onboarding-flow/utils/depositStorage.js.map +0 -1
  484. package/dist/features/onboarding-flow/utils/imageUtils.d.ts +0 -21
  485. package/dist/features/onboarding-flow/utils/imageUtils.js +0 -110
  486. package/dist/features/onboarding-flow/utils/imageUtils.js.map +0 -1
  487. package/dist/features/onboarding-flow/utils/nordUser.d.ts +0 -1
  488. package/dist/features/onboarding-flow/utils/nordUser.js.map +0 -1
  489. package/dist/features/onboarding-flow/utils/nordUtils.d.ts +0 -40
  490. package/dist/features/onboarding-flow/utils/nordUtils.js +0 -64
  491. package/dist/features/onboarding-flow/utils/nordUtils.js.map +0 -1
  492. package/dist/features/onboarding-flow/utils/session.d.ts +0 -17
  493. package/dist/features/onboarding-flow/utils/session.js +0 -69
  494. package/dist/features/onboarding-flow/utils/session.js.map +0 -1
  495. package/dist/features/onboarding-flow/utils/transaction.js +0 -8
  496. package/dist/features/onboarding-flow/utils/transaction.js.map +0 -1
  497. package/dist/features/onboarding-flow/utils/utils.js.map +0 -1
  498. package/dist/features/onboarding-flow/utils/withImageFallback.d.ts +0 -7
  499. package/dist/features/onboarding-flow/utils/withImageFallback.js.map +0 -1
  500. package/dist/hooks/index.js.map +0 -1
  501. package/dist/hooks/useN1Wallet.d.ts +0 -2
  502. package/dist/hooks/useN1Wallet.js.map +0 -1
  503. package/dist/hooks/useNordUserInitialization.d.ts +0 -1
  504. package/dist/hooks/useNordUserInitialization.js.map +0 -1
  505. package/dist/index.d.ts +0 -7
  506. package/dist/index.js +0 -8
  507. package/dist/index.js.map +0 -1
  508. package/dist/polyfills/windowEthereumGuard.d.ts +0 -6
  509. package/dist/polyfills/windowEthereumGuard.js +0 -28
  510. package/dist/polyfills/windowEthereumGuard.js.map +0 -1
  511. package/dist/providers/LazyWalletProvider.d.ts +0 -1
  512. package/dist/providers/LazyWalletProvider.js +0 -230
  513. package/dist/providers/LazyWalletProvider.js.map +0 -1
  514. package/dist/providers/N1WalletProvider.d.ts +0 -3
  515. package/dist/providers/N1WalletProvider.js +0 -271
  516. package/dist/providers/N1WalletProvider.js.map +0 -1
  517. package/dist/providers/ShadowRootWrapper.js.map +0 -1
  518. package/dist/providers/WalletErrorBoundary.js.map +0 -1
  519. package/dist/styles/cdn-fonts.d.ts +0 -1
  520. package/dist/styles/cdn-fonts.js.map +0 -1
  521. package/dist/styles/embedded-main-css.d.ts +0 -2
  522. package/dist/styles/embedded-main-css.js +0 -3
  523. package/dist/styles/embedded-main-css.js.map +0 -1
  524. package/dist/types/wallet.js.map +0 -1
  525. package/dist/utils/ed25519.js.map +0 -1
  526. package/dist/utils/getPseudoName.d.ts +0 -1
  527. package/dist/utils/getPseudoName.js +0 -5826
  528. package/dist/utils/getPseudoName.js.map +0 -1
  529. package/dist/utils/logger.d.ts +0 -21
  530. package/dist/utils/logger.js.map +0 -1
  531. package/dist/utils/shortenString.d.ts +0 -2
  532. package/dist/utils/shortenString.js +0 -9
  533. package/dist/utils/shortenString.js.map +0 -1
  534. package/dist/utils/words.d.ts +0 -9
  535. package/dist/utils/words.js +0 -93572
  536. package/dist/utils/words.js.map +0 -1
  537. /package/dist/{animations → src/animations}/N1Loader.d.ts +0 -0
  538. /package/dist/{animations → src/animations}/N1Loader.js +0 -0
  539. /package/dist/{animations → src/animations}/Processing.d.ts +0 -0
  540. /package/dist/{animations → src/animations}/Processing.js +0 -0
  541. /package/dist/{components → src/components}/logos/ArbitrumLogo.d.ts +0 -0
  542. /package/dist/{components → src/components}/logos/ArbitrumLogo.js +0 -0
  543. /package/dist/{components → src/components}/logos/BaseLogo.d.ts +0 -0
  544. /package/dist/{components → src/components}/logos/BeraLogo.d.ts +0 -0
  545. /package/dist/{components → src/components}/logos/BeraLogo.js +0 -0
  546. /package/dist/{components → src/components}/logos/BitcoinLogo.d.ts +0 -0
  547. /package/dist/{components → src/components}/logos/BitcoinLogo.js +0 -0
  548. /package/dist/{components → src/components}/logos/EthereumLogo.d.ts +0 -0
  549. /package/dist/{components → src/components}/logos/EthereumLogo.js +0 -0
  550. /package/dist/{components → src/components}/logos/HyperliquidLogo.d.ts +0 -0
  551. /package/dist/{components → src/components}/logos/OptimismLogo.d.ts +0 -0
  552. /package/dist/{components → src/components}/logos/OptimismLogo.js +0 -0
  553. /package/dist/{components → src/components}/logos/SolanaLogo.d.ts +0 -0
  554. /package/dist/{components → src/components}/logos/SolanaLogo.js +0 -0
  555. /package/dist/{components → src/components}/logos/ZeroOneLogo.d.ts +0 -0
  556. /package/dist/{components → src/components}/logos/ZeroOneLogo.js +0 -0
  557. /package/dist/{components → src/components}/logos/index.d.ts +0 -0
  558. /package/dist/{components → src/components}/logos/index.js +0 -0
  559. /package/dist/{config → src/config}/solana.d.ts +0 -0
  560. /package/dist/{config → src/config}/solana.js +0 -0
  561. /package/dist/{context → src/context}/n1-wallet-context.d.ts +0 -0
  562. /package/dist/{context → src/context}/n1-wallet-context.js +0 -0
  563. /package/dist/{features → src/features}/onboarding-flow/N1WalletModal.d.ts +0 -0
  564. /package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.js +0 -0
  565. /package/dist/{features → src/features}/onboarding-flow/components/index.d.ts +0 -0
  566. /package/dist/{features → src/features}/onboarding-flow/components/index.js +0 -0
  567. /package/dist/{features → src/features}/onboarding-flow/index.d.ts +0 -0
  568. /package/dist/{features → src/features}/onboarding-flow/index.js +0 -0
  569. /package/dist/{features → src/features}/onboarding-flow/providers/debug.d.ts +0 -0
  570. /package/dist/{features → src/features}/onboarding-flow/providers/index.d.ts +0 -0
  571. /package/dist/{features → src/features}/onboarding-flow/providers/index.js +0 -0
  572. /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
  573. /package/dist/{hooks → src/hooks}/index.js +0 -0
  574. /package/dist/{types → src/types}/wallet.js +0 -0
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Session Bootstrap Service
3
+ *
4
+ * Handles session key generation, storage, and signing function creation.
5
+ * Extracted from useNordUserInitialization to enable:
6
+ * - Testable pure functions
7
+ * - Clear separation from React lifecycle
8
+ * - Reusable session logic
9
+ */
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ var __generator = (this && this.__generator) || function (thisArg, body) {
20
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
21
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
22
+ function verb(n) { return function (v) { return step([n, v]); }; }
23
+ function step(op) {
24
+ if (f) throw new TypeError("Generator is already executing.");
25
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
26
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
27
+ if (y = 0, t) op = [op[0] & 2, t.value];
28
+ switch (op[0]) {
29
+ case 0: case 1: t = op; break;
30
+ case 4: _.label++; return { value: op[1], done: false };
31
+ case 5: _.label++; y = op[1]; op = [0]; continue;
32
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
33
+ default:
34
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
35
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
36
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
37
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
38
+ if (t[2]) _.ops.pop();
39
+ _.trys.pop(); continue;
40
+ }
41
+ op = body.call(thisArg, _);
42
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
43
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
44
+ }
45
+ };
46
+ import { logger } from '../../utils/logger';
47
+ // ============================================
48
+ // CONSTANTS
49
+ // ============================================
50
+ var SESSION_KEYS_PREFIX = 'n1_session_keys_';
51
+ var SESSION_ID_PREFIX = 'n1_sessionId_';
52
+ // ============================================
53
+ // STORAGE HELPERS
54
+ // ============================================
55
+ /**
56
+ * Generate storage key for session keys.
57
+ */
58
+ function getSessionKeysStorageKey(address) {
59
+ return "".concat(SESSION_KEYS_PREFIX).concat(address);
60
+ }
61
+ /**
62
+ * Generate storage key for session ID.
63
+ */
64
+ function getSessionIdStorageKey(address) {
65
+ return "".concat(SESSION_ID_PREFIX).concat(address);
66
+ }
67
+ // ============================================
68
+ // SESSION KEY MANAGEMENT
69
+ // ============================================
70
+ /**
71
+ * Check if session keys exist for an address.
72
+ */
73
+ export function hasStoredSessionKeys(address) {
74
+ if (typeof localStorage === 'undefined')
75
+ return false;
76
+ try {
77
+ var key = getSessionKeysStorageKey(address);
78
+ var stored = localStorage.getItem(key);
79
+ if (!stored)
80
+ return false;
81
+ var parsed = JSON.parse(stored);
82
+ return !!((parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PublicKey) && (parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PrivateKey));
83
+ }
84
+ catch (_a) {
85
+ return false;
86
+ }
87
+ }
88
+ /**
89
+ * Read stored session keys for an address.
90
+ */
91
+ export function readSessionKeys(address) {
92
+ if (typeof localStorage === 'undefined')
93
+ return null;
94
+ try {
95
+ var key = getSessionKeysStorageKey(address);
96
+ var stored = localStorage.getItem(key);
97
+ if (!stored)
98
+ return null;
99
+ var parsed = JSON.parse(stored);
100
+ if (!(parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PublicKey) || !(parsed === null || parsed === void 0 ? void 0 : parsed.ed25519PrivateKey)) {
101
+ return null;
102
+ }
103
+ // Convert arrays back to Uint8Array
104
+ return {
105
+ ed25519PrivateKey: new Uint8Array(Object.values(parsed.ed25519PrivateKey)),
106
+ ed25519PublicKey: new Uint8Array(Object.values(parsed.ed25519PublicKey)),
107
+ walletPublicKey: parsed.walletPublicKey,
108
+ chainName: parsed.chainName,
109
+ };
110
+ }
111
+ catch (error) {
112
+ logger.warn('[SessionBootstrapService] Failed to read session keys', { error: error });
113
+ return null;
114
+ }
115
+ }
116
+ /**
117
+ * Store session keys for an address.
118
+ */
119
+ export function storeSessionKeys(params) {
120
+ var _a;
121
+ if (typeof localStorage === 'undefined')
122
+ return;
123
+ try {
124
+ var key = getSessionKeysStorageKey(params.address);
125
+ var data = {
126
+ ed25519PrivateKey: Array.from(params.privateKey),
127
+ ed25519PublicKey: Array.from(params.publicKey),
128
+ walletPublicKey: params.address,
129
+ chainName: (_a = params.chainName) !== null && _a !== void 0 ? _a : 'SOL',
130
+ };
131
+ localStorage.setItem(key, JSON.stringify(data));
132
+ logger.debug('[SessionBootstrapService] Session keys stored');
133
+ }
134
+ catch (error) {
135
+ logger.warn('[SessionBootstrapService] Failed to store session keys', { error: error });
136
+ }
137
+ }
138
+ /**
139
+ * Clear session keys for an address.
140
+ */
141
+ export function clearSessionKeys(address) {
142
+ if (typeof localStorage === 'undefined')
143
+ return;
144
+ try {
145
+ var key = getSessionKeysStorageKey(address);
146
+ localStorage.removeItem(key);
147
+ logger.debug('[SessionBootstrapService] Session keys cleared');
148
+ }
149
+ catch (_a) {
150
+ // Ignore
151
+ }
152
+ }
153
+ // ============================================
154
+ // SESSION ID MANAGEMENT
155
+ // ============================================
156
+ /**
157
+ * Read stored session ID for an address.
158
+ */
159
+ export function readSessionId(address) {
160
+ if (typeof localStorage === 'undefined')
161
+ return null;
162
+ try {
163
+ var key = getSessionIdStorageKey(address);
164
+ var stored = localStorage.getItem(key);
165
+ if (!stored)
166
+ return null;
167
+ return BigInt(stored);
168
+ }
169
+ catch (_a) {
170
+ return null;
171
+ }
172
+ }
173
+ /**
174
+ * Store session ID for an address.
175
+ */
176
+ export function storeSessionId(address, sessionId) {
177
+ if (typeof localStorage === 'undefined')
178
+ return;
179
+ try {
180
+ var key = getSessionIdStorageKey(address);
181
+ localStorage.setItem(key, sessionId.toString());
182
+ }
183
+ catch (_a) {
184
+ // Ignore
185
+ }
186
+ }
187
+ /**
188
+ * Clear session ID for an address.
189
+ */
190
+ export function clearSessionId(address) {
191
+ if (typeof localStorage === 'undefined')
192
+ return;
193
+ try {
194
+ var key = getSessionIdStorageKey(address);
195
+ localStorage.removeItem(key);
196
+ }
197
+ catch (_a) {
198
+ // Ignore
199
+ }
200
+ }
201
+ // ============================================
202
+ // SESSION INITIALIZATION
203
+ // ============================================
204
+ /**
205
+ * Get or create session key pair for an address.
206
+ *
207
+ * This function:
208
+ * 1. Checks for existing stored keys
209
+ * 2. If found, returns them
210
+ * 3. If not found, generates new keys (caller must provide generator)
211
+ */
212
+ export function getOrCreateSessionKeyPair(address, generateKeyPair) {
213
+ return __awaiter(this, void 0, void 0, function () {
214
+ var stored, keyPair;
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0:
218
+ stored = readSessionKeys(address);
219
+ if (stored) {
220
+ logger.debug('[SessionBootstrapService] Using stored session keys');
221
+ return [2 /*return*/, {
222
+ privateKey: stored.ed25519PrivateKey,
223
+ publicKey: stored.ed25519PublicKey,
224
+ }];
225
+ }
226
+ // Generate new keys
227
+ logger.debug('[SessionBootstrapService] Generating new session keys');
228
+ return [4 /*yield*/, generateKeyPair()];
229
+ case 1:
230
+ keyPair = _a.sent();
231
+ // Store for future use
232
+ storeSessionKeys({
233
+ address: address,
234
+ privateKey: keyPair.privateKey,
235
+ publicKey: keyPair.publicKey,
236
+ });
237
+ return [2 /*return*/, keyPair];
238
+ }
239
+ });
240
+ });
241
+ }
242
+ // ============================================
243
+ // SESSION STATE HELPERS
244
+ // ============================================
245
+ /**
246
+ * Check if a session is fully initialized.
247
+ */
248
+ export function isSessionReady(params) {
249
+ return !!(params.sessionPubKey &&
250
+ params.signMessageWithSessionKey &&
251
+ params.signMessageWithWalletKey &&
252
+ params.signTransactionWithWalletKey);
253
+ }
254
+ /**
255
+ * Clear all session data for an address.
256
+ */
257
+ export function clearAllSessionData(address) {
258
+ clearSessionKeys(address);
259
+ clearSessionId(address);
260
+ logger.debug('[SessionBootstrapService] All session data cleared');
261
+ }
262
+ // ============================================
263
+ // VALIDATION
264
+ // ============================================
265
+ /**
266
+ * Validate session keys are usable.
267
+ */
268
+ export function validateSessionKeys(keys) {
269
+ // Check key lengths
270
+ if (keys.ed25519PrivateKey.length !== 64) {
271
+ logger.warn('[SessionBootstrapService] Invalid private key length');
272
+ return false;
273
+ }
274
+ if (keys.ed25519PublicKey.length !== 32) {
275
+ logger.warn('[SessionBootstrapService] Invalid public key length');
276
+ return false;
277
+ }
278
+ return true;
279
+ }
280
+ //# sourceMappingURL=SessionBootstrapService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionBootstrapService.js","sourceRoot":"","sources":["../../../../src/services/bootstrap/SessionBootstrapService.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Session Bootstrap Service\n *\n * Handles session key generation, storage, and signing function creation.\n * Extracted from useNordUserInitialization to enable:\n * - Testable pure functions\n * - Clear separation from React lifecycle\n * - Reusable session logic\n */\n\nimport { logger } from '../../utils/logger';\n\n// ============================================\n// CONSTANTS\n// ============================================\n\nconst SESSION_KEYS_PREFIX = 'n1_session_keys_';\nconst SESSION_ID_PREFIX = 'n1_sessionId_';\n\n// ============================================\n// STORAGE HELPERS\n// ============================================\n\n/**\n * Generate storage key for session keys.\n */\nfunction getSessionKeysStorageKey(address: string): string {\n return `${SESSION_KEYS_PREFIX}${address}`;\n}\n\n/**\n * Generate storage key for session ID.\n */\nfunction getSessionIdStorageKey(address: string): string {\n return `${SESSION_ID_PREFIX}${address}`;\n}\n\n// ============================================\n// SESSION KEY TYPES\n// ============================================\n\nexport interface StoredSessionKeys {\n ed25519PrivateKey: Uint8Array;\n ed25519PublicKey: Uint8Array;\n walletPublicKey: string;\n chainName: string;\n}\n\nexport interface SessionKeyPair {\n privateKey: Uint8Array;\n publicKey: Uint8Array;\n}\n\n// ============================================\n// SESSION KEY MANAGEMENT\n// ============================================\n\n/**\n * Check if session keys exist for an address.\n */\nexport function hasStoredSessionKeys(address: string): boolean {\n if (typeof localStorage === 'undefined') return false;\n\n try {\n const key = getSessionKeysStorageKey(address);\n const stored = localStorage.getItem(key);\n if (!stored) return false;\n\n const parsed = JSON.parse(stored);\n return !!(parsed?.ed25519PublicKey && parsed?.ed25519PrivateKey);\n } catch {\n return false;\n }\n}\n\n/**\n * Read stored session keys for an address.\n */\nexport function readSessionKeys(address: string): StoredSessionKeys | null {\n if (typeof localStorage === 'undefined') return null;\n\n try {\n const key = getSessionKeysStorageKey(address);\n const stored = localStorage.getItem(key);\n if (!stored) return null;\n\n const parsed = JSON.parse(stored);\n if (!parsed?.ed25519PublicKey || !parsed?.ed25519PrivateKey) {\n return null;\n }\n\n // Convert arrays back to Uint8Array\n return {\n ed25519PrivateKey: new Uint8Array(Object.values(parsed.ed25519PrivateKey)),\n ed25519PublicKey: new Uint8Array(Object.values(parsed.ed25519PublicKey)),\n walletPublicKey: parsed.walletPublicKey,\n chainName: parsed.chainName,\n };\n } catch (error) {\n logger.warn('[SessionBootstrapService] Failed to read session keys', { error });\n return null;\n }\n}\n\n/**\n * Store session keys for an address.\n */\nexport function storeSessionKeys(params: {\n address: string;\n privateKey: Uint8Array;\n publicKey: Uint8Array;\n chainName?: string;\n}): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionKeysStorageKey(params.address);\n const data = {\n ed25519PrivateKey: Array.from(params.privateKey),\n ed25519PublicKey: Array.from(params.publicKey),\n walletPublicKey: params.address,\n chainName: params.chainName ?? 'SOL',\n };\n localStorage.setItem(key, JSON.stringify(data));\n logger.debug('[SessionBootstrapService] Session keys stored');\n } catch (error) {\n logger.warn('[SessionBootstrapService] Failed to store session keys', { error });\n }\n}\n\n/**\n * Clear session keys for an address.\n */\nexport function clearSessionKeys(address: string): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionKeysStorageKey(address);\n localStorage.removeItem(key);\n logger.debug('[SessionBootstrapService] Session keys cleared');\n } catch {\n // Ignore\n }\n}\n\n// ============================================\n// SESSION ID MANAGEMENT\n// ============================================\n\n/**\n * Read stored session ID for an address.\n */\nexport function readSessionId(address: string): bigint | null {\n if (typeof localStorage === 'undefined') return null;\n\n try {\n const key = getSessionIdStorageKey(address);\n const stored = localStorage.getItem(key);\n if (!stored) return null;\n\n return BigInt(stored);\n } catch {\n return null;\n }\n}\n\n/**\n * Store session ID for an address.\n */\nexport function storeSessionId(address: string, sessionId: bigint): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionIdStorageKey(address);\n localStorage.setItem(key, sessionId.toString());\n } catch {\n // Ignore\n }\n}\n\n/**\n * Clear session ID for an address.\n */\nexport function clearSessionId(address: string): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = getSessionIdStorageKey(address);\n localStorage.removeItem(key);\n } catch {\n // Ignore\n }\n}\n\n// ============================================\n// SESSION INITIALIZATION\n// ============================================\n\n/**\n * Get or create session key pair for an address.\n *\n * This function:\n * 1. Checks for existing stored keys\n * 2. If found, returns them\n * 3. If not found, generates new keys (caller must provide generator)\n */\nexport async function getOrCreateSessionKeyPair(\n address: string,\n generateKeyPair: () => Promise<SessionKeyPair>\n): Promise<SessionKeyPair> {\n // Check for existing keys\n const stored = readSessionKeys(address);\n if (stored) {\n logger.debug('[SessionBootstrapService] Using stored session keys');\n return {\n privateKey: stored.ed25519PrivateKey,\n publicKey: stored.ed25519PublicKey,\n };\n }\n\n // Generate new keys\n logger.debug('[SessionBootstrapService] Generating new session keys');\n const keyPair = await generateKeyPair();\n\n // Store for future use\n storeSessionKeys({\n address,\n privateKey: keyPair.privateKey,\n publicKey: keyPair.publicKey,\n });\n\n return keyPair;\n}\n\n// ============================================\n// SESSION STATE HELPERS\n// ============================================\n\n/**\n * Check if a session is fully initialized.\n */\nexport function isSessionReady(params: {\n sessionPubKey: Uint8Array | null;\n signMessageWithSessionKey: unknown;\n signMessageWithWalletKey: unknown;\n signTransactionWithWalletKey: unknown;\n}): boolean {\n return !!(\n params.sessionPubKey &&\n params.signMessageWithSessionKey &&\n params.signMessageWithWalletKey &&\n params.signTransactionWithWalletKey\n );\n}\n\n/**\n * Clear all session data for an address.\n */\nexport function clearAllSessionData(address: string): void {\n clearSessionKeys(address);\n clearSessionId(address);\n logger.debug('[SessionBootstrapService] All session data cleared');\n}\n\n// ============================================\n// VALIDATION\n// ============================================\n\n/**\n * Validate session keys are usable.\n */\nexport function validateSessionKeys(keys: StoredSessionKeys): boolean {\n // Check key lengths\n if (keys.ed25519PrivateKey.length !== 64) {\n logger.warn('[SessionBootstrapService] Invalid private key length');\n return false;\n }\n\n if (keys.ed25519PublicKey.length !== 32) {\n logger.warn('[SessionBootstrapService] Invalid public key length');\n return false;\n }\n\n return true;\n}\n"]}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Turnkey Bootstrap Service
3
+ *
4
+ * Handles Turnkey authentication and wallet provisioning.
5
+ * Extracted from TurnkeyProvider to enable:
6
+ * - Testable pure functions
7
+ * - Clear separation from React lifecycle
8
+ * - Reusable bootstrap logic
9
+ */
10
+ import type { TurnkeySessionData } from './types';
11
+ export declare const TURNKEY_WALLET_NAME = "Nord Turnkey Wallet";
12
+ export declare const SOLANA_ADDRESS_FORMAT = "ADDRESS_FORMAT_SOLANA";
13
+ /**
14
+ * Normalize EVM address to lowercase for consistent comparison.
15
+ */
16
+ export declare function normalizeAddress(address?: string | null): string | null;
17
+ /**
18
+ * Check if error indicates user rejected the action.
19
+ */
20
+ export declare function isUserRejectedError(error: unknown): boolean;
21
+ /**
22
+ * Check if the stored session belongs to a different user.
23
+ * Returns true if we need to clear the session for the new user.
24
+ */
25
+ export declare function isSessionForDifferentUser(targetAddress: string): boolean;
26
+ /**
27
+ * Check if we have a valid stored session for the target address.
28
+ */
29
+ export declare function hasStoredSession(targetAddress: string): boolean;
30
+ /**
31
+ * Get stored session data for the target address.
32
+ */
33
+ export declare function getStoredSession(targetAddress: string): TurnkeySessionData | null;
34
+ /**
35
+ * Store session data after successful login.
36
+ */
37
+ export declare function storeSession(targetAddress: string, sessionKey: string, options?: {
38
+ evmAddress?: string | null;
39
+ solanaAccount?: TurnkeySessionData['solanaAccount'];
40
+ session?: unknown;
41
+ }): void;
42
+ /**
43
+ * Update the Solana account for an existing session.
44
+ */
45
+ export declare function updateSessionSolanaAccount(targetAddress: string, solanaAccount: NonNullable<TurnkeySessionData['solanaAccount']>): void;
46
+ /**
47
+ * Clear session for logout or user switch.
48
+ */
49
+ export declare function clearSession(targetAddress?: string | null): void;
50
+ /**
51
+ * Find an existing Solana wallet in the list of Turnkey wallets.
52
+ */
53
+ export declare function findExistingSolanaWallet(wallets: any[]): any | null;
54
+ /**
55
+ * Extract Solana account from a wallet.
56
+ */
57
+ export declare function extractSolanaAccount(wallet: any): any | null;
58
+ /**
59
+ * Check if stored session has Solana account cached.
60
+ */
61
+ export declare function hasCachedSolanaAccount(targetAddress: string): boolean;
62
+ /**
63
+ * Get cached Solana account from stored session.
64
+ */
65
+ export declare function getCachedSolanaAccount(targetAddress: string): TurnkeySessionData['solanaAccount'] | null;
66
+ /**
67
+ * Determine next action for Turnkey bootstrap.
68
+ *
69
+ * This is a pure function that determines what should happen next
70
+ * without actually performing the action.
71
+ */
72
+ export declare function determineBootstrapAction(params: {
73
+ targetAddress: string | null;
74
+ walletNetwork: 'solana' | 'evm' | null;
75
+ hasEvmWallet: boolean;
76
+ hasTurnkeyConfig: boolean;
77
+ }): 'skip' | 'reset' | 'hydrate' | 'login';
78
+ /**
79
+ * Determine next action for Solana wallet provisioning.
80
+ */
81
+ export declare function determineSolanaProvisionAction(params: {
82
+ targetAddress: string;
83
+ existingWallets: any[];
84
+ }): 'use_cached' | 'use_existing' | 'create';
85
+ /**
86
+ * Categorize a Turnkey error for appropriate handling.
87
+ */
88
+ export declare function categorizeTurnkeyError(error: unknown): {
89
+ type: 'user_rejected' | 'network' | 'session_expired' | 'unknown';
90
+ message: string;
91
+ recoverable: boolean;
92
+ };
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Turnkey Bootstrap Service
3
+ *
4
+ * Handles Turnkey authentication and wallet provisioning.
5
+ * Extracted from TurnkeyProvider to enable:
6
+ * - Testable pure functions
7
+ * - Clear separation from React lifecycle
8
+ * - Reusable bootstrap logic
9
+ */
10
+ import { logger } from '../../utils/logger';
11
+ import { StorageService } from '../storage';
12
+ // ============================================
13
+ // CONSTANTS
14
+ // ============================================
15
+ export var TURNKEY_WALLET_NAME = 'Nord Turnkey Wallet';
16
+ export var SOLANA_ADDRESS_FORMAT = 'ADDRESS_FORMAT_SOLANA';
17
+ // ============================================
18
+ // ADDRESS UTILITIES
19
+ // ============================================
20
+ /**
21
+ * Normalize EVM address to lowercase for consistent comparison.
22
+ */
23
+ export function normalizeAddress(address) {
24
+ if (!address)
25
+ return null;
26
+ return address.toLowerCase();
27
+ }
28
+ /**
29
+ * Check if error indicates user rejected the action.
30
+ */
31
+ export function isUserRejectedError(error) {
32
+ var _a, _b, _c, _d, _e, _f;
33
+ var errorObj = error;
34
+ var code = errorObj === null || errorObj === void 0 ? void 0 : errorObj.code;
35
+ var message = (_c = (_b = (_a = errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : '';
36
+ var name = (_f = (_e = (_d = errorObj === null || errorObj === void 0 ? void 0 : errorObj.name) === null || _d === void 0 ? void 0 : _d.toLowerCase) === null || _e === void 0 ? void 0 : _e.call(_d)) !== null && _f !== void 0 ? _f : '';
37
+ // Check for explicit user rejection codes first (most reliable)
38
+ if (code === 'USER_REJECTED' ||
39
+ code === 4001 ||
40
+ code === 'USER_CANCELED' ||
41
+ code === 'USER_CANCELLED') {
42
+ return true;
43
+ }
44
+ // Check for explicit user rejection in error name
45
+ if (name.includes('user_rejected') ||
46
+ name.includes('user_canceled') ||
47
+ name.includes('user_cancelled')) {
48
+ return true;
49
+ }
50
+ // Check message for explicit "user rejected" patterns
51
+ if (message.includes('user rejected') || message.includes('user rejected the request')) {
52
+ return true;
53
+ }
54
+ // "wallet auth was cancelled" needs BOTH message AND code to be safe
55
+ var cancelledMessage = message.includes('wallet auth was cancelled') ||
56
+ message.includes('wallet authorization was cancelled');
57
+ if (cancelledMessage) {
58
+ if (code === 4001 ||
59
+ code === 'USER_REJECTED' ||
60
+ code === 'USER_CANCELED' ||
61
+ code === 'USER_CANCELLED') {
62
+ return true;
63
+ }
64
+ return false;
65
+ }
66
+ return false;
67
+ }
68
+ // ============================================
69
+ // SESSION MANAGEMENT
70
+ // ============================================
71
+ /**
72
+ * Check if the stored session belongs to a different user.
73
+ * Returns true if we need to clear the session for the new user.
74
+ */
75
+ export function isSessionForDifferentUser(targetAddress) {
76
+ var storedClientAddress = StorageService.readTurnkeyClientAddress();
77
+ if (!storedClientAddress)
78
+ return false;
79
+ return storedClientAddress.toLowerCase() !== targetAddress.toLowerCase();
80
+ }
81
+ /**
82
+ * Check if we have a valid stored session for the target address.
83
+ */
84
+ export function hasStoredSession(targetAddress) {
85
+ var session = StorageService.readTurnkeySession(targetAddress);
86
+ return session !== null && !!session.sessionKey;
87
+ }
88
+ /**
89
+ * Get stored session data for the target address.
90
+ */
91
+ export function getStoredSession(targetAddress) {
92
+ var storedSession = StorageService.readTurnkeySession(targetAddress);
93
+ if (!(storedSession === null || storedSession === void 0 ? void 0 : storedSession.sessionKey))
94
+ return null;
95
+ return {
96
+ sessionKey: storedSession.sessionKey,
97
+ evmAddress: storedSession.evmAddress,
98
+ solanaAccount: storedSession.solanaAccount,
99
+ session: storedSession.session,
100
+ };
101
+ }
102
+ /**
103
+ * Store session data after successful login.
104
+ */
105
+ export function storeSession(targetAddress, sessionKey, options) {
106
+ var _a, _b;
107
+ StorageService.writeTurnkeySession({
108
+ sessionKey: sessionKey,
109
+ evmAddress: (_a = options === null || options === void 0 ? void 0 : options.evmAddress) !== null && _a !== void 0 ? _a : targetAddress,
110
+ solanaAccount: (_b = options === null || options === void 0 ? void 0 : options.solanaAccount) !== null && _b !== void 0 ? _b : null,
111
+ session: options === null || options === void 0 ? void 0 : options.session,
112
+ });
113
+ StorageService.writeTurnkeyClientAddress(targetAddress);
114
+ }
115
+ /**
116
+ * Update the Solana account for an existing session.
117
+ */
118
+ export function updateSessionSolanaAccount(targetAddress, solanaAccount) {
119
+ StorageService.updateTurnkeySolanaAccount(targetAddress, solanaAccount);
120
+ }
121
+ /**
122
+ * Clear session for logout or user switch.
123
+ */
124
+ export function clearSession(targetAddress) {
125
+ StorageService.clearTurnkeySession(targetAddress);
126
+ logger.debug('[TurnkeyBootstrapService] Session cleared');
127
+ }
128
+ // ============================================
129
+ // WALLET HELPERS
130
+ // ============================================
131
+ /**
132
+ * Find an existing Solana wallet in the list of Turnkey wallets.
133
+ */
134
+ export function findExistingSolanaWallet(wallets) {
135
+ var _a;
136
+ return ((_a = wallets.find(function (w) {
137
+ var _a;
138
+ return w.walletName === TURNKEY_WALLET_NAME &&
139
+ ((_a = w.accounts) === null || _a === void 0 ? void 0 : _a.some(function (a) { return a.addressFormat === SOLANA_ADDRESS_FORMAT; }));
140
+ })) !== null && _a !== void 0 ? _a : null);
141
+ }
142
+ /**
143
+ * Extract Solana account from a wallet.
144
+ */
145
+ export function extractSolanaAccount(wallet) {
146
+ var _a;
147
+ if (!(wallet === null || wallet === void 0 ? void 0 : wallet.accounts))
148
+ return null;
149
+ return (_a = wallet.accounts.find(function (a) { return a.addressFormat === SOLANA_ADDRESS_FORMAT; })) !== null && _a !== void 0 ? _a : null;
150
+ }
151
+ /**
152
+ * Check if stored session has Solana account cached.
153
+ */
154
+ export function hasCachedSolanaAccount(targetAddress) {
155
+ var _a, _b;
156
+ var session = StorageService.readTurnkeySession(targetAddress);
157
+ return !!((_b = (_a = session === null || session === void 0 ? void 0 : session.solanaAccount) === null || _a === void 0 ? void 0 : _a.account) === null || _b === void 0 ? void 0 : _b.address);
158
+ }
159
+ /**
160
+ * Get cached Solana account from stored session.
161
+ */
162
+ export function getCachedSolanaAccount(targetAddress) {
163
+ var _a;
164
+ var session = StorageService.readTurnkeySession(targetAddress);
165
+ return (_a = session === null || session === void 0 ? void 0 : session.solanaAccount) !== null && _a !== void 0 ? _a : null;
166
+ }
167
+ // ============================================
168
+ // BOOTSTRAP ORCHESTRATION
169
+ // ============================================
170
+ /**
171
+ * Determine next action for Turnkey bootstrap.
172
+ *
173
+ * This is a pure function that determines what should happen next
174
+ * without actually performing the action.
175
+ */
176
+ export function determineBootstrapAction(params) {
177
+ var targetAddress = params.targetAddress, walletNetwork = params.walletNetwork, hasEvmWallet = params.hasEvmWallet, hasTurnkeyConfig = params.hasTurnkeyConfig;
178
+ // Pre-flight checks
179
+ if (!hasTurnkeyConfig || walletNetwork !== 'evm' || !hasEvmWallet || !targetAddress) {
180
+ return 'skip';
181
+ }
182
+ // Check if user switched accounts
183
+ if (isSessionForDifferentUser(targetAddress)) {
184
+ return 'reset';
185
+ }
186
+ // Check if we have a stored session
187
+ if (hasStoredSession(targetAddress)) {
188
+ return 'hydrate';
189
+ }
190
+ // Need fresh login
191
+ return 'login';
192
+ }
193
+ /**
194
+ * Determine next action for Solana wallet provisioning.
195
+ */
196
+ export function determineSolanaProvisionAction(params) {
197
+ var targetAddress = params.targetAddress, existingWallets = params.existingWallets;
198
+ // Check cache first
199
+ if (hasCachedSolanaAccount(targetAddress)) {
200
+ return 'use_cached';
201
+ }
202
+ // Check existing wallets
203
+ var existing = findExistingSolanaWallet(existingWallets);
204
+ if (existing && extractSolanaAccount(existing)) {
205
+ return 'use_existing';
206
+ }
207
+ // Need to create
208
+ return 'create';
209
+ }
210
+ // ============================================
211
+ // ERROR HANDLING
212
+ // ============================================
213
+ /**
214
+ * Categorize a Turnkey error for appropriate handling.
215
+ */
216
+ export function categorizeTurnkeyError(error) {
217
+ var _a;
218
+ if (isUserRejectedError(error)) {
219
+ return {
220
+ type: 'user_rejected',
221
+ message: 'User rejected the request',
222
+ recoverable: true,
223
+ };
224
+ }
225
+ var errorObj = error;
226
+ var message = (_a = errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) !== null && _a !== void 0 ? _a : String(error);
227
+ // Session expired
228
+ if (message.includes('session expired') ||
229
+ message.includes('invalid session') ||
230
+ message.includes('no active session')) {
231
+ return {
232
+ type: 'session_expired',
233
+ message: 'Session expired, please reconnect',
234
+ recoverable: true,
235
+ };
236
+ }
237
+ // Network errors
238
+ if (message.includes('network') ||
239
+ message.includes('fetch') ||
240
+ message.includes('timeout')) {
241
+ return {
242
+ type: 'network',
243
+ message: 'Network error, please try again',
244
+ recoverable: true,
245
+ };
246
+ }
247
+ return {
248
+ type: 'unknown',
249
+ message: message || 'An unknown error occurred',
250
+ recoverable: false,
251
+ };
252
+ }
253
+ //# sourceMappingURL=TurnkeyBootstrapService.js.map