@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 @@
1
+ {"version":3,"file":"TurnkeyProvider.js","sourceRoot":"","sources":["../../../src/turnkey/TurnkeyProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n DEFAULT_SESSION_EXPIRATION_IN_SECONDS,\n StamperType,\n TurnkeyClient,\n type CreateWalletParams,\n type SignMessageParams,\n type SignTransactionParams,\n type Wallet\n} from \"@turnkey/core\";\nimport type { v1SignRawPayloadResult } from \"@turnkey/sdk-types\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { TURNKEY_CONFIG } from \"../config/turnkey\";\nimport { useN1WalletContext } from \"../hooks\";\nimport { useNetwork, useNetworkActions } from \"../providers/N1WalletProvider/NetworkProvider\";\nimport { logger } from \"../utils/logger\";\nimport { EVENTS, createTurnkeyEvent } from \"../utils/events\";\nimport { createTurnkeyError } from \"../utils/errors\";\nimport { createTurnkeySolanaWallet } from \"./createTurnkeyWallet\";\nimport { buildWalletProvider } from \"./createWalletProvider\";\nimport {\n TurnkeyAuthState,\n type DynamicEvmWallet,\n type TurnkeyBootstrapStatus,\n type TurnkeyContextValue,\n type TurnkeySession,\n} from \"./types\";\nimport { normalizeEVMAddressLowercase } from \"../utils/address\";\nimport {\n normalizeAddress as normalizeAddressService,\n isUserRejectedError,\n isSessionForDifferentUser,\n hasStoredSession,\n determineBootstrapAction,\n determineSolanaProvisionAction,\n getStoredSession,\n storeSession,\n clearSession,\n findExistingSolanaWallet,\n extractSolanaAccount,\n updateSessionSolanaAccount,\n hasCachedSolanaAccount,\n getCachedSolanaAccount,\n TURNKEY_WALLET_NAME as SERVICE_TURNKEY_WALLET_NAME,\n SOLANA_ADDRESS_FORMAT as SERVICE_SOLANA_ADDRESS_FORMAT,\n} from \"../services/bootstrap\";\nimport { StorageService } from \"../services/storage\";\nimport { useWalletStore, getWalletActions } from \"../store\";\nimport type { TurnkeyStatus as TurnkeyStatusType } from \"../store/slices\";\n\n// Re-export constants for backwards compatibility\nexport const TURNKEY_WALLET_NAME = SERVICE_TURNKEY_WALLET_NAME;\nconst SOLANA_ADDRESS_FORMAT = SERVICE_SOLANA_ADDRESS_FORMAT;\n\n// Use service for address normalization\nconst normalizeAddress = normalizeAddressService;\n\ninterface TurnkeyProviderProps {\n children: ReactNode;\n}\n\nconst TurnkeyContext = createContext<TurnkeyContextValue | null>(null);\n\n/**\n * Provider component that manages Turnkey authentication and wallet operations.\n * \n * Simplified Flow:\n * 1. Monitor EVM address.\n * 2. If EVM address changes or is missing -> Reset state.\n * 3. If EVM address is present -> Run `prepareTurnkeyWallet`.\n * a. Check if we need to logout (previous session != current address).\n * b. Hydrate/Login.\n * c. Ensure Solana account.\n */\nexport function TurnkeyProvider({ children }: TurnkeyProviderProps) {\n // -- State --\n const turnkeyConfig = TURNKEY_CONFIG ?? undefined;\n const [turnkeyAuthState, setTurnkeyAuthState] = useState<TurnkeyAuthState>(\n TurnkeyAuthState.Unauthenticated\n );\n const [turnkeyWallets, setTurnkeyWallets] = useState<Wallet[]>([]);\n const [turnkeySession, setTurnkeySession] = useState<TurnkeySession | null>(null);\n const [isHydratingSession, setIsHydratingSession] = useState(false);\n const [turnkeyAddress, setTurnkeyAddress] = useState<string | null>(null);\n\n // -- Bootstrap slice state (single source of truth for status/error) --\n const turnkeyStatus = useWalletStore((state) => state.bootstrap.turnkeyStatus);\n const turnkeyError = useWalletStore((state) => state.bootstrap.turnkeyError);\n const bootstrapActions = getWalletActions().bootstrap;\n\n // Helper to update turnkey status in the store\n const setTurnkeyStatus = useCallback((status: TurnkeyStatusType) => {\n bootstrapActions.setTurnkeyStatus(status);\n }, [bootstrapActions]);\n\n const setTurnkeyError = useCallback((error: string | null) => {\n bootstrapActions.setTurnkeyError(error);\n }, [bootstrapActions]);\n\n // Initialize status based on config\n useEffect(() => {\n if (!turnkeyConfig) {\n setTurnkeyStatus('ready');\n }\n }, [turnkeyConfig, setTurnkeyStatus]);\n\n // -- Refs --\n const turnkeyClientRef = useRef<TurnkeyClient | null>(null);\n const turnkeyClientInitPromiseRef = useRef<Promise<TurnkeyClient> | null>(null);\n const bootstrapInFlightRef = useRef<Promise<void> | null>(null);\n const authenticatedWalletAddressRef = useRef<string | null>(null);\n const solanaAccountRef = useRef<{\n wallet: Wallet;\n account: Wallet[\"accounts\"][number];\n } | null>(null);\n const lastTurnkeyWalletsRef = useRef<Wallet[]>([]);\n const lastTurnkeyRefreshAtRef = useRef<number>(0);\n \n // -- Context --\n const { walletNetwork } = useN1WalletContext();\n const { evmAddress, evmWallet } = useNetwork();\n const { setSolanaWallet, setSolanaAddress } = useNetworkActions();\n\n // -- Helpers --\n\n const resetTurnkeyState = useCallback((options?: { keepInFlight?: boolean }) => {\n logger.debug(\"[Turnkey] Resetting state\");\n bootstrapActions.setTurnkeyStatus(turnkeyConfig ? \"idle\" : \"ready\");\n bootstrapActions.setTurnkeyError(null);\n setTurnkeyAddress(null);\n setTurnkeySession(null);\n setTurnkeyAuthState(TurnkeyAuthState.Unauthenticated);\n setTurnkeyWallets([]);\n\n solanaAccountRef.current = null;\n authenticatedWalletAddressRef.current = null;\n\n if (!options?.keepInFlight) {\n bootstrapInFlightRef.current = null;\n }\n\n // Clear N1 Context state\n setSolanaWallet(null);\n setSolanaAddress(\"\");\n }, [setSolanaAddress, setSolanaWallet, turnkeyConfig, bootstrapActions]);\n\n const getTurnkeyClient = useCallback(async (): Promise<TurnkeyClient> => {\n if (!turnkeyConfig) throw new Error(\"Turnkey config missing\");\n\n if (turnkeyClientRef.current) return turnkeyClientRef.current;\n\n if (!turnkeyClientInitPromiseRef.current) {\n turnkeyClientInitPromiseRef.current = (async () => {\n const client = new TurnkeyClient({\n organizationId: turnkeyConfig.organizationId,\n authProxyConfigId: turnkeyConfig.authProxyConfigId,\n authProxyUrl: turnkeyConfig.authProxyUrl,\n apiBaseUrl: turnkeyConfig.apiBaseUrl,\n defaultStamperType: undefined, // We set this explicitly when needed\n walletConfig: {\n features: { auth: true, connecting: true },\n chains: { ethereum: { native: true }, solana: { native: true } },\n },\n });\n await client.init();\n turnkeyClientRef.current = client;\n return client;\n })();\n }\n return turnkeyClientInitPromiseRef.current;\n }, [turnkeyConfig]);\n\n const refreshTurnkeyWallets = useCallback(async (options?: { force?: boolean }) => {\n const now = Date.now();\n // Cache for 5 seconds\n if (!options?.force && now - lastTurnkeyRefreshAtRef.current < 5000 && lastTurnkeyWalletsRef.current.length > 0) {\n return lastTurnkeyWalletsRef.current;\n }\n\n try {\n const client = await getTurnkeyClient();\n const wallets = await client.fetchWallets();\n if (Array.isArray(wallets)) {\n setTurnkeyWallets(wallets);\n lastTurnkeyWalletsRef.current = wallets;\n lastTurnkeyRefreshAtRef.current = now;\n return wallets;\n }\n return [];\n } catch (error) {\n logger.logError(createTurnkeyError('WALLET_FETCH_FAILED', 'Failed to fetch Turnkey wallets', {\n cause: error instanceof Error ? error : undefined,\n }));\n return []\n }\n }, [getTurnkeyClient]);\n\n const signTurnkeyMessage = useCallback(\n async (params: SignMessageParams): Promise<v1SignRawPayloadResult> => {\n const client = await getTurnkeyClient();\n return await client.signMessage(params);\n },\n [getTurnkeyClient]\n );\n\n const signTurnkeyTransaction = useCallback(\n async (params: SignTransactionParams): Promise<string> => {\n const client = await getTurnkeyClient();\n return await client.signTransaction(params);\n },\n [getTurnkeyClient]\n );\n\n // -- Main Logic --\n\n /**\n * 1. Perform Logout / Cleanup if needed.\n * Returns true if we are clean and ready to proceed with `targetAddress`.\n */\n const ensureCleanSessionForAddress = async (targetAddress: string) => {\n const isDifferentUser = isSessionForDifferentUser(targetAddress);\n\n if (isDifferentUser) {\n logger.debug(\"[Turnkey] User switch detected, cleaning up\", { target: targetAddress });\n try {\n const client = await getTurnkeyClient();\n await client.logout?.();\n } catch (e) {\n // Ignore \"no active session\" errors\n }\n // Pass no address to unconditionally clear the OLD user's session\n // (passing targetAddress would fail because the stored session belongs to the previous user)\n clearSession();\n resetTurnkeyState({ keepInFlight: true });\n StorageService.writeTurnkeyClientAddress(targetAddress);\n } else if (!StorageService.readTurnkeyClientAddress()) {\n StorageService.writeTurnkeyClientAddress(targetAddress);\n }\n };\n\n /**\n * 2. Hydrate Session from Storage\n */\n const hydrateSession = async (targetAddress: string): Promise<TurnkeySession | null> => {\n const stored = getStoredSession(targetAddress);\n if (!stored?.sessionKey) return null;\n\n try {\n const client = await getTurnkeyClient();\n // Verify if session is still valid? Turnkey client usually handles expiration.\n await client.setActiveSession({ sessionKey: stored.sessionKey });\n\n // Restore the full session object including all persisted properties\n const session: TurnkeySession = {\n sessionKey: stored.sessionKey,\n ...(stored.session as object),\n } as TurnkeySession;\n\n // We assume stored session is valid if we have it\n setTurnkeySession(session);\n setTurnkeyAuthState(TurnkeyAuthState.Authenticated);\n authenticatedWalletAddressRef.current = targetAddress;\n return session;\n } catch (error) {\n logger.logError(createTurnkeyError('SESSION_INVALID', 'Failed to hydrate Turnkey session', {\n cause: error instanceof Error ? error : undefined,\n context: { targetAddress },\n }));\n clearSession(targetAddress); // Clear invalid session\n return null;\n }\n };\n\n /**\n * 3. Login (if not hydrated)\n */\n const performLogin = async (wallet: DynamicEvmWallet, targetAddress: string): Promise<TurnkeySession> => {\n setTurnkeyAuthState(TurnkeyAuthState.Authenticating);\n logger.event(createTurnkeyEvent(EVENTS.TURNKEY.AUTH_START, {\n evmAddress: targetAddress,\n }));\n const client = await getTurnkeyClient();\n\n // Use Wallet Stamper\n const previousStamper = client.httpClient.defaultStamperType;\n client.httpClient.defaultStamperType = StamperType.Wallet;\n\n try {\n logger.debug(\"[Turnkey] [performLogin] Building wallet provider\", { targetAddress });\n const walletProvider = await buildWalletProvider(wallet);\n const expirationSeconds = turnkeyConfig?.sessionExpirationSeconds ?? DEFAULT_SESSION_EXPIRATION_IN_SECONDS;\n \n logger.debug(\"[Turnkey] [performLogin] Calling loginOrSignupWithWallet\", { expirationSeconds });\n await client.loginOrSignupWithWallet({\n walletProvider,\n expirationSeconds,\n });\n logger.debug(\"[Turnkey] [performLogin] loginOrSignupWithWallet completed successfully\");\n\n const sessionKey = await client.getActiveSessionKey();\n if (!sessionKey) {\n logger.logError(createTurnkeyError('SESSION_INVALID', 'No session key after login'));\n throw new Error(\"No session key after login\");\n }\n logger.debug(\"[Turnkey] [performLogin] Got session key\", { sessionKey: sessionKey.substring(0, 10) + \"...\" });\n\n const sessionResponse = await client.getSession({ sessionKey });\n \n const session: TurnkeySession = {\n ...sessionResponse,\n sessionKey,\n } as TurnkeySession;\n\n storeSession(targetAddress, sessionKey, {\n evmAddress: targetAddress,\n session,\n });\n\n setTurnkeySession(session);\n setTurnkeyAuthState(TurnkeyAuthState.Authenticated);\n authenticatedWalletAddressRef.current = targetAddress;\n\n logger.event(createTurnkeyEvent(EVENTS.TURNKEY.AUTH_SUCCESS, {\n evmAddress: targetAddress,\n }));\n return session;\n } catch (error) {\n // Log the error with context about where it occurred\n logger.event(createTurnkeyEvent(EVENTS.TURNKEY.AUTH_FAILED, {\n evmAddress: targetAddress,\n errorCode: (error as { code?: string | number })?.code,\n }));\n logger.logError(createTurnkeyError('AUTH_FAILED', error instanceof Error ? error.message : 'Login failed', {\n cause: error instanceof Error ? error : undefined,\n context: {\n errorCode: (error as { code?: string | number })?.code,\n errorName: (error as { name?: string })?.name,\n targetAddress,\n },\n }));\n throw error; // Re-throw to be handled by bootstrap error handler\n } finally {\n client.httpClient.defaultStamperType = previousStamper;\n }\n };\n\n /**\n * 4. Ensure Solana Account\n */\n const ensureSolanaWallet = async (targetAddress: string) => {\n // Use cached if available\n if (solanaAccountRef.current) return solanaAccountRef.current;\n\n // Check storage first using service helper (optimization to avoid fetch)\n const cachedSolana = getCachedSolanaAccount(targetAddress);\n if (cachedSolana?.account?.address) {\n const syntheticAccount = {\n ...cachedSolana.account,\n addressFormat: SOLANA_ADDRESS_FORMAT,\n walletId: cachedSolana.walletId,\n } as Wallet[\"accounts\"][number];\n\n const syntheticWallet: Wallet = {\n walletId: cachedSolana.walletId,\n walletName: TURNKEY_WALLET_NAME,\n accounts: [syntheticAccount],\n } as Wallet;\n\n const wallet = createTurnkeySolanaWallet({\n walletAccount: syntheticAccount,\n signMessage: signTurnkeyMessage,\n signTransaction: signTurnkeyTransaction,\n });\n\n solanaAccountRef.current = { wallet: syntheticWallet, account: syntheticAccount };\n setSolanaWallet(wallet);\n setSolanaAddress(syntheticAccount.address);\n setTurnkeyAddress(syntheticAccount.address);\n return;\n }\n\n // Fetch from Turnkey\n let wallets = await refreshTurnkeyWallets({ force: true });\n \n // Find existing\n let existing = wallets.find(w => \n w.walletName === TURNKEY_WALLET_NAME && \n w.accounts?.some(a => a.addressFormat === SOLANA_ADDRESS_FORMAT)\n );\n\n // Create if needed\n if (!existing) {\n const client = await getTurnkeyClient();\n // We need to make sure we are using the right stamper for wallet creation\n const previousStamper = client.httpClient.defaultStamperType;\n // Wallet creation requires active session, NOT wallet stamper\n // Session stamper is default unless overridden in client init, but we set it to undefined in getTurnkeyClient\n // So we need to set it to Session if we have a session key\n \n // Actually, createWallet uses the active session.\n // ensureSolanaWallet is called after hydrate/login so we should have a session.\n \n try {\n const walletId = await client.createWallet({\n walletName: TURNKEY_WALLET_NAME,\n accounts: [SOLANA_ADDRESS_FORMAT as any],\n });\n logger.event(createTurnkeyEvent(EVENTS.TURNKEY.WALLET_CREATE, {\n walletId,\n evmAddress: targetAddress,\n }));\n wallets = await refreshTurnkeyWallets({ force: true });\n existing = wallets.find(w => w.walletId === walletId);\n } catch (error) {\n logger.logError(createTurnkeyError('WALLET_CREATE_FAILED', 'Failed to create Turnkey wallet', {\n cause: error instanceof Error ? error : undefined,\n context: { targetAddress },\n }));\n throw error;\n }\n }\n\n if (!existing) throw new Error(\"Failed to find or create Solana wallet\");\n\n const account = existing.accounts?.find(a => a.addressFormat === SOLANA_ADDRESS_FORMAT);\n if (!account) throw new Error(\"Wallet created but missing Solana account\");\n\n // Update Storage using service helper\n updateSessionSolanaAccount(targetAddress, {\n walletId: existing.walletId,\n account: { address: account.address, addressFormat: account.addressFormat }\n });\n\n const turnkeyWallet = createTurnkeySolanaWallet({\n walletAccount: account,\n signMessage: signTurnkeyMessage,\n signTransaction: signTurnkeyTransaction,\n });\n\n solanaAccountRef.current = { wallet: existing, account };\n setSolanaWallet(turnkeyWallet);\n setSolanaAddress(account.address);\n setTurnkeyAddress(account.address);\n };\n\n\n // -- Bootstrap Effect --\n\n useEffect(() => {\n const bootstrap = async () => {\n const targetAddress = normalizeAddress(evmAddress);\n\n // DEBUG: Log all inputs to bootstrap effect\n logger.debug(\"[Turnkey] Bootstrap effect running\", {\n hasConfig: !!turnkeyConfig,\n walletNetwork,\n hasEvmWallet: !!evmWallet,\n evmWalletAddress: evmWallet?.address,\n targetAddress,\n turnkeyStatus,\n hasBootstrapInFlight: !!bootstrapInFlightRef.current,\n authenticatedAddress: authenticatedWalletAddressRef.current,\n hasSolanaAccount: !!solanaAccountRef.current,\n });\n\n // 1. Pre-flight checks\n if (!turnkeyConfig || walletNetwork !== 'evm' || !evmWallet || !targetAddress) {\n // We are not in a state to use Turnkey\n // Reset if:\n // 1. Not in a transient state (authenticating/creating) - unless bootstrap in flight\n // 2. OR if evmWallet was disconnected (null) and we were previously ready\n const shouldReset =\n !bootstrapInFlightRef.current &&\n (\n (turnkeyStatus !== 'idle' && turnkeyStatus !== 'ready' && turnkeyStatus !== 'error') ||\n (turnkeyStatus === 'ready' && !evmWallet)\n );\n\n logger.debug(\"[Turnkey] Pre-flight failed\", {\n reason: !turnkeyConfig ? 'no config' : walletNetwork !== 'evm' ? `walletNetwork=${walletNetwork}` : !evmWallet ? 'no evmWallet' : 'no targetAddress',\n shouldReset,\n turnkeyStatus,\n });\n\n if (shouldReset) {\n resetTurnkeyState();\n }\n return;\n }\n\n // If we are already ready and address hasn't changed, do nothing\n if (turnkeyStatus === 'ready' && authenticatedWalletAddressRef.current === targetAddress && solanaAccountRef.current) {\n logger.debug(\"[Turnkey] Already ready, skipping\");\n return;\n }\n\n // Prevent concurrent runs\n if (bootstrapInFlightRef.current) {\n logger.debug(\"[Turnkey] Bootstrap in flight, skipping\");\n return;\n }\n\n // Only start bootstrap if status is 'idle' (initial or after reset)\n // Skip if status is 'authenticating', 'creating', or 'error' - these are handled elsewhere\n if (turnkeyStatus !== 'idle') {\n logger.debug(\"[Turnkey] Status not idle, skipping\", { turnkeyStatus });\n return;\n }\n\n logger.debug(\"[Turnkey] Starting bootstrap - setting authenticating\");\n setTurnkeyStatus(\"authenticating\");\n setTurnkeyError(null);\n\n bootstrapInFlightRef.current = (async () => {\n try {\n logger.debug(\"[Turnkey] Starting bootstrap\", { targetAddress });\n\n // 2. Ensure Clean Session\n await ensureCleanSessionForAddress(targetAddress);\n\n // 3. Authenticate (Hydrate or Login)\n // If we already hydrated or logged in successfully during this session, skip re-auth\n let session: TurnkeySession | null = null;\n\n if (hasStoredSession(targetAddress)) {\n setIsHydratingSession(true);\n session = await hydrateSession(targetAddress);\n setIsHydratingSession(false);\n }\n\n if (!session) {\n logger.debug(\"[Turnkey] No session, logging in...\");\n session = await performLogin(evmWallet, targetAddress);\n }\n\n if (!session) throw new Error(\"Failed to establish session\");\n\n // 4. Provision Solana Wallet\n setTurnkeyStatus(\"creating\");\n await ensureSolanaWallet(targetAddress);\n\n setTurnkeyStatus(\"ready\");\n logger.debug(\"[Turnkey] Bootstrap complete\");\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Turnkey bootstrap failed';\n const isUserRejection = isUserRejectedError(error);\n\n logger.logError(createTurnkeyError('BOOTSTRAP_FAILED', errorMessage, {\n cause: error instanceof Error ? error : undefined,\n context: {\n targetAddress,\n errorCode: (error as { code?: string | number })?.code,\n errorName: (error as { name?: string })?.name,\n isUserRejection,\n },\n }));\n\n // Set error state so UI can show retry/disconnect options\n setTurnkeyStatus('error');\n setTurnkeyError(\n isUserRejection\n ? 'Signature request was cancelled. Please try again.'\n : errorMessage\n );\n } finally {\n bootstrapInFlightRef.current = null;\n setIsHydratingSession(false);\n }\n })();\n \n await bootstrapInFlightRef.current;\n };\n\n bootstrap();\n }, [evmAddress, walletNetwork, evmWallet, turnkeyConfig, turnkeyStatus]); // Added turnkeyStatus to trigger bootstrap on retry\n\n\n\n // -- Exposed API --\n\n const waitForSessionHydration = useCallback(async () => {\n if (bootstrapInFlightRef.current) await bootstrapInFlightRef.current;\n }, []);\n\n const createTurnkeyWallet = useCallback(async (params: CreateWalletParams) => {\n // This is also handled by ensureSolanaWallet, but if we need specific params:\n const client = await getTurnkeyClient();\n return await client.createWallet(params);\n }, [getTurnkeyClient]);\n\n const retryTurnkeyBootstrap = useCallback(() => {\n resetTurnkeyState(); // This will trigger the effect again as dependencies change or we reset\n }, [resetTurnkeyState]);\n\n\n const turnkeyContextValue = useMemo<TurnkeyContextValue>(\n () => ({\n turnkeyAuthState,\n turnkeySession,\n turnkeyWallets,\n isHydratingSession,\n turnkeyStatus,\n turnkeyError,\n turnkeyAddress,\n createTurnkeyWallet,\n refreshTurnkeyWallets,\n signTurnkeyMessage,\n waitForSessionHydration,\n loginWithTurnkeyWallet: async () => { /* handled by effect */ },\n prepareTurnkeyWallet: async () => { /* handled by effect */ },\n retryTurnkeyBootstrap,\n }),\n [\n turnkeyAuthState,\n turnkeySession,\n turnkeyWallets,\n isHydratingSession,\n turnkeyStatus,\n turnkeyError,\n turnkeyAddress,\n createTurnkeyWallet,\n refreshTurnkeyWallets,\n signTurnkeyMessage,\n waitForSessionHydration,\n retryTurnkeyBootstrap,\n ]\n );\n\n if (!turnkeyConfig) return <>{children}</>;\n\n return (\n <TurnkeyContext.Provider value={turnkeyContextValue}>\n {children}\n </TurnkeyContext.Provider>\n );\n}\n\nexport const useTurnkey = (): TurnkeyContextValue => {\n const context = useContext(TurnkeyContext);\n if (!context) {\n throw new Error(\"useTurnkey must be used within a TurnkeyProvider\");\n }\n return context;\n};\n\nexport const useTurnkeyUnsafe = (): TurnkeyContextValue | null =>\n useContext(TurnkeyContext);\n"]}
@@ -0,0 +1,39 @@
1
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
+ import type { SignMessageParams, SignTransactionParams, WalletAccount } from '@turnkey/core';
3
+ interface SignMessageResult {
4
+ r?: string;
5
+ s?: string;
6
+ signature?: string;
7
+ }
8
+ export interface TurnkeySignerFactoryParams {
9
+ walletAccount: WalletAccount;
10
+ signMessage: (params: SignMessageParams) => Promise<SignMessageResult>;
11
+ signTransaction: (params: SignTransactionParams) => Promise<string>;
12
+ }
13
+ /**
14
+ * Creates a Solana wallet facade compatible with Dynamic's wallet interface.
15
+ * Uses Turnkey's signing APIs (message + transaction) to sign Solana payloads.
16
+ * Handles both signature formats (direct signature string or r/s components).
17
+ *
18
+ * Note: The signer returned by getSigner() must match the same type as Dynamic's
19
+ * widget signer (as set in LazyWalletProvider.tsx). Specifically:
20
+ * - signTransaction: (tx: Transaction | VersionedTransaction) => Promise<Transaction | VersionedTransaction>
21
+ * - signMessage: (message: Uint8Array) => Promise<{ signature: Uint8Array }>
22
+ */
23
+ export declare function createTurnkeySolanaWallet({ walletAccount, signMessage, signTransaction: signTurnkeyTransaction, }: TurnkeySignerFactoryParams): {
24
+ address: string;
25
+ chain: string;
26
+ type: string;
27
+ signMessage: (message: Uint8Array) => Promise<{
28
+ signature: Uint8Array;
29
+ signatureBase58?: string;
30
+ }>;
31
+ getSigner: () => Promise<{
32
+ signTransaction: (tx: Transaction | VersionedTransaction) => Promise<Transaction | VersionedTransaction>;
33
+ signMessage: (message: Uint8Array) => Promise<{
34
+ signature: Uint8Array;
35
+ signatureBase58?: string;
36
+ }>;
37
+ }>;
38
+ };
39
+ export {};
@@ -0,0 +1,319 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ 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);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { Transaction, VersionedTransaction, } from '@solana/web3.js';
38
+ import { Buffer } from 'buffer';
39
+ import bs58 from 'bs58';
40
+ import { logger } from '../utils/logger';
41
+ import { createTurnkeyError } from '../utils/errors';
42
+ var SOLANA_ADDRESS_FORMAT = 'ADDRESS_FORMAT_SOLANA';
43
+ var SOLANA_ENCODING = 'PAYLOAD_ENCODING_HEXADECIMAL';
44
+ var SOLANA_UTF8_ENCODING = 'PAYLOAD_ENCODING_TEXT_UTF8';
45
+ var SOLANA_HASH_FUNCTION = 'HASH_FUNCTION_NOT_APPLICABLE';
46
+ var formatAddressForLogs = function (address) { return "".concat(address.substring(0, 10), "..."); };
47
+ var SOLANA_TRANSACTION_TYPE = 'TRANSACTION_TYPE_SOLANA';
48
+ var bytesToHex = function (bytes) {
49
+ return Array.from(bytes)
50
+ .map(function (byte) { return byte.toString(16).padStart(2, '0'); })
51
+ .join('');
52
+ };
53
+ var encodeMessageForTurnkey = function (message, encoding) {
54
+ if (encoding === SOLANA_ENCODING) {
55
+ // Encode raw bytes to hex for Turnkey when utf8 is not appropriate
56
+ return bytesToHex(message);
57
+ }
58
+ return Buffer.from(message).toString('utf8');
59
+ };
60
+ var hexToBytes = function (hex) {
61
+ var normalized = hex.startsWith('0x') ? hex.slice(2) : hex;
62
+ var output = new Uint8Array(normalized.length / 2);
63
+ for (var i = 0; i < normalized.length; i += 2) {
64
+ output[i / 2] = parseInt(normalized.slice(i, i + 2), 16);
65
+ }
66
+ return output;
67
+ };
68
+ var decodeSignatureToBytes = function (signature) {
69
+ var normalized = signature.trim();
70
+ // Wallet adapters typically return base58 signatures for Solana; prefer that.
71
+ try {
72
+ var base58Bytes = bs58.decode(normalized);
73
+ if (base58Bytes.length === 64) {
74
+ logger.debug("[TurnkeyWallet] Decoded signature as base58");
75
+ return { bytes: base58Bytes, base58: normalized };
76
+ }
77
+ }
78
+ catch (_a) {
79
+ // Fall through to other decoders
80
+ }
81
+ // Some SDKs return base64 for message signatures.
82
+ try {
83
+ var base64Bytes = Uint8Array.from(Buffer.from(normalized, 'base64'));
84
+ if (base64Bytes.length === 64) {
85
+ logger.debug("[TurnkeyWallet] Decoded signature as base64");
86
+ var base58 = bs58.encode(base64Bytes);
87
+ return { bytes: base64Bytes, base58: base58 };
88
+ }
89
+ }
90
+ catch (_b) {
91
+ // Fall through
92
+ }
93
+ // Hex (with or without 0x) is our last resort.
94
+ var normalizedHex = normalized.startsWith('0x') ? normalized.slice(2) : normalized;
95
+ if (/^[0-9a-fA-F]+$/.test(normalizedHex) && normalizedHex.length % 2 === 0) {
96
+ var hexBytes = hexToBytes(normalized);
97
+ if (hexBytes.length > 0) {
98
+ logger.debug("[TurnkeyWallet] Decoded signature as hex");
99
+ var base58 = bs58.encode(hexBytes);
100
+ return { bytes: hexBytes, base58: base58 };
101
+ }
102
+ }
103
+ throw new Error("Unsupported signature encoding returned from Turnkey");
104
+ };
105
+ var serializeUnsignedTransaction = function (tx) {
106
+ if (tx instanceof VersionedTransaction) {
107
+ return bytesToHex(tx.serialize());
108
+ }
109
+ return bytesToHex(tx.serialize({
110
+ requireAllSignatures: false,
111
+ verifySignatures: false,
112
+ }));
113
+ };
114
+ var deserializeSignedTransaction = function (originalTx, signedBytes) {
115
+ var isDuckTypeVersioned = 'version' in originalTx && typeof originalTx.version !== 'undefined';
116
+ if (originalTx instanceof VersionedTransaction || isDuckTypeVersioned) {
117
+ return VersionedTransaction.deserialize(signedBytes);
118
+ }
119
+ return Transaction.from(signedBytes);
120
+ };
121
+ var resolveEncodingForAddressFormat = function (addressFormat) {
122
+ if (!addressFormat || addressFormat === SOLANA_ADDRESS_FORMAT) {
123
+ return {
124
+ encoding: SOLANA_ENCODING,
125
+ hashFunction: SOLANA_HASH_FUNCTION,
126
+ };
127
+ }
128
+ logger.warn("[TurnkeyWallet] Unknown address format for signer; defaulting to Solana settings", {
129
+ addressFormat: addressFormat,
130
+ });
131
+ return {
132
+ encoding: SOLANA_ENCODING,
133
+ hashFunction: SOLANA_HASH_FUNCTION,
134
+ };
135
+ };
136
+ var isUtf8RoundTripSafe = function (message) {
137
+ var utf8 = Buffer.from(message).toString('utf8');
138
+ return Buffer.from(utf8, 'utf8').equals(Buffer.from(message));
139
+ };
140
+ /**
141
+ * Creates a Solana wallet facade compatible with Dynamic's wallet interface.
142
+ * Uses Turnkey's signing APIs (message + transaction) to sign Solana payloads.
143
+ * Handles both signature formats (direct signature string or r/s components).
144
+ *
145
+ * Note: The signer returned by getSigner() must match the same type as Dynamic's
146
+ * widget signer (as set in LazyWalletProvider.tsx). Specifically:
147
+ * - signTransaction: (tx: Transaction | VersionedTransaction) => Promise<Transaction | VersionedTransaction>
148
+ * - signMessage: (message: Uint8Array) => Promise<{ signature: Uint8Array }>
149
+ */
150
+ export function createTurnkeySolanaWallet(_a) {
151
+ var _this = this;
152
+ var walletAccount = _a.walletAccount, signMessage = _a.signMessage, signTurnkeyTransaction = _a.signTransaction;
153
+ var signWithTurnkey = function (message) { return __awaiter(_this, void 0, void 0, function () {
154
+ var startTime, addressFormat, hashFunction, shouldUseUtf8, encoding, encodedMessage, signParams, signStartTime, result, signDuration, _a, signatureBytes_1, base58_1, r, s, _b, signatureBytes, base58, error_1;
155
+ var _c, _d, _e;
156
+ return __generator(this, function (_f) {
157
+ switch (_f.label) {
158
+ case 0:
159
+ startTime = Date.now();
160
+ addressFormat = ((_c = walletAccount.addressFormat) !== null && _c !== void 0 ? _c : SOLANA_ADDRESS_FORMAT);
161
+ hashFunction = resolveEncodingForAddressFormat(addressFormat).hashFunction;
162
+ shouldUseUtf8 = isUtf8RoundTripSafe(message);
163
+ encoding = shouldUseUtf8
164
+ ? SOLANA_UTF8_ENCODING
165
+ : SOLANA_ENCODING;
166
+ encodedMessage = encodeMessageForTurnkey(message, encoding);
167
+ logger.debug("[TurnkeyWallet] [signWithTurnkey] Starting", {
168
+ walletId: walletAccount.walletId,
169
+ address: formatAddressForLogs(walletAccount.address),
170
+ messageLength: message.length,
171
+ messageHexLength: bytesToHex(message).length,
172
+ addressFormat: addressFormat,
173
+ encoding: encoding,
174
+ });
175
+ _f.label = 1;
176
+ case 1:
177
+ _f.trys.push([1, 3, , 4]);
178
+ signParams = {
179
+ walletAccount: walletAccount,
180
+ message: encodedMessage,
181
+ encoding: encoding,
182
+ hashFunction: hashFunction,
183
+ };
184
+ logger.debug("[TurnkeyWallet] [signWithTurnkey] Calling signMessage", {
185
+ walletId: walletAccount.walletId,
186
+ encoding: signParams.encoding,
187
+ hashFunction: signParams.hashFunction,
188
+ });
189
+ signStartTime = Date.now();
190
+ return [4 /*yield*/, signMessage(signParams)];
191
+ case 2:
192
+ result = _f.sent();
193
+ signDuration = Date.now() - signStartTime;
194
+ if (result.signature) {
195
+ _a = decodeSignatureToBytes(result.signature), signatureBytes_1 = _a.bytes, base58_1 = _a.base58;
196
+ logger.debug("[TurnkeyWallet] [signWithTurnkey] Signing completed (signature format)", {
197
+ walletId: walletAccount.walletId,
198
+ signDuration: "".concat(signDuration, "ms"),
199
+ totalDuration: "".concat(Date.now() - startTime, "ms"),
200
+ signatureLength: signatureBytes_1.length,
201
+ signatureBase58Length: base58_1.length,
202
+ });
203
+ return [2 /*return*/, { bytes: signatureBytes_1, base58: base58_1 }];
204
+ }
205
+ r = (_d = result.r) !== null && _d !== void 0 ? _d : '';
206
+ s = (_e = result.s) !== null && _e !== void 0 ? _e : '';
207
+ _b = decodeSignatureToBytes("".concat(r).concat(s)), signatureBytes = _b.bytes, base58 = _b.base58;
208
+ logger.debug("[TurnkeyWallet] [signWithTurnkey] Signing completed (r/s format)", {
209
+ walletId: walletAccount.walletId,
210
+ signDuration: "".concat(signDuration, "ms"),
211
+ totalDuration: "".concat(Date.now() - startTime, "ms"),
212
+ signatureLength: signatureBytes.length,
213
+ hasR: Boolean(result.r),
214
+ hasS: Boolean(result.s),
215
+ signatureBase58Length: base58.length,
216
+ });
217
+ return [2 /*return*/, { bytes: signatureBytes, base58: base58 }];
218
+ case 3:
219
+ error_1 = _f.sent();
220
+ logger.logError(createTurnkeyError('SIGNATURE_FAILED', 'Message signing failed', {
221
+ recoverable: false,
222
+ context: {
223
+ walletId: walletAccount.walletId,
224
+ totalDuration: "".concat(Date.now() - startTime, "ms"),
225
+ },
226
+ cause: error_1 instanceof Error ? error_1 : undefined,
227
+ }));
228
+ throw error_1;
229
+ case 4: return [2 /*return*/];
230
+ }
231
+ });
232
+ }); };
233
+ var signer = {
234
+ signTransaction: function (tx) { return __awaiter(_this, void 0, void 0, function () {
235
+ var startTime, unsignedHex, signedHex, signedBytes, signedTx, totalDuration, error_2;
236
+ return __generator(this, function (_a) {
237
+ switch (_a.label) {
238
+ case 0:
239
+ startTime = Date.now();
240
+ logger.debug("[TurnkeyWallet] [signTransaction] Starting", {
241
+ address: formatAddressForLogs(walletAccount.address),
242
+ isVersioned: tx instanceof VersionedTransaction,
243
+ });
244
+ _a.label = 1;
245
+ case 1:
246
+ _a.trys.push([1, 3, , 4]);
247
+ unsignedHex = serializeUnsignedTransaction(tx);
248
+ logger.debug("[TurnkeyWallet] [signTransaction] Serialized", {
249
+ unsignedLength: unsignedHex.length / 2,
250
+ });
251
+ return [4 /*yield*/, signTurnkeyTransaction({
252
+ walletAccount: walletAccount,
253
+ unsignedTransaction: unsignedHex,
254
+ transactionType: SOLANA_TRANSACTION_TYPE,
255
+ })];
256
+ case 2:
257
+ signedHex = _a.sent();
258
+ signedBytes = hexToBytes(signedHex);
259
+ signedTx = deserializeSignedTransaction(tx, signedBytes);
260
+ totalDuration = Date.now() - startTime;
261
+ logger.debug("[TurnkeyWallet] [signTransaction] Completed", {
262
+ address: formatAddressForLogs(walletAccount.address),
263
+ totalDuration: "".concat(totalDuration, "ms"),
264
+ signedLength: signedBytes.length,
265
+ isVersioned: tx instanceof VersionedTransaction,
266
+ });
267
+ return [2 /*return*/, signedTx];
268
+ case 3:
269
+ error_2 = _a.sent();
270
+ logger.logError(createTurnkeyError('SIGNATURE_FAILED', 'Transaction signing failed', {
271
+ recoverable: false,
272
+ context: {
273
+ address: formatAddressForLogs(walletAccount.address),
274
+ },
275
+ cause: error_2 instanceof Error ? error_2 : undefined,
276
+ }));
277
+ throw error_2;
278
+ case 4: return [2 /*return*/];
279
+ }
280
+ });
281
+ }); },
282
+ signMessage: function (message) { return __awaiter(_this, void 0, void 0, function () {
283
+ var _a, bytes, base58;
284
+ return __generator(this, function (_b) {
285
+ switch (_b.label) {
286
+ case 0:
287
+ logger.debug("[TurnkeyWallet] [signMessage] Starting", {
288
+ address: formatAddressForLogs(walletAccount.address),
289
+ messageLength: message.length,
290
+ });
291
+ return [4 /*yield*/, signWithTurnkey(message)];
292
+ case 1:
293
+ _a = _b.sent(), bytes = _a.bytes, base58 = _a.base58;
294
+ return [2 /*return*/, { signature: bytes, signatureBase58: base58 }];
295
+ }
296
+ });
297
+ }); },
298
+ };
299
+ return {
300
+ address: walletAccount.address,
301
+ chain: 'SOL',
302
+ type: 'turnkey',
303
+ signMessage: function (message) { return __awaiter(_this, void 0, void 0, function () {
304
+ var _a, bytes, base58;
305
+ return __generator(this, function (_b) {
306
+ switch (_b.label) {
307
+ case 0: return [4 /*yield*/, signWithTurnkey(message)];
308
+ case 1:
309
+ _a = _b.sent(), bytes = _a.bytes, base58 = _a.base58;
310
+ return [2 /*return*/, { signature: bytes, signatureBase58: base58 }];
311
+ }
312
+ });
313
+ }); },
314
+ getSigner: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
315
+ return [2 /*return*/, signer];
316
+ }); }); },
317
+ };
318
+ }
319
+ //# sourceMappingURL=createTurnkeyWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTurnkeyWallet.js","sourceRoot":"","sources":["../../../src/turnkey/createTurnkeyWallet.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Transaction,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport type {\n SignMessageParams,\n SignTransactionParams,\n WalletAccount,\n} from '@turnkey/core';\nimport { Buffer } from 'buffer';\nimport bs58 from 'bs58';\nimport { logger } from '../utils/logger';\nimport { createTurnkeyError } from '../utils/errors';\n\nconst SOLANA_ADDRESS_FORMAT = 'ADDRESS_FORMAT_SOLANA' as const;\nconst SOLANA_ENCODING: SignMessageParams['encoding'] = 'PAYLOAD_ENCODING_HEXADECIMAL';\nconst SOLANA_UTF8_ENCODING: SignMessageParams['encoding'] = 'PAYLOAD_ENCODING_TEXT_UTF8';\nconst SOLANA_HASH_FUNCTION: SignMessageParams['hashFunction'] = 'HASH_FUNCTION_NOT_APPLICABLE';\nconst formatAddressForLogs = (address: string): string => `${address.substring(0, 10)}...`;\nconst SOLANA_TRANSACTION_TYPE = 'TRANSACTION_TYPE_SOLANA' as const;\n\ninterface SignMessageResult {\n r?: string;\n s?: string;\n signature?: string;\n}\n\nexport interface TurnkeySignerFactoryParams {\n walletAccount: WalletAccount;\n signMessage: (params: SignMessageParams) => Promise<SignMessageResult>;\n signTransaction: (params: SignTransactionParams) => Promise<string>;\n}\n\nconst bytesToHex = (bytes: Uint8Array): string =>\n Array.from(bytes)\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n\nconst encodeMessageForTurnkey = (\n message: Uint8Array,\n encoding: SignMessageParams['encoding']\n): string => {\n if (encoding === SOLANA_ENCODING) {\n // Encode raw bytes to hex for Turnkey when utf8 is not appropriate\n return bytesToHex(message);\n }\n\n return Buffer.from(message).toString('utf8');\n};\n\nconst hexToBytes = (hex: string): Uint8Array => {\n const normalized = hex.startsWith('0x') ? hex.slice(2) : hex;\n const output = new Uint8Array(normalized.length / 2);\n for (let i = 0; i < normalized.length; i += 2) {\n output[i / 2] = parseInt(normalized.slice(i, i + 2), 16);\n }\n return output;\n};\n\nconst decodeSignatureToBytes = (signature: string): { bytes: Uint8Array; base58: string } => {\n const normalized = signature.trim();\n\n // Wallet adapters typically return base58 signatures for Solana; prefer that.\n try {\n const base58Bytes = bs58.decode(normalized);\n if (base58Bytes.length === 64) {\n logger.debug(\"[TurnkeyWallet] Decoded signature as base58\");\n return { bytes: base58Bytes, base58: normalized };\n }\n } catch {\n // Fall through to other decoders\n }\n\n // Some SDKs return base64 for message signatures.\n try {\n const base64Bytes = Uint8Array.from(Buffer.from(normalized, 'base64'));\n if (base64Bytes.length === 64) {\n logger.debug(\"[TurnkeyWallet] Decoded signature as base64\");\n const base58 = bs58.encode(base64Bytes);\n return { bytes: base64Bytes, base58 };\n }\n } catch {\n // Fall through\n }\n\n // Hex (with or without 0x) is our last resort.\n const normalizedHex = normalized.startsWith('0x') ? normalized.slice(2) : normalized;\n if (/^[0-9a-fA-F]+$/.test(normalizedHex) && normalizedHex.length % 2 === 0) {\n const hexBytes = hexToBytes(normalized);\n if (hexBytes.length > 0) {\n logger.debug(\"[TurnkeyWallet] Decoded signature as hex\");\n const base58 = bs58.encode(hexBytes);\n return { bytes: hexBytes, base58 };\n }\n }\n\n throw new Error(\"Unsupported signature encoding returned from Turnkey\");\n};\n\nconst serializeUnsignedTransaction = (\n tx: Transaction | VersionedTransaction\n): string => {\n if (tx instanceof VersionedTransaction) {\n return bytesToHex(tx.serialize());\n }\n\n return bytesToHex(\n tx.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n );\n};\n\nconst deserializeSignedTransaction = (\n originalTx: Transaction | VersionedTransaction,\n signedBytes: Uint8Array\n): Transaction | VersionedTransaction => {\n const isDuckTypeVersioned = 'version' in originalTx && typeof (originalTx as any).version !== 'undefined';\n if (originalTx instanceof VersionedTransaction || isDuckTypeVersioned) {\n return VersionedTransaction.deserialize(signedBytes);\n }\n return Transaction.from(signedBytes);\n};\n\nconst resolveEncodingForAddressFormat = (\n addressFormat?: SignMessageParams['walletAccount']['addressFormat']\n) => {\n if (!addressFormat || addressFormat === SOLANA_ADDRESS_FORMAT) {\n return {\n encoding: SOLANA_ENCODING,\n hashFunction: SOLANA_HASH_FUNCTION,\n };\n }\n\n logger.warn(\"[TurnkeyWallet] Unknown address format for signer; defaulting to Solana settings\", {\n addressFormat,\n });\n\n return {\n encoding: SOLANA_ENCODING,\n hashFunction: SOLANA_HASH_FUNCTION,\n };\n};\n\nconst isUtf8RoundTripSafe = (message: Uint8Array): boolean => {\n const utf8 = Buffer.from(message).toString('utf8');\n return Buffer.from(utf8, 'utf8').equals(Buffer.from(message));\n};\n\n/**\n * Creates a Solana wallet facade compatible with Dynamic's wallet interface.\n * Uses Turnkey's signing APIs (message + transaction) to sign Solana payloads.\n * Handles both signature formats (direct signature string or r/s components).\n * \n * Note: The signer returned by getSigner() must match the same type as Dynamic's\n * widget signer (as set in LazyWalletProvider.tsx). Specifically:\n * - signTransaction: (tx: Transaction | VersionedTransaction) => Promise<Transaction | VersionedTransaction>\n * - signMessage: (message: Uint8Array) => Promise<{ signature: Uint8Array }>\n */\nexport function createTurnkeySolanaWallet({\n walletAccount,\n signMessage,\n signTransaction: signTurnkeyTransaction,\n}: TurnkeySignerFactoryParams) {\n const signWithTurnkey = async (message: Uint8Array): Promise<{ bytes: Uint8Array; base58: string }> => {\n const startTime = Date.now();\n const addressFormat = (walletAccount.addressFormat ??\n SOLANA_ADDRESS_FORMAT) as SignMessageParams['walletAccount']['addressFormat'];\n const { hashFunction } = resolveEncodingForAddressFormat(addressFormat);\n const shouldUseUtf8 = isUtf8RoundTripSafe(message);\n const encoding: SignMessageParams['encoding'] = shouldUseUtf8\n ? SOLANA_UTF8_ENCODING\n : SOLANA_ENCODING;\n const encodedMessage = encodeMessageForTurnkey(message, encoding);\n\n logger.debug(\"[TurnkeyWallet] [signWithTurnkey] Starting\", {\n walletId: walletAccount.walletId,\n address: formatAddressForLogs(walletAccount.address),\n messageLength: message.length,\n messageHexLength: bytesToHex(message).length,\n addressFormat,\n encoding,\n });\n\n try {\n const signParams = {\n walletAccount,\n message: encodedMessage,\n encoding,\n hashFunction,\n };\n\n logger.debug(\"[TurnkeyWallet] [signWithTurnkey] Calling signMessage\", {\n walletId: walletAccount.walletId,\n encoding: signParams.encoding,\n hashFunction: signParams.hashFunction,\n });\n\n const signStartTime = Date.now();\n const result = await signMessage(signParams);\n const signDuration = Date.now() - signStartTime;\n\n if (result.signature) {\n const { bytes: signatureBytes, base58 } = decodeSignatureToBytes(result.signature);\n logger.debug(\"[TurnkeyWallet] [signWithTurnkey] Signing completed (signature format)\", {\n walletId: walletAccount.walletId,\n signDuration: `${signDuration}ms`,\n totalDuration: `${Date.now() - startTime}ms`,\n signatureLength: signatureBytes.length,\n signatureBase58Length: base58.length,\n });\n return { bytes: signatureBytes, base58 };\n }\n\n const r = result.r ?? '';\n const s = result.s ?? '';\n const { bytes: signatureBytes, base58 } = decodeSignatureToBytes(`${r}${s}`);\n \n logger.debug(\"[TurnkeyWallet] [signWithTurnkey] Signing completed (r/s format)\", {\n walletId: walletAccount.walletId,\n signDuration: `${signDuration}ms`,\n totalDuration: `${Date.now() - startTime}ms`,\n signatureLength: signatureBytes.length,\n hasR: Boolean(result.r),\n hasS: Boolean(result.s),\n signatureBase58Length: base58.length,\n });\n return { bytes: signatureBytes, base58 };\n } catch (error) {\n logger.logError(createTurnkeyError(\n 'SIGNATURE_FAILED',\n 'Message signing failed',\n {\n recoverable: false,\n context: {\n walletId: walletAccount.walletId,\n totalDuration: `${Date.now() - startTime}ms`,\n },\n cause: error instanceof Error ? error : undefined,\n }\n ));\n throw error;\n }\n };\n\n const signer = {\n signTransaction: async (\n tx: Transaction | VersionedTransaction\n ): Promise<Transaction | VersionedTransaction> => {\n const startTime = Date.now();\n logger.debug(\"[TurnkeyWallet] [signTransaction] Starting\", {\n address: formatAddressForLogs(walletAccount.address),\n isVersioned: tx instanceof VersionedTransaction,\n });\n try {\n const unsignedHex = serializeUnsignedTransaction(tx);\n logger.debug(\"[TurnkeyWallet] [signTransaction] Serialized\", {\n unsignedLength: unsignedHex.length / 2,\n });\n\n const signedHex = await signTurnkeyTransaction({\n walletAccount,\n unsignedTransaction: unsignedHex,\n transactionType: SOLANA_TRANSACTION_TYPE,\n });\n\n const signedBytes = hexToBytes(signedHex);\n const signedTx = deserializeSignedTransaction(tx, signedBytes);\n const totalDuration = Date.now() - startTime;\n logger.debug(\"[TurnkeyWallet] [signTransaction] Completed\", {\n address: formatAddressForLogs(walletAccount.address),\n totalDuration: `${totalDuration}ms`,\n signedLength: signedBytes.length,\n isVersioned: tx instanceof VersionedTransaction,\n });\n return signedTx;\n } catch (error) {\n logger.logError(createTurnkeyError(\n 'SIGNATURE_FAILED',\n 'Transaction signing failed',\n {\n recoverable: false,\n context: {\n address: formatAddressForLogs(walletAccount.address),\n },\n cause: error instanceof Error ? error : undefined,\n }\n ));\n throw error;\n }\n },\n signMessage: async (message: Uint8Array): Promise<{ signature: Uint8Array; signatureBase58?: string }> => {\n logger.debug(\"[TurnkeyWallet] [signMessage] Starting\", {\n address: formatAddressForLogs(walletAccount.address),\n messageLength: message.length,\n });\n const { bytes, base58 } = await signWithTurnkey(message);\n return { signature: bytes, signatureBase58: base58 };\n },\n };\n\n return {\n address: walletAccount.address,\n chain: 'SOL',\n type: 'turnkey',\n signMessage: async (message: Uint8Array): Promise<{ signature: Uint8Array; signatureBase58?: string }> => {\n const { bytes, base58 } = await signWithTurnkey(message);\n return { signature: bytes, signatureBase58: base58 };\n },\n getSigner: async () => signer,\n };\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { type WalletProvider } from "@turnkey/core";
2
+ import type { DynamicEvmWallet } from "./types";
3
+ /**
4
+ * Builds a Turnkey WalletProvider from a Dynamic EVM wallet.
5
+ * Normalizes chain IDs, handles eth_requestAccounts/eth_chainId/personal_sign methods,
6
+ * and extracts wallet metadata for Turnkey authentication.
7
+ */
8
+ export declare function buildWalletProvider(wallet: DynamicEvmWallet): Promise<WalletProvider>;