0xtrails 0.13.2 → 0.14.0

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 (753) hide show
  1. package/dist/abis/trailsHydrate.d.ts +5 -42
  2. package/dist/abis/trailsHydrate.d.ts.map +1 -1
  3. package/dist/abis/trailsRouter.d.ts +1 -1
  4. package/dist/abis/trailsRouter.d.ts.map +1 -1
  5. package/dist/{widget/analytics → analytics/hooks}/useWidgetAnalytics.d.ts +2 -4
  6. package/dist/analytics/hooks/useWidgetAnalytics.d.ts.map +1 -0
  7. package/dist/analytics.d.ts.map +1 -1
  8. package/dist/chainSwitch.d.ts.map +1 -1
  9. package/dist/chains-C1NhDLF_.js +4 -0
  10. package/dist/chains-CcoarGia.js +658 -0
  11. package/dist/chains.d.ts +0 -1
  12. package/dist/chains.d.ts.map +1 -1
  13. package/dist/committedIntentStore.d.ts +5 -0
  14. package/dist/committedIntentStore.d.ts.map +1 -0
  15. package/dist/config.d.ts +2 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/constants.d.ts +2 -1
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/error.d.ts +73 -4
  20. package/dist/error.d.ts.map +1 -1
  21. package/dist/hooks/useAddressWalletIcon.d.ts.map +1 -0
  22. package/dist/hooks/useAmountUsd.d.ts.map +1 -0
  23. package/dist/hooks/useBalanceVisible.d.ts.map +1 -0
  24. package/dist/hooks/useChainFilter.d.ts.map +1 -0
  25. package/dist/{widget/hooks → hooks}/useCheckout.d.ts +15 -15
  26. package/dist/hooks/useCheckout.d.ts.map +1 -0
  27. package/dist/hooks/useClickTracking.d.ts.map +1 -0
  28. package/dist/{widget/hooks → hooks}/useCombinedHistory.d.ts +3 -2
  29. package/dist/hooks/useCombinedHistory.d.ts.map +1 -0
  30. package/dist/hooks/useConnector.d.ts.map +1 -0
  31. package/dist/{widget/hooks → hooks}/useCustomTokenSearch.d.ts +1 -1
  32. package/dist/hooks/useCustomTokenSearch.d.ts.map +1 -0
  33. package/dist/hooks/useDebounce.d.ts.map +1 -0
  34. package/dist/{widget/hooks → hooks}/useDebugScreens.d.ts +2 -2
  35. package/dist/hooks/useDebugScreens.d.ts.map +1 -0
  36. package/dist/{widget/hooks → hooks}/useDefaultDestinationToken.d.ts +1 -1
  37. package/dist/hooks/useDefaultDestinationToken.d.ts.map +1 -0
  38. package/dist/{widget/hooks → hooks}/useDefaultOriginToken.d.ts +1 -1
  39. package/dist/hooks/useDefaultOriginToken.d.ts.map +1 -0
  40. package/dist/hooks/useDepositMonitor.d.ts.map +1 -0
  41. package/dist/{widget/hooks → hooks}/useDestinationSelectedToken.d.ts +2 -2
  42. package/dist/hooks/useDestinationSelectedToken.d.ts.map +1 -0
  43. package/dist/hooks/useDisplayCurrencyPreference.d.ts.map +1 -0
  44. package/dist/{widget/hooks → hooks}/useEarnPool.d.ts +1 -1
  45. package/dist/hooks/useEarnPool.d.ts.map +1 -0
  46. package/dist/hooks/useEffectiveFundBalance.d.ts +28 -0
  47. package/dist/hooks/useEffectiveFundBalance.d.ts.map +1 -0
  48. package/dist/hooks/useExecutingIntentsCount.d.ts.map +1 -0
  49. package/dist/{widget/hooks → hooks}/useExternalFundingReceiptSync.d.ts +1 -1
  50. package/dist/hooks/useExternalFundingReceiptSync.d.ts.map +1 -0
  51. package/dist/{widget/hooks → hooks}/useFiatOnRampCurrencies.d.ts +1 -1
  52. package/dist/hooks/useFiatOnRampCurrencies.d.ts.map +1 -0
  53. package/dist/hooks/useFiatSelectedCurrency.d.ts.map +1 -0
  54. package/dist/hooks/useGetIntent.d.ts.map +1 -0
  55. package/dist/{widget/hooks → hooks}/useIntentReceiptBalances.d.ts +1 -1
  56. package/dist/hooks/useIntentReceiptBalances.d.ts.map +1 -0
  57. package/dist/{widget/hooks → hooks}/useIntentTransactionHistory.d.ts +2 -1
  58. package/dist/hooks/useIntentTransactionHistory.d.ts.map +1 -0
  59. package/dist/hooks/useIsMobile.d.ts.map +1 -0
  60. package/dist/hooks/useIsSequenceWallet.d.ts.map +1 -0
  61. package/dist/hooks/useLocalePreference.d.ts.map +1 -0
  62. package/dist/hooks/useMeldTransactionHistory.d.ts.map +1 -0
  63. package/dist/hooks/useMeldTransactionStatus.d.ts.map +1 -0
  64. package/dist/hooks/useOnRampCountryDefaults.d.ts.map +1 -0
  65. package/dist/{widget/hooks → hooks}/useOnRampPaymentMethods.d.ts +2 -2
  66. package/dist/hooks/useOnRampPaymentMethods.d.ts.map +1 -0
  67. package/dist/{widget/hooks → hooks}/useOnRampProviderWidget.d.ts +1 -1
  68. package/dist/hooks/useOnRampProviderWidget.d.ts.map +1 -0
  69. package/dist/{widget/hooks → hooks}/useOnRampQuote.d.ts +3 -3
  70. package/dist/hooks/useOnRampQuote.d.ts.map +1 -0
  71. package/dist/{widget/hooks → hooks}/useOnRampTransactionStatus.d.ts +1 -1
  72. package/dist/hooks/useOnRampTransactionStatus.d.ts.map +1 -0
  73. package/dist/{widget/hooks → hooks}/useOriginSelectedToken.d.ts +1 -1
  74. package/dist/hooks/useOriginSelectedToken.d.ts.map +1 -0
  75. package/dist/hooks/usePayMessage.d.ts.map +1 -0
  76. package/dist/hooks/usePriceImpactWarning.d.ts.map +1 -0
  77. package/dist/hooks/useQuote.d.ts +439 -0
  78. package/dist/hooks/useQuote.d.ts.map +1 -0
  79. package/dist/{widget/hooks → hooks}/useRecentTokens.d.ts +1 -1
  80. package/dist/hooks/useRecentTokens.d.ts.map +1 -0
  81. package/dist/hooks/useRecipients.d.ts.map +1 -0
  82. package/dist/hooks/useSelectedFeeOption.d.ts.map +1 -0
  83. package/dist/{widget/hooks → hooks}/useSelectedFundMethod.d.ts +11 -1
  84. package/dist/hooks/useSelectedFundMethod.d.ts.map +1 -0
  85. package/dist/hooks/useSelectedRecipient.d.ts.map +1 -0
  86. package/dist/{widget/hooks → hooks}/useSendForm.d.ts +6 -11
  87. package/dist/hooks/useSendForm.d.ts.map +1 -0
  88. package/dist/hooks/useSwapAmount.d.ts.map +1 -0
  89. package/dist/{widget/hooks → hooks}/useSwapState.d.ts +1 -1
  90. package/dist/hooks/useSwapState.d.ts.map +1 -0
  91. package/dist/hooks/useTargetAmount.d.ts.map +1 -0
  92. package/dist/hooks/useTheme.d.ts.map +1 -0
  93. package/dist/{widget/hooks → hooks}/useTokenList.d.ts +2 -2
  94. package/dist/hooks/useTokenList.d.ts.map +1 -0
  95. package/dist/{widget/hooks → hooks}/useTrailsSendTransaction.d.ts +1 -1
  96. package/dist/hooks/useTrailsSendTransaction.d.ts.map +1 -0
  97. package/dist/{widget/hooks → hooks}/useViewManager.d.ts +1 -1
  98. package/dist/hooks/useViewManager.d.ts.map +1 -0
  99. package/dist/hooks/useWalletConnectUri.d.ts +19 -0
  100. package/dist/hooks/useWalletConnectUri.d.ts.map +1 -0
  101. package/dist/hooks/useWalletConnectionContext.d.ts.map +1 -0
  102. package/dist/{widget/hooks → hooks}/useWidgetProps.d.ts +1 -1
  103. package/dist/hooks/useWidgetProps.d.ts.map +1 -0
  104. package/dist/hydrate/builder.d.ts +131 -0
  105. package/dist/hydrate/builder.d.ts.map +1 -0
  106. package/dist/hydrate/constants.d.ts +13 -0
  107. package/dist/hydrate/constants.d.ts.map +1 -0
  108. package/dist/hydrate/encodeExecute.d.ts +73 -0
  109. package/dist/hydrate/encodeExecute.d.ts.map +1 -0
  110. package/dist/hydrate/index.d.ts +6 -0
  111. package/dist/hydrate/index.d.ts.map +1 -0
  112. package/dist/hydrate/index.js +11 -0
  113. package/dist/hydrate/payload.d.ts +38 -0
  114. package/dist/hydrate/payload.d.ts.map +1 -0
  115. package/dist/hydrate/selectors.d.ts +28 -0
  116. package/dist/hydrate/selectors.d.ts.map +1 -0
  117. package/dist/hydrate/types.d.ts +19 -0
  118. package/dist/hydrate/types.d.ts.map +1 -0
  119. package/dist/hydrate/utils.d.ts +8 -0
  120. package/dist/hydrate/utils.d.ts.map +1 -0
  121. package/dist/hydrate-Cr9eaeDK.js +654 -0
  122. package/dist/index.d.ts +19 -13
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +157 -662
  125. package/dist/intentConfigStore.d.ts +8 -0
  126. package/dist/intentConfigStore.d.ts.map +1 -0
  127. package/dist/intentProtocolApi.d.ts +11 -0
  128. package/dist/intentProtocolApi.d.ts.map +1 -0
  129. package/dist/intentProtocolEncoding.d.ts +25 -0
  130. package/dist/intentProtocolEncoding.d.ts.map +1 -0
  131. package/dist/intentProtocolResolver.d.ts +28 -0
  132. package/dist/intentProtocolResolver.d.ts.map +1 -0
  133. package/dist/intentReceiptPoller.d.ts.map +1 -1
  134. package/dist/intentValidation.d.ts +5 -0
  135. package/dist/intentValidation.d.ts.map +1 -0
  136. package/dist/intents.d.ts.map +1 -1
  137. package/dist/keymachine/index.d.ts +20 -0
  138. package/dist/keymachine/index.d.ts.map +1 -1
  139. package/dist/mutations.d.ts.map +1 -1
  140. package/dist/offlineRecovery.d.ts +24 -0
  141. package/dist/offlineRecovery.d.ts.map +1 -0
  142. package/dist/onramp/MeshConnectFlow.d.ts +9 -0
  143. package/dist/onramp/MeshConnectFlow.d.ts.map +1 -1
  144. package/dist/onramp/MeshConnectIframe.d.ts +9 -0
  145. package/dist/onramp/MeshConnectIframe.d.ts.map +1 -1
  146. package/dist/onramp/TrailsOnRampProvider.d.ts.map +1 -1
  147. package/dist/onramp/mesh/components/MeshExchangeConfirmation.d.ts +10 -0
  148. package/dist/onramp/mesh/components/MeshExchangeConfirmation.d.ts.map +1 -0
  149. package/dist/onramp/mesh/components/MeshExchangeIcon.d.ts +13 -0
  150. package/dist/onramp/mesh/components/MeshExchangeIcon.d.ts.map +1 -0
  151. package/dist/{widget → onramp/mesh}/components/MeshExchangeSelection.d.ts +1 -0
  152. package/dist/onramp/mesh/components/MeshExchangeSelection.d.ts.map +1 -0
  153. package/dist/onramp/mesh/components/MeshSessionOptions.d.ts +15 -0
  154. package/dist/onramp/mesh/components/MeshSessionOptions.d.ts.map +1 -0
  155. package/dist/onramp/mesh/hooks/useMeshAccessTokens.d.ts +9 -0
  156. package/dist/onramp/mesh/hooks/useMeshAccessTokens.d.ts.map +1 -0
  157. package/dist/onramp/mesh/hooks/useMeshFundingSelection.d.ts +11 -0
  158. package/dist/onramp/mesh/hooks/useMeshFundingSelection.d.ts.map +1 -0
  159. package/dist/onramp/mesh/hooks/useMeshOnrampFlow.d.ts +71 -0
  160. package/dist/onramp/mesh/hooks/useMeshOnrampFlow.d.ts.map +1 -0
  161. package/dist/onramp/mesh/hooks/useMeshOnrampSessionState.d.ts +32 -0
  162. package/dist/onramp/mesh/hooks/useMeshOnrampSessionState.d.ts.map +1 -0
  163. package/dist/onramp/mesh/hooks/useMeshSelectedTokenBalance.d.ts +19 -0
  164. package/dist/onramp/mesh/hooks/useMeshSelectedTokenBalance.d.ts.map +1 -0
  165. package/dist/onramp/mesh/hooks/useMeshSessionAccountBalance.d.ts +15 -0
  166. package/dist/onramp/mesh/hooks/useMeshSessionAccountBalance.d.ts.map +1 -0
  167. package/dist/onramp/mesh/hooks/useMeshSessionStorage.d.ts +7 -0
  168. package/dist/onramp/mesh/hooks/useMeshSessionStorage.d.ts.map +1 -0
  169. package/dist/onramp/meshSessionStorage.d.ts +13 -0
  170. package/dist/onramp/meshSessionStorage.d.ts.map +1 -0
  171. package/dist/onramp/meshconnect.d.ts +6 -4
  172. package/dist/onramp/meshconnect.d.ts.map +1 -1
  173. package/dist/onramp/trailsOnramp.d.ts +8 -0
  174. package/dist/onramp/trailsOnramp.d.ts.map +1 -1
  175. package/dist/onrampClient.d.ts.map +1 -1
  176. package/dist/prepareSend.d.ts +3 -2
  177. package/dist/prepareSend.d.ts.map +1 -1
  178. package/dist/query/intentProtocol.queries.d.ts +32 -0
  179. package/dist/query/intentProtocol.queries.d.ts.map +1 -0
  180. package/dist/recover.d.ts +70 -24
  181. package/dist/recover.d.ts.map +1 -1
  182. package/dist/src-4HYDQv2T.js +48798 -0
  183. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts +2 -3
  184. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -1
  185. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts +2 -3
  186. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -1
  187. package/dist/transactionIntent/deposits/standardDeposit.d.ts +2 -5
  188. package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -1
  189. package/dist/transactionIntent/handlers/intentHandler.d.ts +4 -4
  190. package/dist/transactionIntent/handlers/intentHandler.d.ts.map +1 -1
  191. package/dist/transactionIntent/quote/quoteHelpers.d.ts +2 -2
  192. package/dist/transactionIntent/quote/quoteHelpers.d.ts.map +1 -1
  193. package/dist/transactionIntent/types.d.ts +3 -3
  194. package/dist/transactionIntent/types.d.ts.map +1 -1
  195. package/dist/transactions.d.ts +1 -0
  196. package/dist/transactions.d.ts.map +1 -1
  197. package/dist/umd/trails.min.js +1370 -410
  198. package/dist/utils/localStorageGc.d.ts +22 -0
  199. package/dist/utils/localStorageGc.d.ts.map +1 -0
  200. package/dist/walletUtils.d.ts.map +1 -1
  201. package/dist/widget/components/AccountIntentTransactionHistory.d.ts.map +1 -1
  202. package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
  203. package/dist/widget/components/ConnectedWallets.d.ts +1 -1
  204. package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
  205. package/dist/widget/components/Earn.d.ts +2 -6
  206. package/dist/widget/components/Earn.d.ts.map +1 -1
  207. package/dist/widget/components/FeeOption.d.ts +1 -1
  208. package/dist/widget/components/FeeOption.d.ts.map +1 -1
  209. package/dist/widget/components/FeeOptions.d.ts +1 -1
  210. package/dist/widget/components/FeeOptions.d.ts.map +1 -1
  211. package/dist/widget/components/FiatSelector.d.ts +1 -1
  212. package/dist/widget/components/FiatSelector.d.ts.map +1 -1
  213. package/dist/widget/components/FiatSelectorButton.d.ts +1 -1
  214. package/dist/widget/components/FiatSelectorButton.d.ts.map +1 -1
  215. package/dist/widget/components/Fund.d.ts +1 -1
  216. package/dist/widget/components/Fund.d.ts.map +1 -1
  217. package/dist/widget/components/FundMethods.d.ts.map +1 -1
  218. package/dist/widget/components/FundingMethodSelectorButton.d.ts +1 -1
  219. package/dist/widget/components/FundingMethodSelectorButton.d.ts.map +1 -1
  220. package/dist/widget/components/MeldHistory.d.ts +1 -1
  221. package/dist/widget/components/MeldHistory.d.ts.map +1 -1
  222. package/dist/widget/components/MeldTransactionStatus.d.ts +1 -1
  223. package/dist/widget/components/MeldTransactionStatus.d.ts.map +1 -1
  224. package/dist/widget/components/MeshExchangeAccountHeader.d.ts +9 -0
  225. package/dist/widget/components/MeshExchangeAccountHeader.d.ts.map +1 -0
  226. package/dist/widget/components/OnrampHistoryRow.d.ts +1 -1
  227. package/dist/widget/components/OnrampHistoryRow.d.ts.map +1 -1
  228. package/dist/widget/components/OnrampProviderConfirmation.d.ts +1 -1
  229. package/dist/widget/components/OnrampProviderConfirmation.d.ts.map +1 -1
  230. package/dist/widget/components/Pay.d.ts.map +1 -1
  231. package/dist/widget/components/PoolDeposit.d.ts +2 -6
  232. package/dist/widget/components/PoolDeposit.d.ts.map +1 -1
  233. package/dist/widget/components/PoolWithdraw.d.ts +2 -2
  234. package/dist/widget/components/PoolWithdraw.d.ts.map +1 -1
  235. package/dist/widget/components/PulsatingButton.d.ts +9 -0
  236. package/dist/widget/components/PulsatingButton.d.ts.map +1 -0
  237. package/dist/widget/components/Receipt.d.ts +1 -1
  238. package/dist/widget/components/Receipt.d.ts.map +1 -1
  239. package/dist/widget/components/RecipientSelectorButton.d.ts.map +1 -1
  240. package/dist/widget/components/Recipients.d.ts.map +1 -1
  241. package/dist/widget/components/Swap.d.ts +2 -6
  242. package/dist/widget/components/Swap.d.ts.map +1 -1
  243. package/dist/widget/components/TokenList.d.ts +1 -0
  244. package/dist/widget/components/TokenList.d.ts.map +1 -1
  245. package/dist/widget/components/TokenSelector.d.ts +1 -2
  246. package/dist/widget/components/TokenSelector.d.ts.map +1 -1
  247. package/dist/widget/components/TransactionDetails.d.ts +1 -0
  248. package/dist/widget/components/TransactionDetails.d.ts.map +1 -1
  249. package/dist/widget/components/TransactionHistoryItem.d.ts +1 -0
  250. package/dist/widget/components/TransactionHistoryItem.d.ts.map +1 -1
  251. package/dist/widget/components/TransferPendingVertical.d.ts +1 -1
  252. package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
  253. package/dist/widget/components/WalletAccountHeader.d.ts +7 -0
  254. package/dist/widget/components/WalletAccountHeader.d.ts.map +1 -0
  255. package/dist/widget/components/WalletConfirmation.d.ts +2 -1
  256. package/dist/widget/components/WalletConfirmation.d.ts.map +1 -1
  257. package/dist/widget/components/WalletConnect.d.ts.map +1 -1
  258. package/dist/widget/components/WidgetProviders.d.ts.map +1 -1
  259. package/dist/widget/components/Withdraw.d.ts.map +1 -1
  260. package/dist/widget/index.d.ts +13 -0
  261. package/dist/widget/index.d.ts.map +1 -1
  262. package/dist/widget/index.js +16 -8
  263. package/dist/widget/modes/EarnWidget.d.ts +83 -0
  264. package/dist/widget/modes/EarnWidget.d.ts.map +1 -0
  265. package/dist/widget/modes/FundWidget.d.ts +103 -0
  266. package/dist/widget/modes/FundWidget.d.ts.map +1 -0
  267. package/dist/widget/modes/PayWidget.d.ts +86 -0
  268. package/dist/widget/modes/PayWidget.d.ts.map +1 -0
  269. package/dist/widget/modes/SwapWidget.d.ts +82 -0
  270. package/dist/widget/modes/SwapWidget.d.ts.map +1 -0
  271. package/dist/widget/modes/WithdrawWidget.d.ts +71 -0
  272. package/dist/widget/modes/WithdrawWidget.d.ts.map +1 -0
  273. package/dist/widget/providers/TrailsProvider.d.ts +3 -0
  274. package/dist/widget/providers/TrailsProvider.d.ts.map +1 -1
  275. package/dist/widget/shared/mapSharedProps.d.ts +9 -0
  276. package/dist/widget/shared/mapSharedProps.d.ts.map +1 -0
  277. package/dist/widget/shared/methodMap.d.ts +18 -0
  278. package/dist/widget/shared/methodMap.d.ts.map +1 -0
  279. package/dist/widget/shared/resolution.d.ts +22 -0
  280. package/dist/widget/shared/resolution.d.ts.map +1 -0
  281. package/dist/widget/shared/resolvePaymentSource.d.ts +34 -0
  282. package/dist/widget/shared/resolvePaymentSource.d.ts.map +1 -0
  283. package/dist/widget/shared/types.d.ts +94 -0
  284. package/dist/widget/shared/types.d.ts.map +1 -0
  285. package/dist/widget/types/commonProps.d.ts +3 -7
  286. package/dist/widget/types/commonProps.d.ts.map +1 -1
  287. package/dist/widget/utils/fundMethodSwitchState.d.ts +1 -0
  288. package/dist/widget/utils/fundMethodSwitchState.d.ts.map +1 -1
  289. package/dist/widget/utils/viewManagerGuards.d.ts +1 -1
  290. package/dist/widget/utils/viewManagerGuards.d.ts.map +1 -1
  291. package/dist/widget/widget.d.ts +21 -16
  292. package/dist/widget/widget.d.ts.map +1 -1
  293. package/package.json +17 -23
  294. package/dist/buffer.d.ts +0 -3
  295. package/dist/buffer.d.ts.map +0 -1
  296. package/dist/ccip-CT_An6eM.js +0 -230
  297. package/dist/index-RfqL5Foz.js +0 -114567
  298. package/dist/paymasterSend.d.ts +0 -90
  299. package/dist/paymasterSend.d.ts.map +0 -1
  300. package/dist/sendUserOp.d.ts +0 -122
  301. package/dist/sendUserOp.d.ts.map +0 -1
  302. package/dist/toSimpleSmartAccount.d.ts +0 -95
  303. package/dist/toSimpleSmartAccount.d.ts.map +0 -1
  304. package/dist/transactionIntent/utils/erc20Approval.d.ts +0 -34
  305. package/dist/transactionIntent/utils/erc20Approval.d.ts.map +0 -1
  306. package/dist/utils/allowance.d.ts +0 -19
  307. package/dist/utils/allowance.d.ts.map +0 -1
  308. package/dist/widget/analytics/useWidgetAnalytics.d.ts.map +0 -1
  309. package/dist/widget/components/FeeBreakdown.d.ts +0 -9
  310. package/dist/widget/components/FeeBreakdown.d.ts.map +0 -1
  311. package/dist/widget/components/HideBalances.d.ts +0 -4
  312. package/dist/widget/components/HideBalances.d.ts.map +0 -1
  313. package/dist/widget/components/MeshExchangeSelection.d.ts.map +0 -1
  314. package/dist/widget/components/OnrampDeposit.d.ts +0 -10
  315. package/dist/widget/components/OnrampDeposit.d.ts.map +0 -1
  316. package/dist/widget/components/SwapSettings.d.ts +0 -4
  317. package/dist/widget/components/SwapSettings.d.ts.map +0 -1
  318. package/dist/widget/components/TruncatedAddress.d.ts +0 -12
  319. package/dist/widget/components/TruncatedAddress.d.ts.map +0 -1
  320. package/dist/widget/components/WalletImage.d.ts +0 -8
  321. package/dist/widget/components/WalletImage.d.ts.map +0 -1
  322. package/dist/widget/css/compiled.css +0 -26
  323. package/dist/widget/css/index.css +0 -686
  324. package/dist/widget/hooks/useAddressWalletIcon.d.ts.map +0 -1
  325. package/dist/widget/hooks/useAmountUsd.d.ts.map +0 -1
  326. package/dist/widget/hooks/useBalanceVisible.d.ts.map +0 -1
  327. package/dist/widget/hooks/useChainFilter.d.ts.map +0 -1
  328. package/dist/widget/hooks/useCheckout.d.ts.map +0 -1
  329. package/dist/widget/hooks/useClickTracking.d.ts.map +0 -1
  330. package/dist/widget/hooks/useCombinedHistory.d.ts.map +0 -1
  331. package/dist/widget/hooks/useConnector.d.ts.map +0 -1
  332. package/dist/widget/hooks/useCustomTokenSearch.d.ts.map +0 -1
  333. package/dist/widget/hooks/useDebounce.d.ts.map +0 -1
  334. package/dist/widget/hooks/useDebugScreens.d.ts.map +0 -1
  335. package/dist/widget/hooks/useDefaultDestinationToken.d.ts.map +0 -1
  336. package/dist/widget/hooks/useDefaultOriginToken.d.ts.map +0 -1
  337. package/dist/widget/hooks/useDepositMonitor.d.ts.map +0 -1
  338. package/dist/widget/hooks/useDestinationSelectedToken.d.ts.map +0 -1
  339. package/dist/widget/hooks/useDisplayCurrencyPreference.d.ts.map +0 -1
  340. package/dist/widget/hooks/useEarnPool.d.ts.map +0 -1
  341. package/dist/widget/hooks/useExecutingIntentsCount.d.ts.map +0 -1
  342. package/dist/widget/hooks/useExternalFundingReceiptSync.d.ts.map +0 -1
  343. package/dist/widget/hooks/useFiatOnRampCurrencies.d.ts.map +0 -1
  344. package/dist/widget/hooks/useFiatSelectedCurrency.d.ts.map +0 -1
  345. package/dist/widget/hooks/useGetIntent.d.ts.map +0 -1
  346. package/dist/widget/hooks/useIntentReceiptBalances.d.ts.map +0 -1
  347. package/dist/widget/hooks/useIntentTransactionHistory.d.ts.map +0 -1
  348. package/dist/widget/hooks/useIsConnectedWalletSmartContract.d.ts +0 -7
  349. package/dist/widget/hooks/useIsConnectedWalletSmartContract.d.ts.map +0 -1
  350. package/dist/widget/hooks/useIsMobile.d.ts.map +0 -1
  351. package/dist/widget/hooks/useIsSequenceWallet.d.ts.map +0 -1
  352. package/dist/widget/hooks/useLocalePreference.d.ts.map +0 -1
  353. package/dist/widget/hooks/useMeldTransactionHistory.d.ts.map +0 -1
  354. package/dist/widget/hooks/useMeldTransactionStatus.d.ts.map +0 -1
  355. package/dist/widget/hooks/useOnRampCountryDefaults.d.ts.map +0 -1
  356. package/dist/widget/hooks/useOnRampPaymentMethods.d.ts.map +0 -1
  357. package/dist/widget/hooks/useOnRampProviderWidget.d.ts.map +0 -1
  358. package/dist/widget/hooks/useOnRampQuote.d.ts.map +0 -1
  359. package/dist/widget/hooks/useOnRampTransactionStatus.d.ts.map +0 -1
  360. package/dist/widget/hooks/useOriginSelectedToken.d.ts.map +0 -1
  361. package/dist/widget/hooks/usePayMessage.d.ts.map +0 -1
  362. package/dist/widget/hooks/usePriceImpactWarning.d.ts.map +0 -1
  363. package/dist/widget/hooks/useQuote.d.ts +0 -378
  364. package/dist/widget/hooks/useQuote.d.ts.map +0 -1
  365. package/dist/widget/hooks/useRecentTokens.d.ts.map +0 -1
  366. package/dist/widget/hooks/useRecipients.d.ts.map +0 -1
  367. package/dist/widget/hooks/useScreenTracking.d.ts +0 -2
  368. package/dist/widget/hooks/useScreenTracking.d.ts.map +0 -1
  369. package/dist/widget/hooks/useSelectedFeeOption.d.ts.map +0 -1
  370. package/dist/widget/hooks/useSelectedFundMethod.d.ts.map +0 -1
  371. package/dist/widget/hooks/useSelectedRecipient.d.ts.map +0 -1
  372. package/dist/widget/hooks/useSendForm.d.ts.map +0 -1
  373. package/dist/widget/hooks/useSwapAmount.d.ts.map +0 -1
  374. package/dist/widget/hooks/useSwapState.d.ts.map +0 -1
  375. package/dist/widget/hooks/useTargetAmount.d.ts.map +0 -1
  376. package/dist/widget/hooks/useTheme.d.ts.map +0 -1
  377. package/dist/widget/hooks/useTokenList.d.ts.map +0 -1
  378. package/dist/widget/hooks/useTrailsSendTransaction.d.ts.map +0 -1
  379. package/dist/widget/hooks/useViewManager.d.ts.map +0 -1
  380. package/dist/widget/hooks/useWalletConnectUri.d.ts +0 -11
  381. package/dist/widget/hooks/useWalletConnectUri.d.ts.map +0 -1
  382. package/dist/widget/hooks/useWalletConnectionContext.d.ts.map +0 -1
  383. package/dist/widget/hooks/useWidgetProps.d.ts.map +0 -1
  384. package/dist/widget/types.d.ts +0 -44
  385. package/dist/widget/types.d.ts.map +0 -1
  386. package/dist/widget/utils/historyUtils.d.ts +0 -18
  387. package/dist/widget/utils/historyUtils.d.ts.map +0 -1
  388. package/src/abi.ts +0 -38
  389. package/src/abis/erc20.ts +0 -60
  390. package/src/abis/trailsHydrate.ts +0 -185
  391. package/src/abis/trailsRouter.ts +0 -121
  392. package/src/abis/trailsSweep.ts +0 -32
  393. package/src/abortController.ts +0 -35
  394. package/src/analytics.ts +0 -2029
  395. package/src/buffer.ts +0 -10
  396. package/src/chainSwitch.ts +0 -95
  397. package/src/chains.ts +0 -570
  398. package/src/config.ts +0 -118
  399. package/src/constants.ts +0 -239
  400. package/src/contractUtils.ts +0 -46
  401. package/src/cssUtils.ts +0 -5
  402. package/src/customChains.ts +0 -24
  403. package/src/customTokens.ts +0 -168
  404. package/src/decoders.ts +0 -365
  405. package/src/ens.ts +0 -74
  406. package/src/error.ts +0 -268
  407. package/src/estimate.ts +0 -480
  408. package/src/explorer.ts +0 -38
  409. package/src/fees.ts +0 -362
  410. package/src/gasless.ts +0 -638
  411. package/src/index.ts +0 -205
  412. package/src/indexerClient.ts +0 -118
  413. package/src/intentReceiptMonitor.ts +0 -99
  414. package/src/intentReceiptPoller.ts +0 -327
  415. package/src/intents.ts +0 -1133
  416. package/src/keyMachineClient.ts +0 -29
  417. package/src/keymachine/index.ts +0 -175
  418. package/src/keymachine/key-machine.gen.ts +0 -993
  419. package/src/localeUtils.ts +0 -244
  420. package/src/logger/index.ts +0 -95
  421. package/src/logger/useSyncLoggerDebug.ts +0 -11
  422. package/src/logger.ts +0 -1
  423. package/src/meld/components/MeldCountriesList.tsx +0 -237
  424. package/src/meld/components/MeldFundMethods.tsx +0 -265
  425. package/src/meld/components/MeldProvidersList.tsx +0 -187
  426. package/src/meld/components/MeldTokensList.tsx +0 -321
  427. package/src/meld/components/SimpleHeader.tsx +0 -35
  428. package/src/meld/utils/meld.ts +0 -77
  429. package/src/mutations.ts +0 -166
  430. package/src/onramp/MeshConnectFlow.tsx +0 -86
  431. package/src/onramp/MeshConnectIframe.tsx +0 -661
  432. package/src/onramp/SendFromExchangeButton.tsx +0 -81
  433. package/src/onramp/TrailsOnRampProvider.tsx +0 -59
  434. package/src/onramp/index.ts +0 -31
  435. package/src/onramp/meshconnect.ts +0 -277
  436. package/src/onramp/trailsOnramp.tsx +0 -130
  437. package/src/onramp-client/index.ts +0 -52
  438. package/src/onrampClient.ts +0 -46
  439. package/src/paymasterSend.ts +0 -521
  440. package/src/placeholder.ts +0 -92
  441. package/src/poolUtils.ts +0 -222
  442. package/src/pools.ts +0 -120
  443. package/src/prepareSend.ts +0 -553
  444. package/src/query/balance.fetchers.ts +0 -753
  445. package/src/query/balance.hooks.ts +0 -357
  446. package/src/query/balance.queries.ts +0 -307
  447. package/src/query/chains.hooks.ts +0 -45
  448. package/src/query/chains.queries.ts +0 -17
  449. package/src/query/client.ts +0 -20
  450. package/src/query/fiat.fetchers.ts +0 -33
  451. package/src/query/fiat.hooks.ts +0 -71
  452. package/src/query/fiat.queries.ts +0 -67
  453. package/src/query/geo.fetchers.ts +0 -100
  454. package/src/query/geo.hooks.ts +0 -16
  455. package/src/query/geo.queries.ts +0 -36
  456. package/src/query/helpers.ts +0 -81
  457. package/src/query/meld.fetchers.ts +0 -97
  458. package/src/query/meld.hooks.ts +0 -18
  459. package/src/query/meld.queries.ts +0 -184
  460. package/src/query/persister.ts +0 -11
  461. package/src/query/price.fetchers.ts +0 -53
  462. package/src/query/price.hooks.ts +0 -46
  463. package/src/query/price.queries.ts +0 -364
  464. package/src/query/tokenList.queries.ts +0 -118
  465. package/src/queryParams.ts +0 -100
  466. package/src/recover.ts +0 -1728
  467. package/src/sendUserOp.ts +0 -512
  468. package/src/theme.ts +0 -2
  469. package/src/toSimpleSmartAccount.ts +0 -567
  470. package/src/toast.ts +0 -110
  471. package/src/tokens.ts +0 -1862
  472. package/src/trailsClient.ts +0 -40
  473. package/src/transactionIntent/constants.ts +0 -15
  474. package/src/transactionIntent/deposits/depositOrchestrator.ts +0 -243
  475. package/src/transactionIntent/deposits/gaslessDeposit.ts +0 -705
  476. package/src/transactionIntent/deposits/index.ts +0 -3
  477. package/src/transactionIntent/deposits/standardDeposit.ts +0 -590
  478. package/src/transactionIntent/execution/index.ts +0 -1
  479. package/src/transactionIntent/execution/transactionState.ts +0 -38
  480. package/src/transactionIntent/handlers/index.ts +0 -1
  481. package/src/transactionIntent/handlers/intentHandler.ts +0 -1613
  482. package/src/transactionIntent/helpers/index.ts +0 -1
  483. package/src/transactionIntent/helpers/transactionStateHelpers.ts +0 -440
  484. package/src/transactionIntent/index.ts +0 -10
  485. package/src/transactionIntent/quote/feeExtractors.ts +0 -61
  486. package/src/transactionIntent/quote/index.ts +0 -3
  487. package/src/transactionIntent/quote/normalizeQuote.ts +0 -559
  488. package/src/transactionIntent/quote/quoteHelpers.ts +0 -117
  489. package/src/transactionIntent/types.ts +0 -241
  490. package/src/transactionIntent/utils/balanceChecker.ts +0 -103
  491. package/src/transactionIntent/utils/erc20Approval.ts +0 -171
  492. package/src/transactionIntent/utils/index.ts +0 -2
  493. package/src/transactionIntent/utils/resilientDepositTracker.ts +0 -171
  494. package/src/transactionIntent/utils/testnetHelpers.ts +0 -5
  495. package/src/transactionIntent/validators.ts +0 -27
  496. package/src/transactions.ts +0 -429
  497. package/src/types.d.ts +0 -16
  498. package/src/umd.tsx +0 -33
  499. package/src/utils/address.ts +0 -78
  500. package/src/utils/allowance.ts +0 -47
  501. package/src/utils/fiat.ts +0 -32
  502. package/src/utils/format.ts +0 -625
  503. package/src/utils/passthrough.ts +0 -93
  504. package/src/utils/time.ts +0 -118
  505. package/src/utils/validation.ts +0 -104
  506. package/src/utils.ts +0 -112
  507. package/src/version.ts +0 -8
  508. package/src/vite-env.d.ts +0 -4
  509. package/src/walletUtils.ts +0 -293
  510. package/src/wallets.ts +0 -544
  511. package/src/widget/analytics/useWidgetAnalytics.ts +0 -56
  512. package/src/widget/assets/Exchange-icon-black.svg +0 -5
  513. package/src/widget/assets/MetaMask-icon-fox-with-margins.svg +0 -31
  514. package/src/widget/assets/MetaMask-icon-fox.svg +0 -26
  515. package/src/widget/assets/MetaMask-logo-black.svg +0 -3
  516. package/src/widget/assets/MetaMask-logo-white.svg +0 -16
  517. package/src/widget/assets/Trails-logo-black.svg +0 -13
  518. package/src/widget/assets/Trails-logo-white.svg +0 -13
  519. package/src/widget/assets/WalletChange-black.svg +0 -5
  520. package/src/widget/assets/WalletConnect-logo-black.svg +0 -14
  521. package/src/widget/assets/WalletConnect-logo-blue.svg +0 -14
  522. package/src/widget/assets/WalletConnect-logo-white.svg +0 -14
  523. package/src/widget/assets/WalletConnect-logo.svg +0 -40
  524. package/src/widget/assets/aave.svg +0 -14
  525. package/src/widget/assets/morpho.svg +0 -14
  526. package/src/widget/compiled.css +0 -26
  527. package/src/widget/components/AccountActionsDropdown.tsx +0 -31
  528. package/src/widget/components/AccountIntentTransactionHistory.tsx +0 -756
  529. package/src/widget/components/AccountIntentTransactionHistoryButton.tsx +0 -34
  530. package/src/widget/components/AccountSettings.tsx +0 -168
  531. package/src/widget/components/AddressOrEnsName.tsx +0 -24
  532. package/src/widget/components/AddressWalletIcon.tsx +0 -49
  533. package/src/widget/components/AllChainsIcon.tsx +0 -54
  534. package/src/widget/components/ChainFilterDropdown.tsx +0 -220
  535. package/src/widget/components/ChainImage.tsx +0 -40
  536. package/src/widget/components/ChainList.tsx +0 -158
  537. package/src/widget/components/ClassicSwap.tsx +0 -1761
  538. package/src/widget/components/ConfigDisplay.tsx +0 -158
  539. package/src/widget/components/ConnectWallet.tsx +0 -566
  540. package/src/widget/components/ConnectedWallets.tsx +0 -414
  541. package/src/widget/components/CopyButton.tsx +0 -108
  542. package/src/widget/components/CountryFilterDropdown.tsx +0 -179
  543. package/src/widget/components/DebugMenu.tsx +0 -50
  544. package/src/widget/components/DebugScreensList.tsx +0 -70
  545. package/src/widget/components/DebugToast.tsx +0 -63
  546. package/src/widget/components/DepositTracker.tsx +0 -326
  547. package/src/widget/components/DirectTransfer.tsx +0 -305
  548. package/src/widget/components/Disconnect.tsx +0 -68
  549. package/src/widget/components/DynamicInputStyles.tsx +0 -121
  550. package/src/widget/components/DynamicSizeInputField.tsx +0 -245
  551. package/src/widget/components/ENSAvatar.tsx +0 -33
  552. package/src/widget/components/Earn.tsx +0 -160
  553. package/src/widget/components/EarnPools.tsx +0 -417
  554. package/src/widget/components/EarnPoolsFilters.tsx +0 -165
  555. package/src/widget/components/ErrorAnimationIcon.tsx +0 -130
  556. package/src/widget/components/ErrorDisplay.tsx +0 -152
  557. package/src/widget/components/ExecutingIntentsBadge.tsx +0 -24
  558. package/src/widget/components/ExecutionStatusBadge.tsx +0 -53
  559. package/src/widget/components/FeeBreakdown.tsx +0 -155
  560. package/src/widget/components/FeeOption.tsx +0 -170
  561. package/src/widget/components/FeeOptions.tsx +0 -247
  562. package/src/widget/components/FiatSelector.tsx +0 -308
  563. package/src/widget/components/FiatSelectorButton.tsx +0 -68
  564. package/src/widget/components/Footer.tsx +0 -67
  565. package/src/widget/components/Fund.tsx +0 -2463
  566. package/src/widget/components/FundMethods.tsx +0 -423
  567. package/src/widget/components/FundWalletSelection.tsx +0 -60
  568. package/src/widget/components/FundingMethodSelectorButton.tsx +0 -106
  569. package/src/widget/components/GreenCheckAnimation.tsx +0 -119
  570. package/src/widget/components/HideBalances.tsx +0 -24
  571. package/src/widget/components/HighPriceImpactBlock.tsx +0 -44
  572. package/src/widget/components/HookModalContent.tsx +0 -377
  573. package/src/widget/components/Identicon.tsx +0 -228
  574. package/src/widget/components/LoadingSpinner.tsx +0 -9
  575. package/src/widget/components/MeldForm.tsx +0 -780
  576. package/src/widget/components/MeldHistory.tsx +0 -433
  577. package/src/widget/components/MeldStepsFlow.tsx +0 -1651
  578. package/src/widget/components/MeldTransactionStatus.tsx +0 -255
  579. package/src/widget/components/MeshExchangeSelection.tsx +0 -218
  580. package/src/widget/components/Modal.tsx +0 -86
  581. package/src/widget/components/OFTProgressBar.tsx +0 -89
  582. package/src/widget/components/OnRampProviderSelector.tsx +0 -263
  583. package/src/widget/components/OnrampDeposit.tsx +0 -122
  584. package/src/widget/components/OnrampErrorScreen.tsx +0 -163
  585. package/src/widget/components/OnrampHistoryRow.tsx +0 -321
  586. package/src/widget/components/OnrampPaymentMethods.tsx +0 -81
  587. package/src/widget/components/OnrampProviderConfirmation.tsx +0 -1060
  588. package/src/widget/components/OriginSelectionAmount.tsx +0 -144
  589. package/src/widget/components/OriginTransferInformation.tsx +0 -59
  590. package/src/widget/components/Pay.tsx +0 -1165
  591. package/src/widget/components/PaymentMethods.tsx +0 -198
  592. package/src/widget/components/PercentageMaxButtons.tsx +0 -112
  593. package/src/widget/components/PoolDeposit.tsx +0 -642
  594. package/src/widget/components/PoolWithdraw.tsx +0 -761
  595. package/src/widget/components/PriceImpactWarning.tsx +0 -87
  596. package/src/widget/components/QRCodeOptions.tsx +0 -65
  597. package/src/widget/components/QRCodeWalletSelect.tsx +0 -80
  598. package/src/widget/components/QrCode.tsx +0 -216
  599. package/src/widget/components/QuoteDetails.tsx +0 -1275
  600. package/src/widget/components/Receipt.tsx +0 -673
  601. package/src/widget/components/ReceiptRecoverableFunds.tsx +0 -135
  602. package/src/widget/components/RecentTokens.tsx +0 -66
  603. package/src/widget/components/RecipientSelectorButton.tsx +0 -50
  604. package/src/widget/components/Recipients.tsx +0 -413
  605. package/src/widget/components/RefundWarning.tsx +0 -61
  606. package/src/widget/components/RequiredPropsError.tsx +0 -33
  607. package/src/widget/components/ScreenHeader.tsx +0 -123
  608. package/src/widget/components/SearchInputField.tsx +0 -99
  609. package/src/widget/components/SessionTimeoutScreen.tsx +0 -103
  610. package/src/widget/components/ShadowPortal.tsx +0 -99
  611. package/src/widget/components/ShadowRootContext.tsx +0 -17
  612. package/src/widget/components/SimpleRecipientInputScreen.tsx +0 -91
  613. package/src/widget/components/SlippageToleranceSettings.tsx +0 -279
  614. package/src/widget/components/Swap.tsx +0 -50
  615. package/src/widget/components/SwapDisplay.tsx +0 -68
  616. package/src/widget/components/SwapSettings.tsx +0 -52
  617. package/src/widget/components/ThemeProvider.tsx +0 -115
  618. package/src/widget/components/ThemeSyncer.tsx +0 -47
  619. package/src/widget/components/Toast.tsx +0 -336
  620. package/src/widget/components/TokenDisplayNonSelectable.tsx +0 -40
  621. package/src/widget/components/TokenImage.tsx +0 -156
  622. package/src/widget/components/TokenList.tsx +0 -107
  623. package/src/widget/components/TokenSelector.tsx +0 -807
  624. package/src/widget/components/TokenSelectorButton.tsx +0 -123
  625. package/src/widget/components/TokenSkeleton.tsx +0 -53
  626. package/src/widget/components/Tooltip.tsx +0 -64
  627. package/src/widget/components/TrailsHookModal.tsx +0 -107
  628. package/src/widget/components/TransactionDetails.tsx +0 -534
  629. package/src/widget/components/TransactionHistoryItem.tsx +0 -767
  630. package/src/widget/components/TransferPendingVertical.tsx +0 -591
  631. package/src/widget/components/TruncatedAddress.tsx +0 -68
  632. package/src/widget/components/TruncatedTransactionHash.tsx +0 -74
  633. package/src/widget/components/UserPreferences.tsx +0 -570
  634. package/src/widget/components/WaasFeeOptions.tsx +0 -588
  635. package/src/widget/components/WalletConfirmation.tsx +0 -220
  636. package/src/widget/components/WalletConnect.tsx +0 -348
  637. package/src/widget/components/WalletConnectionPending.tsx +0 -178
  638. package/src/widget/components/WalletImage.tsx +0 -52
  639. package/src/widget/components/WalletList.tsx +0 -125
  640. package/src/widget/components/WidgetProviders.tsx +0 -82
  641. package/src/widget/components/Withdraw.tsx +0 -1106
  642. package/src/widget/components/YellowWarningAnimation.tsx +0 -146
  643. package/src/widget/hooks/useAddressWalletIcon.ts +0 -55
  644. package/src/widget/hooks/useAmountUsd.ts +0 -44
  645. package/src/widget/hooks/useBalanceVisible.tsx +0 -95
  646. package/src/widget/hooks/useChainFilter.tsx +0 -56
  647. package/src/widget/hooks/useCheckout.ts +0 -361
  648. package/src/widget/hooks/useClickTracking.ts +0 -74
  649. package/src/widget/hooks/useCombinedHistory.ts +0 -420
  650. package/src/widget/hooks/useConnector.tsx +0 -24
  651. package/src/widget/hooks/useCustomTokenSearch.tsx +0 -369
  652. package/src/widget/hooks/useDebounce.ts +0 -25
  653. package/src/widget/hooks/useDebugScreens.ts +0 -600
  654. package/src/widget/hooks/useDefaultDestinationToken.tsx +0 -179
  655. package/src/widget/hooks/useDefaultOriginToken.tsx +0 -407
  656. package/src/widget/hooks/useDepositMonitor.ts +0 -118
  657. package/src/widget/hooks/useDestinationSelectedToken.tsx +0 -310
  658. package/src/widget/hooks/useDisplayCurrencyPreference.tsx +0 -145
  659. package/src/widget/hooks/useEarnPool.tsx +0 -36
  660. package/src/widget/hooks/useExecutingIntentsCount.ts +0 -78
  661. package/src/widget/hooks/useExternalFundingReceiptSync.ts +0 -79
  662. package/src/widget/hooks/useFiatOnRampCurrencies.ts +0 -46
  663. package/src/widget/hooks/useFiatSelectedCurrency.tsx +0 -123
  664. package/src/widget/hooks/useGetIntent.ts +0 -54
  665. package/src/widget/hooks/useIntentReceiptBalances.ts +0 -141
  666. package/src/widget/hooks/useIntentTransactionHistory.ts +0 -790
  667. package/src/widget/hooks/useIsConnectedWalletSmartContract.ts +0 -43
  668. package/src/widget/hooks/useIsMobile.tsx +0 -50
  669. package/src/widget/hooks/useIsSequenceWallet.ts +0 -17
  670. package/src/widget/hooks/useLocalePreference.tsx +0 -187
  671. package/src/widget/hooks/useMeldTransactionHistory.ts +0 -184
  672. package/src/widget/hooks/useMeldTransactionStatus.ts +0 -707
  673. package/src/widget/hooks/useOnRampCountryDefaults.ts +0 -57
  674. package/src/widget/hooks/useOnRampPaymentMethods.ts +0 -72
  675. package/src/widget/hooks/useOnRampProviderWidget.ts +0 -184
  676. package/src/widget/hooks/useOnRampQuote.ts +0 -340
  677. package/src/widget/hooks/useOnRampTransactionStatus.ts +0 -196
  678. package/src/widget/hooks/useOriginSelectedToken.tsx +0 -253
  679. package/src/widget/hooks/usePayMessage.tsx +0 -496
  680. package/src/widget/hooks/usePriceImpactWarning.ts +0 -17
  681. package/src/widget/hooks/useQuote.ts +0 -1239
  682. package/src/widget/hooks/useRecentTokens.ts +0 -159
  683. package/src/widget/hooks/useRecipients.ts +0 -167
  684. package/src/widget/hooks/useScreenTracking.ts +0 -14
  685. package/src/widget/hooks/useSelectedFeeOption.tsx +0 -323
  686. package/src/widget/hooks/useSelectedFundMethod.tsx +0 -93
  687. package/src/widget/hooks/useSelectedRecipient.tsx +0 -75
  688. package/src/widget/hooks/useSendForm.ts +0 -1389
  689. package/src/widget/hooks/useSwapAmount.tsx +0 -50
  690. package/src/widget/hooks/useSwapState.tsx +0 -121
  691. package/src/widget/hooks/useTargetAmount.ts +0 -26
  692. package/src/widget/hooks/useTheme.tsx +0 -80
  693. package/src/widget/hooks/useTokenList.ts +0 -1168
  694. package/src/widget/hooks/useTrailsSendTransaction.ts +0 -987
  695. package/src/widget/hooks/useViewManager.tsx +0 -506
  696. package/src/widget/hooks/useWalletConnectUri.tsx +0 -307
  697. package/src/widget/hooks/useWalletConnectionContext.tsx +0 -128
  698. package/src/widget/hooks/useWidgetProps.tsx +0 -33
  699. package/src/widget/index.css +0 -686
  700. package/src/widget/index.tsx +0 -28
  701. package/src/widget/providers/TrailsModalProvider.tsx +0 -238
  702. package/src/widget/providers/TrailsProvider.tsx +0 -155
  703. package/src/widget/providers/UserActivityProvider.tsx +0 -78
  704. package/src/widget/providers/WidgetProviderTree.tsx +0 -90
  705. package/src/widget/styles.ts +0 -26
  706. package/src/widget/types/analytics.ts +0 -22
  707. package/src/widget/types/commonProps.ts +0 -56
  708. package/src/widget/types/svg.d.ts +0 -8
  709. package/src/widget/types.ts +0 -51
  710. package/src/widget/utils/countryUtils.ts +0 -89
  711. package/src/widget/utils/createWagmiConfig.ts +0 -43
  712. package/src/widget/utils/forexRateStore.ts +0 -120
  713. package/src/widget/utils/fundMethodSwitchState.ts +0 -27
  714. package/src/widget/utils/historyFilters.ts +0 -157
  715. package/src/widget/utils/historyUtils.ts +0 -101
  716. package/src/widget/utils/localeStore.ts +0 -68
  717. package/src/widget/utils/meldProviderUtils.ts +0 -26
  718. package/src/widget/utils/meshSupportedTokens.ts +0 -28
  719. package/src/widget/utils/onrampConfig.ts +0 -15
  720. package/src/widget/utils/statusLabel.ts +0 -3
  721. package/src/widget/utils/tokens.ts +0 -138
  722. package/src/widget/utils/trailsOnrampConfig.ts +0 -39
  723. package/src/widget/utils/transactionFailure.ts +0 -52
  724. package/src/widget/utils/viewManagerGuards.ts +0 -49
  725. package/src/widget/utils/windowUtils.ts +0 -138
  726. package/src/widget/widget.tsx +0 -3400
  727. /package/dist/{widget/hooks → hooks}/useAddressWalletIcon.d.ts +0 -0
  728. /package/dist/{widget/hooks → hooks}/useAmountUsd.d.ts +0 -0
  729. /package/dist/{widget/hooks → hooks}/useBalanceVisible.d.ts +0 -0
  730. /package/dist/{widget/hooks → hooks}/useChainFilter.d.ts +0 -0
  731. /package/dist/{widget/hooks → hooks}/useClickTracking.d.ts +0 -0
  732. /package/dist/{widget/hooks → hooks}/useConnector.d.ts +0 -0
  733. /package/dist/{widget/hooks → hooks}/useDebounce.d.ts +0 -0
  734. /package/dist/{widget/hooks → hooks}/useDepositMonitor.d.ts +0 -0
  735. /package/dist/{widget/hooks → hooks}/useDisplayCurrencyPreference.d.ts +0 -0
  736. /package/dist/{widget/hooks → hooks}/useExecutingIntentsCount.d.ts +0 -0
  737. /package/dist/{widget/hooks → hooks}/useFiatSelectedCurrency.d.ts +0 -0
  738. /package/dist/{widget/hooks → hooks}/useGetIntent.d.ts +0 -0
  739. /package/dist/{widget/hooks → hooks}/useIsMobile.d.ts +0 -0
  740. /package/dist/{widget/hooks → hooks}/useIsSequenceWallet.d.ts +0 -0
  741. /package/dist/{widget/hooks → hooks}/useLocalePreference.d.ts +0 -0
  742. /package/dist/{widget/hooks → hooks}/useMeldTransactionHistory.d.ts +0 -0
  743. /package/dist/{widget/hooks → hooks}/useMeldTransactionStatus.d.ts +0 -0
  744. /package/dist/{widget/hooks → hooks}/useOnRampCountryDefaults.d.ts +0 -0
  745. /package/dist/{widget/hooks → hooks}/usePayMessage.d.ts +0 -0
  746. /package/dist/{widget/hooks → hooks}/usePriceImpactWarning.d.ts +0 -0
  747. /package/dist/{widget/hooks → hooks}/useRecipients.d.ts +0 -0
  748. /package/dist/{widget/hooks → hooks}/useSelectedFeeOption.d.ts +0 -0
  749. /package/dist/{widget/hooks → hooks}/useSelectedRecipient.d.ts +0 -0
  750. /package/dist/{widget/hooks → hooks}/useSwapAmount.d.ts +0 -0
  751. /package/dist/{widget/hooks → hooks}/useTargetAmount.d.ts +0 -0
  752. /package/dist/{widget/hooks → hooks}/useTheme.d.ts +0 -0
  753. /package/dist/{widget/hooks → hooks}/useWalletConnectionContext.d.ts +0 -0
@@ -1,1389 +0,0 @@
1
- import type { TokenPrice, FeeOption, RouteProvider } from "@0xtrails/api"
2
- import { JsonEncode } from "@0xtrails/api"
3
- import type React from "react"
4
- import { useCallback, useEffect, useMemo, useState, useRef } from "react"
5
- import {
6
- type Account,
7
- type Address,
8
- getAddress,
9
- isAddress,
10
- parseUnits,
11
- type WalletClient,
12
- } from "viem"
13
- import { getChainInfo } from "../../chains.js"
14
- import { useSupportedChains } from "../../query/chains.hooks.js"
15
- import { getFullErrorMessage, getIsNetworkError } from "../../error.js"
16
- import { TradeType, type PrepareSendQuote } from "../../prepareSend.js"
17
- import type { TransactionState } from "../../transactions.js"
18
- import { useTokenPrices } from "../../query/price.hooks.js"
19
- import { normalizeNumber } from "../../utils/format.js"
20
- import {
21
- formatRawAmount,
22
- formatUsdAmountDisplay,
23
- formatUsdAmountLocaleDisplay,
24
- formatAmount,
25
- formatAmountDisplay,
26
- } from "../../utils/format.js"
27
- import { useTokenBalances } from "../../query/balance.hooks.js"
28
- import { useAccountTokenBalanceOnchain } from "../../query/balance.hooks.js"
29
- import type { Token } from "../../tokens.js"
30
- import {
31
- useSupportedTokens,
32
- useTokenAddress,
33
- useTokenInfo,
34
- } from "../../tokens.js"
35
- import {
36
- findSupportedTokenByAddressOrSymbol,
37
- findFirstSupportedTokenOnChain,
38
- } from "../utils/tokens.js"
39
- import type { CheckoutOnHandlers } from "./useCheckout.js"
40
- import { useResolveEnsAddress } from "../../ens.js"
41
- import { logger } from "../../logger.js"
42
- import { useTrails } from "../providers/TrailsProvider.js"
43
- import {
44
- useSelectedFeeOption,
45
- type ProcessedFeeOption,
46
- } from "./useSelectedFeeOption.js"
47
- import { useWidgetProps } from "./useWidgetProps.js"
48
- import { useCustomTokens } from "../../customTokens.js"
49
- import { useQuote } from "./useQuote.js"
50
- import type { OnrampTrackingData } from "../types/analytics.js"
51
- import type { FundMethod } from "../../transactionIntent/types.js"
52
- import { isExternalFundingMethod } from "../../transactionIntent/types.js"
53
- import { addressEqual } from "../../utils/address.js"
54
-
55
- type ChainInfo = {
56
- id: number
57
- name: string
58
- imageUrl?: string
59
- }
60
-
61
- type PaymasterUrl = {
62
- chainId: number
63
- url: string
64
- }
65
-
66
- export type OnCompleteProps = {
67
- transactionStates: TransactionState[]
68
- }
69
-
70
- export type UseSendProps = {
71
- account?: Account
72
- toAmount?: string
73
- fromAmount?: string
74
- toRecipient?: string
75
- toChainId?: number
76
- toToken?: string
77
- toApprove?: string
78
- toCalldata?: string
79
- refundAddress?: string
80
- walletClient?: WalletClient
81
- onTransactionStateChange: (transactionStates: TransactionState[]) => void
82
- onError: (error: Error | string | null) => void
83
- onWaitingForWalletConfirm: (
84
- quote: PrepareSendQuote,
85
- sendFn?:
86
- | ((options?: {
87
- selectedFeeOption?: FeeOption | null
88
- onOriginSend?: () => void
89
- depositTransactionHash?: string
90
- skipCommit?: boolean
91
- }) => Promise<any>)
92
- | null,
93
- ) => void
94
- onWaitingForOnrampConfirm?: (quote: PrepareSendQuote) => void
95
- paymasterUrls?: PaymasterUrl[]
96
- onSend: (amount: string, recipient: string) => void
97
- onConfirm: () => void
98
- onComplete: (result: OnCompleteProps) => void
99
- selectedToken?: Token
100
- setWalletConfirmRetryHandler: (handler: () => Promise<void>) => void
101
- tradeType?: TradeType
102
- swapProvider?: string
103
- bridgeProvider?: string
104
- swapProviderFallback?: boolean
105
- bridgeProviderFallback?: boolean
106
- fundMethod?: FundMethod
107
- mode?: "pay" | "fund" | "earn" | "swap" | "withdraw"
108
- checkoutOnHandlers?: CheckoutOnHandlers
109
- refetchTrigger?: number
110
- onrampTrackingData?: OnrampTrackingData | null
111
- skipFeeBalanceFetch?: boolean // Skip fee balance fetching for onramp/direct-transfer modes
112
- onNavigateToOnrampMesh?: (props: {
113
- toTokenSymbol?: string
114
- toTokenAmount?: string
115
- toChainId?: number
116
- toRecipientAddress?: string
117
- toAmountUsd?: number
118
- }) => void
119
- }
120
-
121
- export type UseSendReturn = {
122
- amount: string
123
- amountRaw: string
124
- amountUsdDisplay: string
125
- amountUsdLocaleDisplay: string
126
- balanceUsdDisplay: string
127
- balanceLocaleDisplay: string
128
- balanceUsdLocaleDisplay: string
129
- chainInfo: ChainInfo | null
130
- error: string | null
131
- toChainId: number | undefined
132
- balanceFormatted: string | undefined
133
- balanceRaw: string
134
- tokenDecimals: number
135
- handleRecipientInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void
136
- sendFn?:
137
- | ((options?: {
138
- selectedFeeOption?: FeeOption | null
139
- onOriginSend?: () => void
140
- depositTransactionHash?: string
141
- skipCommit?: boolean
142
- }) => Promise<any>)
143
- | null
144
- handleSubmit: (e: React.FormEvent) => Promise<void>
145
- isChainDropdownOpen: boolean
146
- isSubmitting: boolean
147
- isLoadingQuote: boolean
148
- isTokenDropdownOpen: boolean
149
- recipient: string
150
- recipientInput: string
151
- selectedDestinationChain: ChainInfo | null
152
- selectedDestToken: Token | null
153
- setAmount: (amount: string) => void
154
- setRecipientInput: (recipientInput: string) => void
155
- setSelectedDestinationChain: (chain: ChainInfo) => void
156
- setSelectedDestToken: (token: Token | null) => void
157
- setSelectedFeeOption: (token: FeeOption | null) => void
158
- processedFeeOptions: ProcessedFeeOption[]
159
- supportedTokens: Token[]
160
- supportedChains: ChainInfo[]
161
- ensAddress: string | null
162
- isWaitingForWalletConfirm: boolean
163
- buttonText: string
164
- isValidRecipient: boolean
165
- destTokenPrices: TokenPrice[] | null
166
- sourceTokenPrices: TokenPrice[] | null
167
- selectedToken?: Token
168
- selectedFeeOption: FeeOption | null
169
- setIsChainDropdownOpen: (isOpen: boolean) => void
170
- setIsTokenDropdownOpen: (isOpen: boolean) => void
171
- toAmountFormatted: string
172
- destinationTokenAddress: string | null
173
- isValidCustomToken: boolean
174
- prepareSendQuote: PrepareSendQuote | null
175
- toAmountDisplay: string
176
- quoteError: string | null
177
- quoteErrorPrettified: string | null
178
- isRecipientContract: boolean
179
- isSenderContractOnOrigin: boolean
180
- isSenderContractOnDestination: boolean
181
- isLoadingBalance: boolean
182
- }
183
-
184
- export function useSendForm({
185
- account,
186
- toAmount, // Custom specified amount
187
- toRecipient, // Custom specified recipient
188
- toChainId, // Custom specified destination chain id
189
- toToken, // Custom specified destination token address or symbol
190
- toApprove, // Custom specified destination approve address
191
- toCalldata, // Custom specified destination calldata
192
- walletClient,
193
- onTransactionStateChange,
194
- onError,
195
- onWaitingForWalletConfirm,
196
- paymasterUrls,
197
- selectedToken,
198
- onSend,
199
- onConfirm,
200
- onComplete,
201
- setWalletConfirmRetryHandler,
202
- tradeType = TradeType.EXACT_OUTPUT,
203
- swapProvider,
204
- bridgeProvider,
205
- swapProviderFallback,
206
- bridgeProviderFallback,
207
- fundMethod,
208
- mode,
209
- checkoutOnHandlers,
210
- fromAmount,
211
- onrampTrackingData,
212
- skipFeeBalanceFetch = false,
213
- onNavigateToOnrampMesh,
214
- }: UseSendProps): UseSendReturn {
215
- // Read isSmartWallet from widget props
216
- const { isSmartWallet } = useWidgetProps()
217
-
218
- // Note: swapProvider and bridgeProvider auto-detection for etherlink is now handled in useQuote
219
-
220
- const [amount, setAmount] = useState(
221
- tradeType === TradeType.EXACT_INPUT ? (fromAmount ?? "") : (toAmount ?? ""),
222
- )
223
- const [recipientInput, setRecipientInput] = useState(toRecipient ?? "")
224
- const [error, setError] = useState<string | null>(null)
225
- const { data: supportedChains = [] } = useSupportedChains()
226
- const { ensAddress } = useResolveEnsAddress({
227
- textInput: recipientInput,
228
- })
229
-
230
- const recipient = ensAddress || recipientInput
231
-
232
- useEffect(() => {
233
- if (onError) {
234
- onError(error)
235
- }
236
- }, [error, onError])
237
-
238
- const handleRecipientInputChange = (
239
- e: React.ChangeEvent<HTMLInputElement>,
240
- ) => {
241
- setRecipientInput(e.target.value.trim())
242
- }
243
-
244
- const [selectedDestinationChain, setSelectedDestinationChain] =
245
- useState<ChainInfo>(() => {
246
- const chain = supportedChains.find((chain) => chain.id === toChainId)
247
- if (chain) {
248
- return chain
249
- }
250
- return supportedChains[0]!
251
- })
252
-
253
- // Fetch all supported tokens (without chainId filter) to reuse for both filtering and official checks
254
- const { supportedTokens: allSupportedTokens, isLoadingTokens } =
255
- useSupportedTokens()
256
-
257
- // Filter tokens by destination chain where needed
258
- const supportedTokens = useMemo(() => {
259
- if (!selectedDestinationChain?.id) return allSupportedTokens
260
- return allSupportedTokens.filter(
261
- (token) => token.chainId === selectedDestinationChain.id,
262
- )
263
- }, [allSupportedTokens, selectedDestinationChain?.id])
264
-
265
- // Note: Contract detection is now handled in useQuote
266
-
267
- const isCustomToken = toToken?.startsWith("0x") ?? false
268
-
269
- const { addCustomToken } = useCustomTokens()
270
-
271
- const {
272
- tokenInfo: customTokenInfo,
273
- isLoading: isLoadingCustomToken,
274
- error: errorCustomToken,
275
- } = useTokenInfo({
276
- address: isCustomToken ? toToken! : "",
277
- chainId: toChainId,
278
- })
279
-
280
- const isValidCustomToken = useMemo(() => {
281
- if (!isCustomToken) {
282
- return true
283
- }
284
-
285
- return Boolean(
286
- isCustomToken &&
287
- !errorCustomToken &&
288
- !isLoadingCustomToken &&
289
- !!customTokenInfo,
290
- )
291
- }, [isCustomToken, errorCustomToken, isLoadingCustomToken, customTokenInfo])
292
-
293
- // Save custom token to storage when successfully fetched via toToken prop
294
- // Only save if it doesn't exist in the base supported tokens list
295
- useEffect(() => {
296
- if (
297
- customTokenInfo &&
298
- !errorCustomToken &&
299
- isCustomToken &&
300
- toChainId &&
301
- toToken &&
302
- customTokenInfo.symbol &&
303
- customTokenInfo.name &&
304
- customTokenInfo.decimals !== undefined
305
- ) {
306
- // Check if token already exists in official supported tokens (before merging)
307
- // Filter allSupportedTokens by chainId for the check
308
- const existsInOfficialSupportedTokens = allSupportedTokens.some(
309
- (token: Token) =>
310
- token.chainId === toChainId &&
311
- addressEqual(token.contractAddress, toToken),
312
- )
313
-
314
- // Only add to custom tokens if it's not an official supported token
315
- if (!existsInOfficialSupportedTokens) {
316
- const chainInfo = getChainInfo(toChainId)
317
- const chainName = chainInfo?.name || `Chain ${toChainId}`
318
-
319
- // Convert tokenInfo to Token format, then to SupportedToken for storage
320
- // isCustomToken will be set to true by addCustomToken
321
- const customToken: Token = {
322
- tokenId: `${toChainId}-${toToken.toLowerCase()}`,
323
- chainId: toChainId,
324
- contractAddress: toToken,
325
- symbol: customTokenInfo.symbol,
326
- name: customTokenInfo.name,
327
- decimals: customTokenInfo.decimals,
328
- chainName,
329
- imageUrl: customTokenInfo.imageUrl || "",
330
- isCustomToken: true,
331
- }
332
- addCustomToken(customToken)
333
- logger.console.log(
334
- "[trails-sdk] Added custom token from toToken prop to storage:",
335
- customToken,
336
- )
337
- } else {
338
- logger.console.log(
339
- "[trails-sdk] Token from toToken prop already exists in supported tokens, skipping custom token addition:",
340
- { toToken, toChainId },
341
- )
342
- }
343
- }
344
- }, [
345
- customTokenInfo,
346
- errorCustomToken,
347
- isCustomToken,
348
- toChainId,
349
- toToken,
350
- addCustomToken,
351
- allSupportedTokens,
352
- ])
353
-
354
- useEffect(() => {
355
- if (isCustomToken && customTokenInfo && !isLoadingCustomToken) {
356
- // customTokenInfo is already Token from getTokenInfo
357
- setSelectedDestToken(customTokenInfo as Token)
358
- }
359
- }, [customTokenInfo, isCustomToken, isLoadingCustomToken])
360
-
361
- useEffect(() => {
362
- if (isCustomToken && errorCustomToken && !isLoadingCustomToken) {
363
- logger.console.error("[trails-sdk] errorCustomToken", errorCustomToken)
364
-
365
- if (getIsNetworkError(errorCustomToken)) {
366
- setError(
367
- "Failed to verify token address. Please check your network connection and try again.",
368
- )
369
- } else {
370
- setError(
371
- `Invalid custom toToken address (${toToken}). The address may not be a valid token on this chain.`,
372
- )
373
- }
374
- }
375
- }, [errorCustomToken, isCustomToken, isLoadingCustomToken, toToken])
376
-
377
- const defaultDestToken = useMemo(() => {
378
- if (selectedDestinationChain) {
379
- return (
380
- findFirstSupportedTokenOnChain(
381
- supportedTokens,
382
- selectedDestinationChain.id,
383
- ) || null
384
- )
385
- }
386
- return supportedTokens?.[0] || null
387
- }, [supportedTokens, selectedDestinationChain])
388
-
389
- const [isChainDropdownOpen, setIsChainDropdownOpen] = useState(false)
390
- const [isTokenDropdownOpen, setIsTokenDropdownOpen] = useState(false)
391
- const [selectedDestToken, setSelectedDestToken] = useState<Token | null>(
392
- () => {
393
- let token = defaultDestToken
394
- if (toToken && !isCustomToken) {
395
- token =
396
- findSupportedTokenByAddressOrSymbol(
397
- supportedTokens,
398
- toToken,
399
- toChainId || selectedDestinationChain?.id,
400
- ) || null
401
- }
402
-
403
- return token
404
- },
405
- )
406
-
407
- useEffect(() => {
408
- if (!selectedDestToken && defaultDestToken) {
409
- setSelectedDestToken(defaultDestToken)
410
- }
411
- }, [selectedDestToken, defaultDestToken])
412
-
413
- // Auto-derive destination chain from destination token.
414
- // This removes the need for external chain-sync effects in ClassicSwap/Fund/Withdraw.
415
- useEffect(() => {
416
- if (selectedDestToken?.chainId) {
417
- const chainInfo = getChainInfo(selectedDestToken.chainId)
418
- if (chainInfo) {
419
- setSelectedDestinationChain(chainInfo)
420
- }
421
- }
422
- }, [selectedDestToken])
423
-
424
- // Verify that decimals are stable and loaded before calculating amountRaw
425
- const isDecimalsVerified = useMemo(() => {
426
- // Wait for supported tokens to load first
427
- if (isLoadingTokens) return false
428
-
429
- // Prevents using defaultDestToken (e.g., ETH with 18 decimals) before the actual token info loads
430
- if (isCustomToken && isLoadingCustomToken) return false
431
-
432
- if (tradeType === TradeType.EXACT_OUTPUT) {
433
- // For EXACT_OUTPUT, we need destination token decimals
434
- // Also verify that selectedDestToken matches the expected toToken address (for custom tokens)
435
- const hasValidDecimals =
436
- selectedDestToken?.contractAddress !== undefined &&
437
- selectedDestToken?.decimals !== undefined &&
438
- selectedDestToken?.chainId === selectedDestinationChain?.id
439
-
440
- // If toToken is specified as an address, ensure selectedDestToken matches it
441
- if (isCustomToken && toToken && hasValidDecimals) {
442
- return (
443
- selectedDestToken?.contractAddress?.toLowerCase() ===
444
- toToken.toLowerCase()
445
- )
446
- }
447
-
448
- return hasValidDecimals
449
- }
450
- // For EXACT_INPUT, we need source token decimals
451
- return selectedToken?.decimals !== undefined
452
- }, [
453
- isLoadingTokens,
454
- isCustomToken,
455
- isLoadingCustomToken,
456
- toToken,
457
- selectedDestToken?.contractAddress,
458
- selectedDestToken?.decimals,
459
- selectedDestToken?.chainId,
460
- selectedDestinationChain?.id,
461
- selectedToken?.decimals,
462
- tradeType,
463
- ])
464
-
465
- // These are handled internally by useQuote via TrailsProvider context
466
- const {
467
- trailsApiKey: _trailsApiKey,
468
- sequenceIndexerUrl: _sequenceIndexerUrl,
469
- } = useTrails()
470
-
471
- // Get user's token balances for fee option validation
472
- // Skip fetching entirely for onramp/direct-transfer modes where fee options aren't shown
473
- const { sortedTokens: feeTokenBalances } = useTokenBalances(
474
- skipFeeBalanceFetch ? null : (account?.address as Address | null),
475
- undefined,
476
- { refetchInterval: false },
477
- )
478
-
479
- // Convert to TokenWithBalance format for setFeeOptions
480
- const tokensWithBalance = useMemo(() => {
481
- if (!feeTokenBalances) return []
482
- return feeTokenBalances.map((token) => ({
483
- chainId: token.chainId || 0,
484
- contractAddress: token.contractAddress,
485
- balance: token.balance,
486
- imageUrl: token.imageUrl,
487
- }))
488
- }, [feeTokenBalances])
489
-
490
- // Use ref to store latest tokensWithBalance without triggering re-renders
491
- const tokensWithBalanceRef = useRef(tokensWithBalance)
492
- tokensWithBalanceRef.current = tokensWithBalance
493
-
494
- const destTokenAddress = useTokenAddress({
495
- chainId: selectedDestinationChain?.id,
496
- tokenSymbol: selectedDestToken?.symbol,
497
- })
498
-
499
- // Fetch both source and destination prices in a single call
500
- // Skip only for onramp-meld mode where prices aren't needed
501
- // (for onramp-meld, source token is always USDC and amount comes from Meld quote)
502
- const combinedTokenPricesInput = useMemo(() => {
503
- if (fundMethod === "onramp-meld") {
504
- return []
505
- }
506
-
507
- const inputs: Array<{
508
- tokenSymbol: string
509
- tokenAddress: string
510
- chainId: number
511
- }> = []
512
-
513
- // Add destination token
514
- if (selectedDestToken && destTokenAddress && selectedDestinationChain?.id) {
515
- inputs.push({
516
- tokenSymbol: selectedDestToken.symbol,
517
- tokenAddress: destTokenAddress,
518
- chainId: selectedDestinationChain.id,
519
- })
520
- }
521
-
522
- // Add source token (if different from destination)
523
- if (selectedToken) {
524
- const isDuplicate =
525
- selectedDestToken &&
526
- destTokenAddress &&
527
- addressEqual(selectedToken.contractAddress, destTokenAddress) &&
528
- selectedToken.chainId === selectedDestinationChain?.id
529
-
530
- if (!isDuplicate) {
531
- inputs.push({
532
- tokenSymbol: selectedToken.symbol,
533
- tokenAddress: selectedToken.contractAddress,
534
- chainId: selectedToken.chainId || 69,
535
- })
536
- }
537
- }
538
-
539
- return inputs
540
- }, [
541
- fundMethod,
542
- selectedDestToken,
543
- destTokenAddress,
544
- selectedDestinationChain?.id,
545
- selectedToken,
546
- ])
547
-
548
- const { tokenPrices: allTokenPrices } = useTokenPrices(
549
- combinedTokenPricesInput,
550
- )
551
-
552
- // Extract destination token price from combined results
553
- const destTokenPrices = useMemo(() => {
554
- if (!allTokenPrices || !destTokenAddress || !selectedDestinationChain?.id)
555
- return null
556
- return allTokenPrices.filter(
557
- (p) =>
558
- p.token?.tokenAddress?.toLowerCase() ===
559
- destTokenAddress.toLowerCase() &&
560
- p.token?.chainId === selectedDestinationChain.id,
561
- )
562
- }, [allTokenPrices, destTokenAddress, selectedDestinationChain?.id])
563
-
564
- // Extract source token price from combined results
565
- const sourceTokenPrices = useMemo(() => {
566
- if (!allTokenPrices || !selectedToken) return null
567
- return allTokenPrices.filter(
568
- (p) =>
569
- p.token?.tokenAddress?.toLowerCase() ===
570
- selectedToken.contractAddress.toLowerCase() &&
571
- p.token?.chainId === selectedToken.chainId,
572
- )
573
- }, [allTokenPrices, selectedToken])
574
-
575
- // Update selectedChain when toChainId prop changes
576
- useEffect(() => {
577
- if (toChainId) {
578
- const newChain = supportedChains.find((chain) => chain.id === toChainId)
579
- if (newChain) {
580
- setSelectedDestinationChain(newChain)
581
- }
582
- }
583
- }, [toChainId, supportedChains])
584
-
585
- // Update selectedDestToken when toToken prop changes
586
- useEffect(() => {
587
- if (toToken && !isCustomToken && selectedDestinationChain?.id) {
588
- const newToken = findSupportedTokenByAddressOrSymbol(
589
- supportedTokens,
590
- toToken,
591
- toChainId || selectedDestinationChain.id,
592
- )
593
- if (newToken) {
594
- setSelectedDestToken(newToken)
595
- }
596
- }
597
- }, [
598
- toToken,
599
- supportedTokens,
600
- toChainId,
601
- selectedDestinationChain?.id,
602
- isCustomToken,
603
- ])
604
-
605
- // Sync amount from props: fromAmount drives EXACT_INPUT, toAmount drives EXACT_OUTPUT.
606
- // This removes the need for external sync effects in ClassicSwap/Fund/Withdraw.
607
- useEffect(() => {
608
- if (tradeType === TradeType.EXACT_INPUT && fromAmount !== undefined) {
609
- setAmount(fromAmount)
610
- } else if (tradeType === TradeType.EXACT_OUTPUT) {
611
- setAmount(toAmount ?? "")
612
- }
613
- }, [fromAmount, toAmount, tradeType])
614
-
615
- const toAmountFormatted = useMemo(() => {
616
- return formatAmount(toAmount || 0)
617
- }, [toAmount])
618
-
619
- // Update recipientInput when toRecipient prop changes (recipient is derived from recipientInput + ENS)
620
- const [prevToRecipient, setPrevToRecipient] = useState(toRecipient)
621
- if (toRecipient !== prevToRecipient) {
622
- setPrevToRecipient(toRecipient)
623
- setRecipientInput(toRecipient ?? "")
624
- }
625
-
626
- const chainInfo = getChainInfo(selectedToken?.chainId)
627
- const [isSubmitting, setIsSubmitting] = useState(false)
628
- const [isWaitingForWalletConfirm, setIsWaitingForWalletConfirm] =
629
- useState(false)
630
-
631
- // Create a stable callback for transaction state changes
632
- const handleTransactionStateChange = useCallback(
633
- (transactionStates: TransactionState[]) => {
634
- try {
635
- // Pass transaction states to widget-level handler
636
- onTransactionStateChange(transactionStates)
637
- } catch (error) {
638
- logger.console.error(
639
- "[trails-sdk] Error calling onTransactionStateChange:",
640
- error,
641
- )
642
- }
643
- },
644
- [onTransactionStateChange],
645
- )
646
-
647
- // Skip balance fetching for onramp/direct-transfer modes where balances aren't displayed
648
- const skipBalanceFetch = fundMethod && fundMethod !== "wallet"
649
-
650
- // Get token with fresh balance data
651
- const { token: tokenWithFreshBalance, isLoadingBalance } =
652
- useAccountTokenBalanceOnchain(selectedToken, account?.address, {
653
- disabled: skipBalanceFetch,
654
- withPrices: true,
655
- })
656
-
657
- // Use fresh balance if available
658
- const balanceFormatted =
659
- tokenWithFreshBalance?.balance && tokenWithFreshBalance?.decimals
660
- ? formatRawAmount(
661
- tokenWithFreshBalance.balance || "0",
662
- tokenWithFreshBalance.decimals || 18,
663
- )
664
- : undefined
665
- const balanceUsdDisplay = tokenWithFreshBalance?.balanceUsdFormatted || ""
666
- const balanceLocaleDisplay = tokenWithFreshBalance?.balanceLocaleDisplay || ""
667
- const balanceUsdLocaleDisplay =
668
- tokenWithFreshBalance?.balanceUsdLocaleDisplay || ""
669
- const isValidRecipient = Boolean(recipient && isAddress(recipient))
670
-
671
- // Calculate USD value based on trade type
672
- const amountUsdDisplay = useMemo(() => {
673
- const tokenPrice =
674
- tradeType === TradeType.EXACT_INPUT
675
- ? (sourceTokenPrices?.[0]?.priceUsd ?? 0) // For fund form, use source token price
676
- : (destTokenPrices?.[0]?.priceUsd ?? 0) // For payment form, use dest token price
677
- const amountUsd = Number(amount) * tokenPrice
678
- return formatUsdAmountDisplay(amountUsd)
679
- }, [amount, destTokenPrices, sourceTokenPrices, tradeType])
680
-
681
- // Locale version of USD display
682
- const amountUsdLocaleDisplay = useMemo(() => {
683
- const tokenPrice =
684
- tradeType === TradeType.EXACT_INPUT
685
- ? (sourceTokenPrices?.[0]?.priceUsd ?? 0) // For fund form, use source token price
686
- : (destTokenPrices?.[0]?.priceUsd ?? 0) // For payment form, use dest token price
687
- const amountUsd = Number(amount) * tokenPrice
688
- return formatUsdAmountLocaleDisplay(amountUsd)
689
- }, [amount, destTokenPrices, sourceTokenPrices, tradeType])
690
-
691
- // Use the fee token selection hook
692
- const {
693
- selectedFeeOption,
694
- setSelectedFeeOption,
695
- processedFeeOptions,
696
- setFeeOptions,
697
- } = useSelectedFeeOption()
698
-
699
- // Note: Contract detection (isRecipientContract, isSenderContractOnOrigin, isSenderContractOnDestination)
700
- // is now handled in useQuote and returned from there
701
-
702
- const destinationTokenAddressFromTokenSymbol = useTokenAddress({
703
- chainId: selectedDestinationChain?.id,
704
- tokenSymbol: selectedDestToken?.symbol,
705
- })
706
-
707
- const destinationTokenAddress = useMemo(() => {
708
- // If toToken prop is set and is a custom token address, use it
709
- if (isCustomToken) {
710
- logger.console.log(
711
- "[trails-sdk] [CUSTOM-TOKEN] Using toToken prop as destinationTokenAddress:",
712
- toToken,
713
- )
714
- return toToken ?? null
715
- }
716
- // If selectedDestToken has a contractAddress, use it directly (handles custom tokens selected from UI)
717
- if (selectedDestToken?.contractAddress) {
718
- logger.console.log(
719
- "[trails-sdk] [CUSTOM-TOKEN] Using contractAddress from selectedDestToken:",
720
- {
721
- contractAddress: selectedDestToken.contractAddress,
722
- symbol: selectedDestToken.symbol,
723
- },
724
- )
725
- return selectedDestToken.contractAddress
726
- }
727
- // Otherwise, try to look it up by symbol
728
- const addressFromSymbol = destinationTokenAddressFromTokenSymbol ?? null
729
- logger.console.log(
730
- "[trails-sdk] [CUSTOM-TOKEN] Using address from symbol lookup:",
731
- {
732
- addressFromSymbol,
733
- symbol: selectedDestToken?.symbol,
734
- },
735
- )
736
- return addressFromSymbol
737
- }, [
738
- isCustomToken,
739
- toToken,
740
- selectedDestToken?.contractAddress,
741
- selectedDestToken?.symbol,
742
- destinationTokenAddressFromTokenSymbol,
743
- ])
744
-
745
- // Calculate raw amount (in wei/smallest unit)
746
- const amountRaw = useMemo(() => {
747
- // Skip validation during initialization when no tokens are selected
748
- if (!selectedToken && !selectedDestToken) {
749
- return "0"
750
- }
751
-
752
- // Wait for token decimals to be verified before calculating
753
- if (!isDecimalsVerified) {
754
- return "0"
755
- }
756
-
757
- if (!amount && !(selectedToken?.decimals || selectedDestToken?.decimals)) {
758
- logger.console.warn("[trails-sdk] Missing token decimals for quote", {
759
- amount,
760
- selectedToken,
761
- selectedDestToken,
762
- tradeType,
763
- })
764
- return "0"
765
- }
766
-
767
- // For EXACT_INPUT: we only need source token decimals (user enters source amount)
768
- // For EXACT_OUTPUT: we only need destination token decimals (user enters destination amount)
769
- if (tradeType === TradeType.EXACT_INPUT) {
770
- if (!selectedToken?.decimals) {
771
- logger.console.warn(
772
- "[trails-sdk] Missing source token decimals for quote",
773
- {
774
- selectedToken,
775
- tradeType,
776
- },
777
- )
778
- return "0"
779
- }
780
- } else {
781
- // EXACT_OUTPUT mode
782
- if (!selectedDestToken?.decimals) {
783
- logger.console.warn(
784
- "[trails-sdk] Missing destination token decimals for quote",
785
- {
786
- selectedDestToken,
787
- tradeType,
788
- },
789
- )
790
- return "0"
791
- }
792
- }
793
-
794
- // For EXACT_INPUT: use source token decimals (user enters source amount)
795
- // For EXACT_OUTPUT: use destination token decimals (user enters destination amount)
796
- const decimals =
797
- tradeType === TradeType.EXACT_INPUT
798
- ? selectedToken?.decimals
799
- : selectedDestToken?.decimals
800
-
801
- if (!decimals) {
802
- logger.console.warn("[trails-sdk] Missing token decimals for quote", {
803
- decimals,
804
- selectedToken,
805
- selectedDestToken,
806
- tradeType,
807
- })
808
- return "0"
809
- }
810
-
811
- try {
812
- return parseUnits(amount, decimals).toString()
813
- } catch {
814
- return "0"
815
- }
816
- }, [
817
- amount,
818
- isDecimalsVerified,
819
- selectedDestToken,
820
- selectedToken,
821
- selectedDestToken?.decimals,
822
- selectedToken?.decimals,
823
- tradeType,
824
- ])
825
-
826
- // Determine paymaster URL for the origin chain
827
- const paymasterUrl = useMemo(() => {
828
- return paymasterUrls?.find(
829
- (p) => p.chainId.toString() === (selectedToken?.chainId || 0).toString(),
830
- )?.url
831
- }, [paymasterUrls, selectedToken?.chainId])
832
-
833
- // Check if this is a same-chain same-token swap to self (not allowed - don't fetch quote)
834
- const isSameChainSameTokenToSelf = useMemo(() => {
835
- if (
836
- !selectedToken ||
837
- !selectedDestToken ||
838
- !account?.address ||
839
- !recipient
840
- ) {
841
- return false
842
- }
843
-
844
- const isSameToken =
845
- selectedToken.contractAddress?.toLowerCase() ===
846
- selectedDestToken.contractAddress?.toLowerCase() &&
847
- selectedToken.chainId === selectedDestToken.chainId
848
-
849
- const isSameChain = selectedToken.chainId === selectedDestToken.chainId
850
-
851
- if (fundMethod && fundMethod !== "wallet") {
852
- return false
853
- }
854
-
855
- const isToSelf = addressEqual(recipient, account.address)
856
-
857
- return isSameToken && isSameChain && isToSelf
858
- }, [
859
- selectedToken,
860
- selectedDestToken,
861
- account?.address,
862
- recipient,
863
- fundMethod,
864
- ])
865
-
866
- // Use the centralized useQuote hook for quote fetching
867
- // Don't fetch quote if it's same-chain same-token to self (invalid scenario)
868
- const {
869
- quote: quoteResult,
870
- send: sendFn,
871
- isLoadingQuote: quoteIsLoading,
872
- quoteError: rawQuoteError,
873
- quoteErrorPrettified: rawQuoteErrorPrettified,
874
- feeOptions: quoteFeeOptions,
875
- // Contract detection from useQuote
876
- isRecipientContract: quoteIsRecipientContract,
877
- isSenderContractOnOrigin: quoteIsSenderContractOnOrigin,
878
- isSenderContractOnDestination: quoteIsSenderContractOnDestination,
879
- } = useQuote({
880
- walletClient,
881
- fromTokenAddress: selectedToken?.contractAddress ?? null,
882
- fromChainId: selectedToken?.chainId ?? null,
883
- toTokenAddress: destinationTokenAddress ?? null,
884
- toChainId: selectedDestinationChain?.id ?? null,
885
- swapAmount: amountRaw !== "0" ? amountRaw : undefined,
886
- tradeType,
887
- toAddress: isSameChainSameTokenToSelf
888
- ? null
889
- : isValidRecipient
890
- ? recipient
891
- : null,
892
- toApprove,
893
- toCalldata,
894
- onStatusUpdate: handleTransactionStateChange,
895
- swapProvider: swapProvider as RouteProvider | null | undefined,
896
- bridgeProvider: bridgeProvider as RouteProvider | null | undefined,
897
- swapProviderFallback,
898
- bridgeProviderFallback,
899
- checkoutOnHandlers,
900
- paymasterUrl,
901
- selectedFeeOption: selectedFeeOption ?? null,
902
- isSmartWallet,
903
- fundMethod,
904
- onramp: onrampTrackingData,
905
- mode,
906
- })
907
-
908
- // Map useQuote outputs for backward compatibility with existing code
909
- // This allows gradual migration without breaking existing functionality
910
- const isLoadingQuote = quoteIsLoading
911
- const quoteError = rawQuoteError ? getFullErrorMessage(rawQuoteError) : null
912
- const quoteErrorPrettified = rawQuoteErrorPrettified || null
913
-
914
- // Create a compatibility layer for prepareSendResult
915
- // This maps the useQuote output to the shape expected by existing code
916
- const prepareSendResult = useMemo(() => {
917
- if (!quoteResult || !sendFn) return null
918
-
919
- // Quote type now has all PrepareSendQuote fields with proper defaults
920
- const quote = { ...quoteResult } as PrepareSendQuote
921
-
922
- return {
923
- quote,
924
- feeOptions: { feeOptions: quoteFeeOptions },
925
- // Note: send function is handled separately via sendFn
926
- }
927
- }, [quoteResult, sendFn, quoteFeeOptions])
928
-
929
- // Calculate destination amount from quote if available
930
- const quotedDestinationAmount = useMemo(() => {
931
- const currentDestAmount =
932
- prepareSendResult?.quote?.destinationAmountFormatted
933
-
934
- if (currentDestAmount && currentDestAmount !== "0") {
935
- return currentDestAmount
936
- }
937
-
938
- // Fall back to toAmount prop (for EXACT_OUTPUT mode)
939
- return toAmountFormatted
940
- }, [prepareSendResult, toAmountFormatted])
941
-
942
- const quotedDestinationAmountDisplay = useMemo(() => {
943
- const formattedAmount = formatAmount(quotedDestinationAmount || 0)
944
- return Number(formattedAmount) === 0 ? "0" : formattedAmount
945
- }, [quotedDestinationAmount])
946
-
947
- // Use server quote USD values when available for consistency
948
- // Falls back to client-calculated values during loading or if quote unavailable
949
- const amountUsdDisplayFinal = useMemo(() => {
950
- if (prepareSendResult?.quote) {
951
- const serverUsdDisplay =
952
- tradeType === TradeType.EXACT_INPUT
953
- ? prepareSendResult.quote.originAmountUsdDisplay
954
- : prepareSendResult.quote.destinationAmountUsdDisplay
955
- if (serverUsdDisplay && serverUsdDisplay !== "$0.00") {
956
- return serverUsdDisplay
957
- }
958
- }
959
- return amountUsdDisplay
960
- }, [prepareSendResult, tradeType, amountUsdDisplay])
961
-
962
- // Set raw fee options in the hook whenever prepareSendResult changes
963
- useEffect(() => {
964
- const apiFeeOptions = prepareSendResult?.feeOptions?.feeOptions ?? []
965
- logger.console.log(
966
- "[trails-sdk] [fee-select] useSendForm setting raw fee options:",
967
- {
968
- prepareSendResult,
969
- feeOptions: prepareSendResult?.feeOptions,
970
- apiFeeOptions,
971
- length: apiFeeOptions.length,
972
- },
973
- )
974
-
975
- setFeeOptions(
976
- apiFeeOptions,
977
- selectedToken?.chainId,
978
- tokensWithBalanceRef.current,
979
- )
980
- }, [prepareSendResult, selectedToken?.chainId, setFeeOptions])
981
-
982
- const processSend = useCallback(async () => {
983
- logger.console.log("[trails-sdk] processSend called", {
984
- fundMethod,
985
- hasQuote: !!prepareSendResult,
986
- hasSend: !!sendFn,
987
- })
988
- logger.console.log(
989
- `[trails-sdk] Called processSend with fund method: ${fundMethod}`,
990
- )
991
- try {
992
- if (!prepareSendResult || !sendFn) {
993
- setError("No quote available. Please wait for quote to load.")
994
- return
995
- }
996
-
997
- // React Query handles quote staleness via its caching mechanism,
998
- // so we no longer need fingerprint checks
999
-
1000
- setError(null)
1001
- setIsSubmitting(true)
1002
-
1003
- const quote = prepareSendResult.quote
1004
-
1005
- logger.console.log("[trails-sdk] Using quote from useQuote:", quote)
1006
-
1007
- function onOriginSend() {
1008
- logger.console.log("[trails-sdk] onOriginSend called")
1009
- onConfirm()
1010
- setIsWaitingForWalletConfirm(false)
1011
- onSend(amount, recipient)
1012
- }
1013
-
1014
- setIsWaitingForWalletConfirm(true)
1015
- // For onramp-meld, let ClassicSwap handle the onWaitingForOnrampConfirm call
1016
- // after widget session creation, not here
1017
- if (fundMethod !== "onramp-meld") {
1018
- onWaitingForWalletConfirm(
1019
- prepareSendResult.quote,
1020
- fundMethod === "direct-transfer" ? sendFn : undefined,
1021
- )
1022
- }
1023
-
1024
- async function handleSend() {
1025
- logger.console.log(
1026
- "[trails-sdk] [fee-select] [gasless-flow] handleSend called, about to call sendFn()",
1027
- )
1028
- logger.console.log(
1029
- "[trails-sdk] [fee-select] [gasless-flow] selectedFeeOption value at swap() call time:",
1030
- {
1031
- selectedFeeOption,
1032
- isNull: selectedFeeOption === null,
1033
- isUndefined: selectedFeeOption === undefined,
1034
- type: typeof selectedFeeOption,
1035
- stringified: JsonEncode(selectedFeeOption),
1036
- },
1037
- )
1038
-
1039
- // Execute the swap via useQuote's send function
1040
- // sendFn is guaranteed to be non-null here due to the check at the top of processSend
1041
- // Pass the current selectedFeeOption so gasless flow uses the correct fee token
1042
- // Pass onOriginSend as callback to be called when wallet signature is confirmed
1043
- const sendResult = await sendFn!({
1044
- selectedFeeOption: selectedFeeOption ?? null,
1045
- onOriginSend, // Called when wallet signature is confirmed, before tx completes
1046
- })
1047
- logger.console.log("[trails-sdk] sendFn() completed:", sendResult)
1048
-
1049
- // Move to receipt screen
1050
- onComplete({
1051
- transactionStates: quote.transactionStates ?? [],
1052
- })
1053
- }
1054
-
1055
- // Handle exchange/direct-transfer fund methods - don't call handleSend immediately
1056
- if (isExternalFundingMethod(fundMethod)) {
1057
- // External funding flows commit and execute before navigating away from
1058
- // the funding form. Their follow-up screens only monitor deposit balance
1059
- // and should not call handleSend again.
1060
- if (fundMethod === "direct-transfer") {
1061
- logger.console.log(
1062
- "[trails-sdk] Direct-transfer fund method detected, deferring send until deposit confirmed",
1063
- {
1064
- fundMethod,
1065
- quote: !!quote,
1066
- },
1067
- )
1068
- setIsSubmitting(false)
1069
- setIsWaitingForWalletConfirm(false)
1070
- return
1071
- }
1072
-
1073
- logger.console.log(
1074
- "[trails-sdk] Exchange or Meld fund method detected, navigating to onramp",
1075
- {
1076
- fundMethod,
1077
- quote: !!quote,
1078
- },
1079
- )
1080
-
1081
- const originChainId = quote?.originChain?.id
1082
- const destinationChainId = quote?.destinationChain?.id
1083
-
1084
- const toTokenSymbol = quote?.originToken?.symbol // Onramp will deposit origin token
1085
- const toTokenAmount = normalizeNumber(
1086
- quote.originAmountFormatted ?? "0",
1087
- ).toString() // Onramp will deposit origin token amount
1088
- const toChainId = quote?.originChain?.id // Onramp will deposit to origin chain
1089
- const toRecipientAddress = quote.originDepositAddress // Onramp will deposit to origin address
1090
- // Extract USD amount from quote for Meld widget (sourceAmountLocked)
1091
- const toAmountUsd = quote?.originAmountUsdFormatted
1092
- ? parseFloat(quote.originAmountUsdFormatted)
1093
- : undefined
1094
-
1095
- logger.console.log("[trails-sdk] Navigating to onramp with props:", {
1096
- toTokenSymbol,
1097
- toTokenAmount,
1098
- toChainId,
1099
- toRecipientAddress,
1100
- toAmountUsd,
1101
- originChainId,
1102
- destinationChainId,
1103
- })
1104
-
1105
- // Onramp can be used for both same-chain and cross-chain transfers
1106
- // It deposits funds to the origin deposit address, which works for both scenarios
1107
- // No need to restrict to cross-chain only
1108
-
1109
- if (
1110
- !toTokenSymbol ||
1111
- !toTokenAmount ||
1112
- !toChainId ||
1113
- !toRecipientAddress
1114
- ) {
1115
- throw new Error("[trails-sdk] Missing required props for onramp")
1116
- }
1117
-
1118
- if (fundMethod === "onramp-mesh") {
1119
- logger.console.log(
1120
- "[trails-sdk] Preparing Mesh onramp intent before navigation",
1121
- {
1122
- hasSendFn: !!sendFn,
1123
- intentId: quote?.intentId,
1124
- },
1125
- )
1126
-
1127
- await sendFn!({
1128
- selectedFeeOption: selectedFeeOption ?? null,
1129
- })
1130
-
1131
- logger.console.log(
1132
- "[trails-sdk] Mesh onramp intent prepared successfully",
1133
- {
1134
- intentId: quote?.intentId,
1135
- },
1136
- )
1137
-
1138
- if (onNavigateToOnrampMesh) {
1139
- onNavigateToOnrampMesh({
1140
- toTokenSymbol,
1141
- toTokenAmount,
1142
- toChainId,
1143
- toRecipientAddress,
1144
- toAmountUsd,
1145
- })
1146
- }
1147
- } else if (fundMethod === "onramp-meld") {
1148
- // For Meld, call the onWaitingForOnrampConfirm handler (existing flow)
1149
- // This will be handled by the existing onramp-confirmation screen
1150
- // The navigation happens via handleWaitingOnrampConfirm in widget.tsx
1151
- }
1152
-
1153
- // Don't call handleSend here - it will be called after onramp completes
1154
- setIsSubmitting(false)
1155
- setIsWaitingForWalletConfirm(false)
1156
- return
1157
- }
1158
-
1159
- async function walletConfirmRetryHandler() {
1160
- logger.console.log("[trails-sdk] walletConfirmRetryHandler called")
1161
- try {
1162
- logger.console.log("[trails-sdk] About to call handleRetry")
1163
- await handleSend()
1164
- logger.console.log("[trails-sdk] handleRetry completed successfully")
1165
- } catch (error) {
1166
- logger.console.error(
1167
- "[trails-sdk] Error in prepareSend walletConfirmRetryHandler:",
1168
- error,
1169
- )
1170
- const errorMessage = getFullErrorMessage(error)
1171
- setError(errorMessage)
1172
- if (onError) {
1173
- onError(errorMessage)
1174
- }
1175
- }
1176
- }
1177
-
1178
- setWalletConfirmRetryHandler(
1179
- () => walletConfirmRetryHandler as unknown as Promise<void>,
1180
- )
1181
-
1182
- await handleSend()
1183
- } catch (error) {
1184
- logger.console.error("[trails-sdk] Error in prepareSend:", error)
1185
- const errorMessage = getFullErrorMessage(error)
1186
- setError(errorMessage)
1187
- if (onError) {
1188
- onError(errorMessage)
1189
- }
1190
- }
1191
-
1192
- setIsSubmitting(false)
1193
- setIsWaitingForWalletConfirm(false)
1194
- }, [
1195
- prepareSendResult,
1196
- sendFn,
1197
- amount,
1198
- onSend,
1199
- onConfirm,
1200
- onComplete,
1201
- setWalletConfirmRetryHandler,
1202
- onWaitingForWalletConfirm,
1203
- recipient,
1204
- onError,
1205
- fundMethod,
1206
- selectedFeeOption, // Include so handleSend captures latest value
1207
- onNavigateToOnrampMesh,
1208
- ])
1209
-
1210
- const handleSubmit = async (e: React.FormEvent) => {
1211
- e.preventDefault()
1212
- processSend().catch((error) => {
1213
- logger.console.error("[trails-sdk] Error in processSend:", error)
1214
- setError(
1215
- error instanceof Error ? error.message : "An unexpected error occurred",
1216
- )
1217
- })
1218
- }
1219
-
1220
- // Get button text based on recipient and calldata
1221
- const buttonText = useMemo(() => {
1222
- if (!account?.address) return "Connect your wallet"
1223
- if (!selectedToken) return "Select a token"
1224
- if (!amount) return "Enter an amount"
1225
- if (!selectedDestToken?.symbol) return "Select a token"
1226
- if (isWaitingForWalletConfirm) return "Waiting for wallet..."
1227
- if (isSubmitting) return "Processing..."
1228
- if (!isValidRecipient && mode === "earn") return "Select a vault"
1229
- if (!isValidRecipient) return "Enter a recipient"
1230
- if (isLoadingQuote) return "Getting quote..."
1231
- if (!prepareSendResult) return "No quote available"
1232
-
1233
- const amountFormatted =
1234
- prepareSendResult?.quote?.originAmountFormatted ?? formatAmount(amount)
1235
- const destinationAmountFormatted =
1236
- prepareSendResult?.quote?.destinationAmountFormatted ??
1237
- formatAmount(amount)
1238
- const tokenSymbol = selectedToken.symbol
1239
- const destinationTokenSymbol = selectedDestToken?.symbol
1240
-
1241
- const amountDisplay = formatAmountDisplay(amountFormatted)
1242
- const destinationAmountDisplay = formatAmountDisplay(
1243
- destinationAmountFormatted,
1244
- )
1245
-
1246
- try {
1247
- const isSameChain = selectedToken.chainId === selectedDestinationChain?.id
1248
- const isSameToken = selectedToken.symbol === selectedDestToken.symbol
1249
- const checksummedRecipient = getAddress(recipient)
1250
- const checksummedAccount = getAddress(account.address)
1251
-
1252
- logger.console.log("[trails-sdk] buttonText:", {
1253
- mode,
1254
- fundMethod,
1255
- isSameChain,
1256
- isSameToken,
1257
- checksummedRecipient,
1258
- })
1259
-
1260
- if (fundMethod === "onramp-mesh") {
1261
- return `Continue to Exchange`
1262
- }
1263
-
1264
- if (fundMethod === "onramp-meld") {
1265
- return `Continue`
1266
- }
1267
-
1268
- if (fundMethod === "direct-transfer") {
1269
- return `Continue`
1270
- }
1271
-
1272
- if (!fundMethod || fundMethod === "wallet") {
1273
- if (mode === "pay") {
1274
- return `Pay`
1275
- } else if (mode === "fund") {
1276
- return `Fund`
1277
- } else if (mode === "swap") {
1278
- return `Swap`
1279
- } else if (mode === "earn") {
1280
- return `Deposit`
1281
- } else if (mode === "withdraw") {
1282
- return `Withdraw`
1283
- } else {
1284
- return `Continue on wallet`
1285
- }
1286
- }
1287
-
1288
- if (mode === "swap") {
1289
- return `Swap ${amountDisplay} ${tokenSymbol}`
1290
- }
1291
-
1292
- if (mode === "earn") {
1293
- return `Deposit ${destinationAmountDisplay} ${destinationTokenSymbol}`
1294
- }
1295
-
1296
- if (tradeType === TradeType.EXACT_INPUT) {
1297
- return `Fund with ${amountDisplay} ${tokenSymbol}`
1298
- }
1299
-
1300
- if (isSameChain && isSameToken) {
1301
- return `Execute`
1302
- }
1303
-
1304
- if (isSameChain && !isSameToken) {
1305
- return `Swap ${amountDisplay} ${tokenSymbol}`
1306
- }
1307
-
1308
- if (checksummedRecipient === checksummedAccount) {
1309
- return `Receive ${destinationAmountDisplay} ${destinationTokenSymbol}`
1310
- }
1311
-
1312
- return `Pay with ${amountDisplay} ${tokenSymbol}`
1313
- } catch {
1314
- return `Pay with ${amountDisplay} ${tokenSymbol}`
1315
- }
1316
- }, [
1317
- amount,
1318
- isValidRecipient,
1319
- recipient,
1320
- account?.address,
1321
- selectedDestToken?.symbol,
1322
- isWaitingForWalletConfirm,
1323
- isSubmitting,
1324
- isLoadingQuote,
1325
- prepareSendResult,
1326
- selectedToken,
1327
- tradeType,
1328
- prepareSendResult?.quote?.originAmountFormatted,
1329
- selectedDestinationChain?.id,
1330
- mode,
1331
- fundMethod,
1332
- ])
1333
-
1334
- return {
1335
- amount,
1336
- amountRaw,
1337
- amountUsdDisplay: amountUsdDisplayFinal,
1338
- amountUsdLocaleDisplay,
1339
- balanceUsdDisplay,
1340
- balanceLocaleDisplay,
1341
- balanceUsdLocaleDisplay,
1342
- chainInfo,
1343
- toChainId,
1344
- error,
1345
- balanceFormatted,
1346
- balanceRaw: tokenWithFreshBalance?.balance ?? "0",
1347
- tokenDecimals: tokenWithFreshBalance?.decimals ?? 18,
1348
- handleRecipientInputChange,
1349
- handleSubmit,
1350
- isChainDropdownOpen,
1351
- isSubmitting,
1352
- isLoadingQuote,
1353
- isTokenDropdownOpen,
1354
- recipient,
1355
- recipientInput,
1356
- selectedDestinationChain,
1357
- selectedDestToken,
1358
- setAmount,
1359
- setRecipientInput,
1360
- setSelectedDestinationChain,
1361
- setSelectedDestToken,
1362
- setSelectedFeeOption,
1363
- processedFeeOptions,
1364
- supportedTokens,
1365
- supportedChains,
1366
- ensAddress: ensAddress ?? null,
1367
- isWaitingForWalletConfirm,
1368
- buttonText,
1369
- sendFn, // Expose the send function for onramp flow to commit intent
1370
- isValidRecipient,
1371
- destTokenPrices: destTokenPrices ?? null,
1372
- sourceTokenPrices: sourceTokenPrices ?? null,
1373
- selectedToken,
1374
- selectedFeeOption: selectedFeeOption ?? null,
1375
- setIsChainDropdownOpen,
1376
- setIsTokenDropdownOpen,
1377
- toAmountFormatted: quotedDestinationAmount,
1378
- toAmountDisplay: quotedDestinationAmountDisplay,
1379
- destinationTokenAddress,
1380
- isValidCustomToken,
1381
- prepareSendQuote: prepareSendResult?.quote ?? null,
1382
- quoteError,
1383
- quoteErrorPrettified,
1384
- isRecipientContract: quoteIsRecipientContract ?? false,
1385
- isSenderContractOnOrigin: quoteIsSenderContractOnOrigin ?? false,
1386
- isSenderContractOnDestination: quoteIsSenderContractOnDestination ?? false,
1387
- isLoadingBalance,
1388
- }
1389
- }