0xtrails 0.13.2 → 0.15.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 (844) hide show
  1. package/dist/abis/requireUtils.d.ts +134 -0
  2. package/dist/abis/requireUtils.d.ts.map +1 -0
  3. package/dist/abis/trailsHydrate.d.ts +6 -42
  4. package/dist/abis/trailsHydrate.d.ts.map +1 -1
  5. package/dist/abis/trailsRouter.d.ts +1 -1
  6. package/dist/abis/trailsRouter.d.ts.map +1 -1
  7. package/dist/actions/actionBuilder.d.ts +414 -0
  8. package/dist/actions/actionBuilder.d.ts.map +1 -0
  9. package/dist/actions/constants.d.ts +1853 -0
  10. package/dist/actions/constants.d.ts.map +1 -0
  11. package/dist/actions/custom-integrations/sushiswapV3/addresses.d.ts +4 -0
  12. package/dist/actions/custom-integrations/sushiswapV3/addresses.d.ts.map +1 -0
  13. package/dist/actions/custom-integrations/sushiswapV3/calldata.d.ts +4 -0
  14. package/dist/actions/custom-integrations/sushiswapV3/calldata.d.ts.map +1 -0
  15. package/dist/actions/custom-integrations/sushiswapV3/calls.d.ts +28 -0
  16. package/dist/actions/custom-integrations/sushiswapV3/calls.d.ts.map +1 -0
  17. package/dist/actions/custom-integrations/sushiswapV3/helpers.d.ts +15 -0
  18. package/dist/actions/custom-integrations/sushiswapV3/helpers.d.ts.map +1 -0
  19. package/dist/actions/custom-integrations/sushiswapV3/sushiswapV3.d.ts +9 -0
  20. package/dist/actions/custom-integrations/sushiswapV3/sushiswapV3.d.ts.map +1 -0
  21. package/dist/actions/custom-integrations/sushiswapV3/types.d.ts +95 -0
  22. package/dist/actions/custom-integrations/sushiswapV3/types.d.ts.map +1 -0
  23. package/dist/actions/custom-integrations/uniswapV3/addresses.d.ts +4 -0
  24. package/dist/actions/custom-integrations/uniswapV3/addresses.d.ts.map +1 -0
  25. package/dist/actions/custom-integrations/uniswapV3/calldata.d.ts +4 -0
  26. package/dist/actions/custom-integrations/uniswapV3/calldata.d.ts.map +1 -0
  27. package/dist/actions/custom-integrations/uniswapV3/calls.d.ts +50 -0
  28. package/dist/actions/custom-integrations/uniswapV3/calls.d.ts.map +1 -0
  29. package/dist/actions/custom-integrations/uniswapV3/helpers.d.ts +23 -0
  30. package/dist/actions/custom-integrations/uniswapV3/helpers.d.ts.map +1 -0
  31. package/dist/actions/custom-integrations/uniswapV3/types.d.ts +90 -0
  32. package/dist/actions/custom-integrations/uniswapV3/types.d.ts.map +1 -0
  33. package/dist/actions/custom-integrations/uniswapV3/uniswapV3.d.ts +9 -0
  34. package/dist/actions/custom-integrations/uniswapV3/uniswapV3.d.ts.map +1 -0
  35. package/dist/actions/destinationCalls.d.ts +17 -0
  36. package/dist/actions/destinationCalls.d.ts.map +1 -0
  37. package/dist/actions/dynamic.d.ts +97 -0
  38. package/dist/actions/dynamic.d.ts.map +1 -0
  39. package/dist/actions/hooks/useEarnBalances.d.ts +53 -0
  40. package/dist/actions/hooks/useEarnBalances.d.ts.map +1 -0
  41. package/dist/actions/hooks/useEarnMarkets.d.ts +29 -0
  42. package/dist/actions/hooks/useEarnMarkets.d.ts.map +1 -0
  43. package/dist/actions/hooks/useEarnProviders.d.ts +18 -0
  44. package/dist/actions/hooks/useEarnProviders.d.ts.map +1 -0
  45. package/dist/actions/hooks/useResolveActions.d.ts +28 -0
  46. package/dist/actions/hooks/useResolveActions.d.ts.map +1 -0
  47. package/dist/actions/index.d.ts +8 -0
  48. package/dist/actions/index.d.ts.map +1 -0
  49. package/dist/actions/index.js +13 -0
  50. package/dist/actions/resolvers.d.ts +30 -0
  51. package/dist/actions/resolvers.d.ts.map +1 -0
  52. package/dist/actions/types/earn.d.ts +51 -0
  53. package/dist/actions/types/earn.d.ts.map +1 -0
  54. package/dist/actions/types.d.ts +303 -0
  55. package/dist/actions/types.d.ts.map +1 -0
  56. package/dist/actions/utils.d.ts +181 -0
  57. package/dist/actions/utils.d.ts.map +1 -0
  58. package/dist/{widget/analytics → analytics/hooks}/useWidgetAnalytics.d.ts +2 -4
  59. package/dist/analytics/hooks/useWidgetAnalytics.d.ts.map +1 -0
  60. package/dist/analytics.d.ts.map +1 -1
  61. package/dist/chainSwitch.d.ts.map +1 -1
  62. package/dist/chains-DttlfV-6.js +4 -0
  63. package/dist/chains-ccVR_-73.js +655 -0
  64. package/dist/chains.d.ts +0 -1
  65. package/dist/chains.d.ts.map +1 -1
  66. package/dist/committedIntentStore.d.ts +5 -0
  67. package/dist/committedIntentStore.d.ts.map +1 -0
  68. package/dist/config.d.ts +2 -0
  69. package/dist/config.d.ts.map +1 -1
  70. package/dist/constants.d.ts +2 -1
  71. package/dist/constants.d.ts.map +1 -1
  72. package/dist/error.d.ts +73 -4
  73. package/dist/error.d.ts.map +1 -1
  74. package/dist/hooks/persistedToken.d.ts +22 -0
  75. package/dist/hooks/persistedToken.d.ts.map +1 -0
  76. package/dist/hooks/prepareTrailsSendTransactionDestination.d.ts +26 -0
  77. package/dist/hooks/prepareTrailsSendTransactionDestination.d.ts.map +1 -0
  78. package/dist/hooks/useAddressWalletIcon.d.ts.map +1 -0
  79. package/dist/hooks/useAmountUsd.d.ts.map +1 -0
  80. package/dist/hooks/useBalanceVisible.d.ts.map +1 -0
  81. package/dist/hooks/useChainFilter.d.ts.map +1 -0
  82. package/dist/{widget/hooks → hooks}/useCheckout.d.ts +15 -15
  83. package/dist/hooks/useCheckout.d.ts.map +1 -0
  84. package/dist/hooks/useClickTracking.d.ts.map +1 -0
  85. package/dist/{widget/hooks → hooks}/useCombinedHistory.d.ts +3 -2
  86. package/dist/hooks/useCombinedHistory.d.ts.map +1 -0
  87. package/dist/hooks/useConnector.d.ts.map +1 -0
  88. package/dist/{widget/hooks → hooks}/useCustomTokenSearch.d.ts +3 -2
  89. package/dist/hooks/useCustomTokenSearch.d.ts.map +1 -0
  90. package/dist/hooks/useDebounce.d.ts.map +1 -0
  91. package/dist/{widget/hooks → hooks}/useDebugScreens.d.ts +2 -2
  92. package/dist/hooks/useDebugScreens.d.ts.map +1 -0
  93. package/dist/{widget/hooks → hooks}/useDefaultDestinationToken.d.ts +1 -1
  94. package/dist/hooks/useDefaultDestinationToken.d.ts.map +1 -0
  95. package/dist/{widget/hooks → hooks}/useDefaultOriginToken.d.ts +1 -1
  96. package/dist/hooks/useDefaultOriginToken.d.ts.map +1 -0
  97. package/dist/hooks/useDepositMonitor.d.ts.map +1 -0
  98. package/dist/{widget/hooks → hooks}/useDestinationSelectedToken.d.ts +10 -2
  99. package/dist/hooks/useDestinationSelectedToken.d.ts.map +1 -0
  100. package/dist/hooks/useDisplayCurrencyPreference.d.ts.map +1 -0
  101. package/dist/{widget/hooks → hooks}/useEarnPool.d.ts +1 -1
  102. package/dist/hooks/useEarnPool.d.ts.map +1 -0
  103. package/dist/hooks/useEffectiveFundBalance.d.ts +28 -0
  104. package/dist/hooks/useEffectiveFundBalance.d.ts.map +1 -0
  105. package/dist/hooks/useExecutingIntentsCount.d.ts.map +1 -0
  106. package/dist/{widget/hooks → hooks}/useExternalFundingReceiptSync.d.ts +1 -1
  107. package/dist/hooks/useExternalFundingReceiptSync.d.ts.map +1 -0
  108. package/dist/{widget/hooks → hooks}/useFiatOnRampCurrencies.d.ts +1 -1
  109. package/dist/hooks/useFiatOnRampCurrencies.d.ts.map +1 -0
  110. package/dist/hooks/useFiatSelectedCurrency.d.ts.map +1 -0
  111. package/dist/hooks/useGetIntent.d.ts.map +1 -0
  112. package/dist/{widget/hooks → hooks}/useIntentReceiptBalances.d.ts +1 -1
  113. package/dist/hooks/useIntentReceiptBalances.d.ts.map +1 -0
  114. package/dist/{widget/hooks → hooks}/useIntentTransactionHistory.d.ts +2 -1
  115. package/dist/hooks/useIntentTransactionHistory.d.ts.map +1 -0
  116. package/dist/hooks/useIsMobile.d.ts.map +1 -0
  117. package/dist/hooks/useIsSequenceWallet.d.ts.map +1 -0
  118. package/dist/hooks/useLocalePreference.d.ts.map +1 -0
  119. package/dist/hooks/useMeldTransactionHistory.d.ts.map +1 -0
  120. package/dist/hooks/useMeldTransactionStatus.d.ts.map +1 -0
  121. package/dist/hooks/useOnRampCountryDefaults.d.ts.map +1 -0
  122. package/dist/{widget/hooks → hooks}/useOnRampPaymentMethods.d.ts +2 -2
  123. package/dist/hooks/useOnRampPaymentMethods.d.ts.map +1 -0
  124. package/dist/{widget/hooks → hooks}/useOnRampProviderWidget.d.ts +1 -1
  125. package/dist/hooks/useOnRampProviderWidget.d.ts.map +1 -0
  126. package/dist/{widget/hooks → hooks}/useOnRampQuote.d.ts +3 -3
  127. package/dist/hooks/useOnRampQuote.d.ts.map +1 -0
  128. package/dist/{widget/hooks → hooks}/useOnRampTransactionStatus.d.ts +1 -1
  129. package/dist/hooks/useOnRampTransactionStatus.d.ts.map +1 -0
  130. package/dist/{widget/hooks → hooks}/useOriginSelectedToken.d.ts +1 -1
  131. package/dist/hooks/useOriginSelectedToken.d.ts.map +1 -0
  132. package/dist/hooks/usePayMessage.d.ts.map +1 -0
  133. package/dist/hooks/usePriceImpactWarning.d.ts.map +1 -0
  134. package/dist/hooks/useQuote.d.ts +619 -0
  135. package/dist/hooks/useQuote.d.ts.map +1 -0
  136. package/dist/{widget/hooks → hooks}/useRecentTokens.d.ts +1 -1
  137. package/dist/hooks/useRecentTokens.d.ts.map +1 -0
  138. package/dist/hooks/useRecipients.d.ts.map +1 -0
  139. package/dist/hooks/useSelectedFeeOption.d.ts.map +1 -0
  140. package/dist/{widget/hooks → hooks}/useSelectedFundMethod.d.ts +11 -1
  141. package/dist/hooks/useSelectedFundMethod.d.ts.map +1 -0
  142. package/dist/hooks/useSelectedRecipient.d.ts.map +1 -0
  143. package/dist/{widget/hooks → hooks}/useSendForm.d.ts +10 -12
  144. package/dist/hooks/useSendForm.d.ts.map +1 -0
  145. package/dist/hooks/useSwapAmount.d.ts.map +1 -0
  146. package/dist/{widget/hooks → hooks}/useSwapState.d.ts +1 -1
  147. package/dist/hooks/useSwapState.d.ts.map +1 -0
  148. package/dist/hooks/useTargetAmount.d.ts.map +1 -0
  149. package/dist/hooks/useTheme.d.ts.map +1 -0
  150. package/dist/{widget/hooks → hooks}/useTokenList.d.ts +4 -3
  151. package/dist/hooks/useTokenList.d.ts.map +1 -0
  152. package/dist/hooks/useTrailsSendTransaction.d.ts +171 -0
  153. package/dist/hooks/useTrailsSendTransaction.d.ts.map +1 -0
  154. package/dist/{widget/hooks → hooks}/useViewManager.d.ts +1 -1
  155. package/dist/hooks/useViewManager.d.ts.map +1 -0
  156. package/dist/hooks/useWalletConnectUri.d.ts +19 -0
  157. package/dist/hooks/useWalletConnectUri.d.ts.map +1 -0
  158. package/dist/hooks/useWalletConnectionContext.d.ts.map +1 -0
  159. package/dist/{widget/hooks → hooks}/useWidgetProps.d.ts +1 -1
  160. package/dist/hooks/useWidgetProps.d.ts.map +1 -0
  161. package/dist/hydrate/builder.d.ts +131 -0
  162. package/dist/hydrate/builder.d.ts.map +1 -0
  163. package/dist/hydrate/constants.d.ts +13 -0
  164. package/dist/hydrate/constants.d.ts.map +1 -0
  165. package/dist/hydrate/encodeExecute.d.ts +73 -0
  166. package/dist/hydrate/encodeExecute.d.ts.map +1 -0
  167. package/dist/hydrate/index.d.ts +8 -0
  168. package/dist/hydrate/index.d.ts.map +1 -0
  169. package/dist/hydrate/index.js +14 -0
  170. package/dist/hydrate/multicall.d.ts +69 -0
  171. package/dist/hydrate/multicall.d.ts.map +1 -0
  172. package/dist/hydrate/payload.d.ts +38 -0
  173. package/dist/hydrate/payload.d.ts.map +1 -0
  174. package/dist/hydrate/selectors.d.ts +28 -0
  175. package/dist/hydrate/selectors.d.ts.map +1 -0
  176. package/dist/hydrate/source.d.ts +11 -0
  177. package/dist/hydrate/source.d.ts.map +1 -0
  178. package/dist/hydrate/types.d.ts +21 -0
  179. package/dist/hydrate/types.d.ts.map +1 -0
  180. package/dist/hydrate/utils.d.ts +8 -0
  181. package/dist/hydrate/utils.d.ts.map +1 -0
  182. package/dist/hydrate-BsQ8nPlI.js +882 -0
  183. package/dist/index.d.ts +47 -14
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +189 -662
  186. package/dist/intentConfigStore.d.ts +8 -0
  187. package/dist/intentConfigStore.d.ts.map +1 -0
  188. package/dist/intentProtocolApi.d.ts +11 -0
  189. package/dist/intentProtocolApi.d.ts.map +1 -0
  190. package/dist/intentProtocolEncoding.d.ts +30 -0
  191. package/dist/intentProtocolEncoding.d.ts.map +1 -0
  192. package/dist/intentProtocolResolver.d.ts +28 -0
  193. package/dist/intentProtocolResolver.d.ts.map +1 -0
  194. package/dist/intentReceiptPoller.d.ts.map +1 -1
  195. package/dist/intentValidation.d.ts +5 -0
  196. package/dist/intentValidation.d.ts.map +1 -0
  197. package/dist/intents.d.ts.map +1 -1
  198. package/dist/keymachine/index.d.ts +20 -0
  199. package/dist/keymachine/index.d.ts.map +1 -1
  200. package/dist/mutations.d.ts.map +1 -1
  201. package/dist/offlineRecovery.d.ts +24 -0
  202. package/dist/offlineRecovery.d.ts.map +1 -0
  203. package/dist/onramp/MeshConnectFlow.d.ts +9 -0
  204. package/dist/onramp/MeshConnectFlow.d.ts.map +1 -1
  205. package/dist/onramp/MeshConnectIframe.d.ts +9 -0
  206. package/dist/onramp/MeshConnectIframe.d.ts.map +1 -1
  207. package/dist/onramp/TrailsOnRampProvider.d.ts.map +1 -1
  208. package/dist/onramp/mesh/components/MeshExchangeConfirmation.d.ts +10 -0
  209. package/dist/onramp/mesh/components/MeshExchangeConfirmation.d.ts.map +1 -0
  210. package/dist/onramp/mesh/components/MeshExchangeIcon.d.ts +13 -0
  211. package/dist/onramp/mesh/components/MeshExchangeIcon.d.ts.map +1 -0
  212. package/dist/{widget → onramp/mesh}/components/MeshExchangeSelection.d.ts +1 -0
  213. package/dist/onramp/mesh/components/MeshExchangeSelection.d.ts.map +1 -0
  214. package/dist/onramp/mesh/components/MeshSessionOptions.d.ts +15 -0
  215. package/dist/onramp/mesh/components/MeshSessionOptions.d.ts.map +1 -0
  216. package/dist/onramp/mesh/hooks/useMeshAccessTokens.d.ts +9 -0
  217. package/dist/onramp/mesh/hooks/useMeshAccessTokens.d.ts.map +1 -0
  218. package/dist/onramp/mesh/hooks/useMeshFundingSelection.d.ts +11 -0
  219. package/dist/onramp/mesh/hooks/useMeshFundingSelection.d.ts.map +1 -0
  220. package/dist/onramp/mesh/hooks/useMeshOnrampFlow.d.ts +71 -0
  221. package/dist/onramp/mesh/hooks/useMeshOnrampFlow.d.ts.map +1 -0
  222. package/dist/onramp/mesh/hooks/useMeshOnrampSessionState.d.ts +32 -0
  223. package/dist/onramp/mesh/hooks/useMeshOnrampSessionState.d.ts.map +1 -0
  224. package/dist/onramp/mesh/hooks/useMeshSelectedTokenBalance.d.ts +19 -0
  225. package/dist/onramp/mesh/hooks/useMeshSelectedTokenBalance.d.ts.map +1 -0
  226. package/dist/onramp/mesh/hooks/useMeshSessionAccountBalance.d.ts +15 -0
  227. package/dist/onramp/mesh/hooks/useMeshSessionAccountBalance.d.ts.map +1 -0
  228. package/dist/onramp/mesh/hooks/useMeshSessionStorage.d.ts +7 -0
  229. package/dist/onramp/mesh/hooks/useMeshSessionStorage.d.ts.map +1 -0
  230. package/dist/onramp/meshSessionStorage.d.ts +13 -0
  231. package/dist/onramp/meshSessionStorage.d.ts.map +1 -0
  232. package/dist/onramp/meshconnect.d.ts +6 -4
  233. package/dist/onramp/meshconnect.d.ts.map +1 -1
  234. package/dist/onramp/trailsOnramp.d.ts +8 -0
  235. package/dist/onramp/trailsOnramp.d.ts.map +1 -1
  236. package/dist/onrampClient.d.ts.map +1 -1
  237. package/dist/placeholder.d.ts +129 -5
  238. package/dist/placeholder.d.ts.map +1 -1
  239. package/dist/poolUtils.d.ts +0 -14
  240. package/dist/poolUtils.d.ts.map +1 -1
  241. package/dist/prepareSend.d.ts +3 -2
  242. package/dist/prepareSend.d.ts.map +1 -1
  243. package/dist/query/balance.fetchers.d.ts +7 -1
  244. package/dist/query/balance.fetchers.d.ts.map +1 -1
  245. package/dist/query/intentProtocol.queries.d.ts +32 -0
  246. package/dist/query/intentProtocol.queries.d.ts.map +1 -0
  247. package/dist/recover.d.ts +70 -24
  248. package/dist/recover.d.ts.map +1 -1
  249. package/dist/src-CQhZqidH.js +51593 -0
  250. package/dist/tokens.d.ts.map +1 -1
  251. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts +2 -3
  252. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -1
  253. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts +2 -3
  254. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -1
  255. package/dist/transactionIntent/deposits/standardDeposit.d.ts +2 -5
  256. package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -1
  257. package/dist/transactionIntent/handlers/intentHandler.d.ts +5 -4
  258. package/dist/transactionIntent/handlers/intentHandler.d.ts.map +1 -1
  259. package/dist/transactionIntent/quote/quoteHelpers.d.ts +2 -2
  260. package/dist/transactionIntent/quote/quoteHelpers.d.ts.map +1 -1
  261. package/dist/transactionIntent/types.d.ts +4 -3
  262. package/dist/transactionIntent/types.d.ts.map +1 -1
  263. package/dist/transactions.d.ts +1 -0
  264. package/dist/transactions.d.ts.map +1 -1
  265. package/dist/umd/trails.min.js +1371 -409
  266. package/dist/utils/localStorageGc.d.ts +22 -0
  267. package/dist/utils/localStorageGc.d.ts.map +1 -0
  268. package/dist/utils/validation.d.ts +14 -0
  269. package/dist/utils/validation.d.ts.map +1 -1
  270. package/dist/walletUtils.d.ts.map +1 -1
  271. package/dist/widget/components/AccountIntentTransactionHistory.d.ts.map +1 -1
  272. package/dist/widget/components/ChainList.d.ts +2 -0
  273. package/dist/widget/components/ChainList.d.ts.map +1 -1
  274. package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
  275. package/dist/widget/components/ConnectedWallets.d.ts +1 -1
  276. package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
  277. package/dist/widget/components/Earn.d.ts +2 -6
  278. package/dist/widget/components/Earn.d.ts.map +1 -1
  279. package/dist/widget/components/EarnMarkets.d.ts +9 -0
  280. package/dist/widget/components/EarnMarkets.d.ts.map +1 -0
  281. package/dist/widget/components/EarnPoolsFilters.d.ts +7 -1
  282. package/dist/widget/components/EarnPoolsFilters.d.ts.map +1 -1
  283. package/dist/widget/components/{PoolWithdraw.d.ts → EarnWithdraw.d.ts} +5 -5
  284. package/dist/widget/components/{PoolWithdraw.d.ts.map → EarnWithdraw.d.ts.map} +1 -1
  285. package/dist/widget/components/FeeOption.d.ts +1 -1
  286. package/dist/widget/components/FeeOption.d.ts.map +1 -1
  287. package/dist/widget/components/FeeOptions.d.ts +1 -1
  288. package/dist/widget/components/FeeOptions.d.ts.map +1 -1
  289. package/dist/widget/components/FiatSelector.d.ts +1 -1
  290. package/dist/widget/components/FiatSelector.d.ts.map +1 -1
  291. package/dist/widget/components/FiatSelectorButton.d.ts +1 -1
  292. package/dist/widget/components/FiatSelectorButton.d.ts.map +1 -1
  293. package/dist/widget/components/Fund.d.ts +1 -1
  294. package/dist/widget/components/Fund.d.ts.map +1 -1
  295. package/dist/widget/components/FundMethods.d.ts.map +1 -1
  296. package/dist/widget/components/FundingMethodSelectorButton.d.ts +1 -1
  297. package/dist/widget/components/FundingMethodSelectorButton.d.ts.map +1 -1
  298. package/dist/widget/components/HookModalContent.d.ts.map +1 -1
  299. package/dist/widget/components/MeldHistory.d.ts +1 -1
  300. package/dist/widget/components/MeldHistory.d.ts.map +1 -1
  301. package/dist/widget/components/MeldTransactionStatus.d.ts +1 -1
  302. package/dist/widget/components/MeldTransactionStatus.d.ts.map +1 -1
  303. package/dist/widget/components/MeshExchangeAccountHeader.d.ts +9 -0
  304. package/dist/widget/components/MeshExchangeAccountHeader.d.ts.map +1 -0
  305. package/dist/widget/components/OnrampHistoryRow.d.ts +1 -1
  306. package/dist/widget/components/OnrampHistoryRow.d.ts.map +1 -1
  307. package/dist/widget/components/OnrampProviderConfirmation.d.ts +1 -1
  308. package/dist/widget/components/OnrampProviderConfirmation.d.ts.map +1 -1
  309. package/dist/widget/components/Pay.d.ts.map +1 -1
  310. package/dist/widget/components/PoolDeposit.d.ts +2 -6
  311. package/dist/widget/components/PoolDeposit.d.ts.map +1 -1
  312. package/dist/widget/components/PulsatingButton.d.ts +9 -0
  313. package/dist/widget/components/PulsatingButton.d.ts.map +1 -0
  314. package/dist/widget/components/Receipt.d.ts +1 -1
  315. package/dist/widget/components/Receipt.d.ts.map +1 -1
  316. package/dist/widget/components/RecipientSelectorButton.d.ts.map +1 -1
  317. package/dist/widget/components/Recipients.d.ts.map +1 -1
  318. package/dist/widget/components/Swap.d.ts +2 -6
  319. package/dist/widget/components/Swap.d.ts.map +1 -1
  320. package/dist/widget/components/TokenList.d.ts +1 -0
  321. package/dist/widget/components/TokenList.d.ts.map +1 -1
  322. package/dist/widget/components/TokenSelector.d.ts +2 -2
  323. package/dist/widget/components/TokenSelector.d.ts.map +1 -1
  324. package/dist/widget/components/TransactionDetails.d.ts +1 -0
  325. package/dist/widget/components/TransactionDetails.d.ts.map +1 -1
  326. package/dist/widget/components/TransactionHistoryItem.d.ts +1 -0
  327. package/dist/widget/components/TransactionHistoryItem.d.ts.map +1 -1
  328. package/dist/widget/components/TransferPendingVertical.d.ts +1 -1
  329. package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
  330. package/dist/widget/components/WalletAccountHeader.d.ts +7 -0
  331. package/dist/widget/components/WalletAccountHeader.d.ts.map +1 -0
  332. package/dist/widget/components/WalletConfirmation.d.ts +2 -1
  333. package/dist/widget/components/WalletConfirmation.d.ts.map +1 -1
  334. package/dist/widget/components/WalletConnect.d.ts.map +1 -1
  335. package/dist/widget/components/WidgetProviders.d.ts.map +1 -1
  336. package/dist/widget/components/Withdraw.d.ts.map +1 -1
  337. package/dist/widget/components/earnMarketUtils.d.ts +11 -0
  338. package/dist/widget/components/earnMarketUtils.d.ts.map +1 -0
  339. package/dist/widget/components/earnNetworks.d.ts +6 -0
  340. package/dist/widget/components/earnNetworks.d.ts.map +1 -0
  341. package/dist/widget/index.d.ts +13 -0
  342. package/dist/widget/index.d.ts.map +1 -1
  343. package/dist/widget/index.js +17 -9
  344. package/dist/widget/modes/EarnWidget.d.ts +90 -0
  345. package/dist/widget/modes/EarnWidget.d.ts.map +1 -0
  346. package/dist/widget/modes/FundWidget.d.ts +97 -0
  347. package/dist/widget/modes/FundWidget.d.ts.map +1 -0
  348. package/dist/widget/modes/PayWidget.d.ts +80 -0
  349. package/dist/widget/modes/PayWidget.d.ts.map +1 -0
  350. package/dist/widget/modes/SwapWidget.d.ts +76 -0
  351. package/dist/widget/modes/SwapWidget.d.ts.map +1 -0
  352. package/dist/widget/modes/WithdrawWidget.d.ts +87 -0
  353. package/dist/widget/modes/WithdrawWidget.d.ts.map +1 -0
  354. package/dist/widget/providers/TrailsProvider.d.ts +3 -0
  355. package/dist/widget/providers/TrailsProvider.d.ts.map +1 -1
  356. package/dist/widget/providers/WidgetProviderTree.d.ts.map +1 -1
  357. package/dist/widget/shared/destinationDefaultToken.d.ts +15 -0
  358. package/dist/widget/shared/destinationDefaultToken.d.ts.map +1 -0
  359. package/dist/widget/shared/mapSharedProps.d.ts +9 -0
  360. package/dist/widget/shared/mapSharedProps.d.ts.map +1 -0
  361. package/dist/widget/shared/methodMap.d.ts +18 -0
  362. package/dist/widget/shared/methodMap.d.ts.map +1 -0
  363. package/dist/widget/shared/resolution.d.ts +23 -0
  364. package/dist/widget/shared/resolution.d.ts.map +1 -0
  365. package/dist/widget/shared/resolvePaymentSource.d.ts +36 -0
  366. package/dist/widget/shared/resolvePaymentSource.d.ts.map +1 -0
  367. package/dist/widget/shared/tokenAllowlist.d.ts +36 -0
  368. package/dist/widget/shared/tokenAllowlist.d.ts.map +1 -0
  369. package/dist/widget/shared/types.d.ts +150 -0
  370. package/dist/widget/shared/types.d.ts.map +1 -0
  371. package/dist/widget/styles.gen.d.ts +2 -0
  372. package/dist/widget/styles.gen.d.ts.map +1 -0
  373. package/dist/widget/types/commonProps.d.ts +3 -7
  374. package/dist/widget/types/commonProps.d.ts.map +1 -1
  375. package/dist/widget/utils/fundMethodSwitchState.d.ts +1 -0
  376. package/dist/widget/utils/fundMethodSwitchState.d.ts.map +1 -1
  377. package/dist/widget/utils/viewManagerGuards.d.ts +1 -1
  378. package/dist/widget/utils/viewManagerGuards.d.ts.map +1 -1
  379. package/dist/widget/widget.d.ts +23 -16
  380. package/dist/widget/widget.d.ts.map +1 -1
  381. package/package.json +22 -23
  382. package/dist/buffer.d.ts +0 -3
  383. package/dist/buffer.d.ts.map +0 -1
  384. package/dist/ccip-CT_An6eM.js +0 -230
  385. package/dist/index-RfqL5Foz.js +0 -114567
  386. package/dist/paymasterSend.d.ts +0 -90
  387. package/dist/paymasterSend.d.ts.map +0 -1
  388. package/dist/sendUserOp.d.ts +0 -122
  389. package/dist/sendUserOp.d.ts.map +0 -1
  390. package/dist/toSimpleSmartAccount.d.ts +0 -95
  391. package/dist/toSimpleSmartAccount.d.ts.map +0 -1
  392. package/dist/transactionIntent/utils/erc20Approval.d.ts +0 -34
  393. package/dist/transactionIntent/utils/erc20Approval.d.ts.map +0 -1
  394. package/dist/utils/allowance.d.ts +0 -19
  395. package/dist/utils/allowance.d.ts.map +0 -1
  396. package/dist/widget/analytics/useWidgetAnalytics.d.ts.map +0 -1
  397. package/dist/widget/components/FeeBreakdown.d.ts +0 -9
  398. package/dist/widget/components/FeeBreakdown.d.ts.map +0 -1
  399. package/dist/widget/components/HideBalances.d.ts +0 -4
  400. package/dist/widget/components/HideBalances.d.ts.map +0 -1
  401. package/dist/widget/components/MeshExchangeSelection.d.ts.map +0 -1
  402. package/dist/widget/components/OnrampDeposit.d.ts +0 -10
  403. package/dist/widget/components/OnrampDeposit.d.ts.map +0 -1
  404. package/dist/widget/components/SwapSettings.d.ts +0 -4
  405. package/dist/widget/components/SwapSettings.d.ts.map +0 -1
  406. package/dist/widget/components/TruncatedAddress.d.ts +0 -12
  407. package/dist/widget/components/TruncatedAddress.d.ts.map +0 -1
  408. package/dist/widget/components/WalletImage.d.ts +0 -8
  409. package/dist/widget/components/WalletImage.d.ts.map +0 -1
  410. package/dist/widget/css/compiled.css +0 -26
  411. package/dist/widget/css/index.css +0 -686
  412. package/dist/widget/hooks/useAddressWalletIcon.d.ts.map +0 -1
  413. package/dist/widget/hooks/useAmountUsd.d.ts.map +0 -1
  414. package/dist/widget/hooks/useBalanceVisible.d.ts.map +0 -1
  415. package/dist/widget/hooks/useChainFilter.d.ts.map +0 -1
  416. package/dist/widget/hooks/useCheckout.d.ts.map +0 -1
  417. package/dist/widget/hooks/useClickTracking.d.ts.map +0 -1
  418. package/dist/widget/hooks/useCombinedHistory.d.ts.map +0 -1
  419. package/dist/widget/hooks/useConnector.d.ts.map +0 -1
  420. package/dist/widget/hooks/useCustomTokenSearch.d.ts.map +0 -1
  421. package/dist/widget/hooks/useDebounce.d.ts.map +0 -1
  422. package/dist/widget/hooks/useDebugScreens.d.ts.map +0 -1
  423. package/dist/widget/hooks/useDefaultDestinationToken.d.ts.map +0 -1
  424. package/dist/widget/hooks/useDefaultOriginToken.d.ts.map +0 -1
  425. package/dist/widget/hooks/useDepositMonitor.d.ts.map +0 -1
  426. package/dist/widget/hooks/useDestinationSelectedToken.d.ts.map +0 -1
  427. package/dist/widget/hooks/useDisplayCurrencyPreference.d.ts.map +0 -1
  428. package/dist/widget/hooks/useEarnPool.d.ts.map +0 -1
  429. package/dist/widget/hooks/useExecutingIntentsCount.d.ts.map +0 -1
  430. package/dist/widget/hooks/useExternalFundingReceiptSync.d.ts.map +0 -1
  431. package/dist/widget/hooks/useFiatOnRampCurrencies.d.ts.map +0 -1
  432. package/dist/widget/hooks/useFiatSelectedCurrency.d.ts.map +0 -1
  433. package/dist/widget/hooks/useGetIntent.d.ts.map +0 -1
  434. package/dist/widget/hooks/useIntentReceiptBalances.d.ts.map +0 -1
  435. package/dist/widget/hooks/useIntentTransactionHistory.d.ts.map +0 -1
  436. package/dist/widget/hooks/useIsConnectedWalletSmartContract.d.ts +0 -7
  437. package/dist/widget/hooks/useIsConnectedWalletSmartContract.d.ts.map +0 -1
  438. package/dist/widget/hooks/useIsMobile.d.ts.map +0 -1
  439. package/dist/widget/hooks/useIsSequenceWallet.d.ts.map +0 -1
  440. package/dist/widget/hooks/useLocalePreference.d.ts.map +0 -1
  441. package/dist/widget/hooks/useMeldTransactionHistory.d.ts.map +0 -1
  442. package/dist/widget/hooks/useMeldTransactionStatus.d.ts.map +0 -1
  443. package/dist/widget/hooks/useOnRampCountryDefaults.d.ts.map +0 -1
  444. package/dist/widget/hooks/useOnRampPaymentMethods.d.ts.map +0 -1
  445. package/dist/widget/hooks/useOnRampProviderWidget.d.ts.map +0 -1
  446. package/dist/widget/hooks/useOnRampQuote.d.ts.map +0 -1
  447. package/dist/widget/hooks/useOnRampTransactionStatus.d.ts.map +0 -1
  448. package/dist/widget/hooks/useOriginSelectedToken.d.ts.map +0 -1
  449. package/dist/widget/hooks/usePayMessage.d.ts.map +0 -1
  450. package/dist/widget/hooks/usePriceImpactWarning.d.ts.map +0 -1
  451. package/dist/widget/hooks/useQuote.d.ts +0 -378
  452. package/dist/widget/hooks/useQuote.d.ts.map +0 -1
  453. package/dist/widget/hooks/useRecentTokens.d.ts.map +0 -1
  454. package/dist/widget/hooks/useRecipients.d.ts.map +0 -1
  455. package/dist/widget/hooks/useScreenTracking.d.ts +0 -2
  456. package/dist/widget/hooks/useScreenTracking.d.ts.map +0 -1
  457. package/dist/widget/hooks/useSelectedFeeOption.d.ts.map +0 -1
  458. package/dist/widget/hooks/useSelectedFundMethod.d.ts.map +0 -1
  459. package/dist/widget/hooks/useSelectedRecipient.d.ts.map +0 -1
  460. package/dist/widget/hooks/useSendForm.d.ts.map +0 -1
  461. package/dist/widget/hooks/useSwapAmount.d.ts.map +0 -1
  462. package/dist/widget/hooks/useSwapState.d.ts.map +0 -1
  463. package/dist/widget/hooks/useTargetAmount.d.ts.map +0 -1
  464. package/dist/widget/hooks/useTheme.d.ts.map +0 -1
  465. package/dist/widget/hooks/useTokenList.d.ts.map +0 -1
  466. package/dist/widget/hooks/useTrailsSendTransaction.d.ts +0 -83
  467. package/dist/widget/hooks/useTrailsSendTransaction.d.ts.map +0 -1
  468. package/dist/widget/hooks/useViewManager.d.ts.map +0 -1
  469. package/dist/widget/hooks/useWalletConnectUri.d.ts +0 -11
  470. package/dist/widget/hooks/useWalletConnectUri.d.ts.map +0 -1
  471. package/dist/widget/hooks/useWalletConnectionContext.d.ts.map +0 -1
  472. package/dist/widget/hooks/useWidgetProps.d.ts.map +0 -1
  473. package/dist/widget/styles.d.ts +0 -2
  474. package/dist/widget/styles.d.ts.map +0 -1
  475. package/dist/widget/types.d.ts +0 -44
  476. package/dist/widget/types.d.ts.map +0 -1
  477. package/dist/widget/utils/historyUtils.d.ts +0 -18
  478. package/dist/widget/utils/historyUtils.d.ts.map +0 -1
  479. package/src/abi.ts +0 -38
  480. package/src/abis/erc20.ts +0 -60
  481. package/src/abis/trailsHydrate.ts +0 -185
  482. package/src/abis/trailsRouter.ts +0 -121
  483. package/src/abis/trailsSweep.ts +0 -32
  484. package/src/abortController.ts +0 -35
  485. package/src/analytics.ts +0 -2029
  486. package/src/buffer.ts +0 -10
  487. package/src/chainSwitch.ts +0 -95
  488. package/src/chains.ts +0 -570
  489. package/src/config.ts +0 -118
  490. package/src/constants.ts +0 -239
  491. package/src/contractUtils.ts +0 -46
  492. package/src/cssUtils.ts +0 -5
  493. package/src/customChains.ts +0 -24
  494. package/src/customTokens.ts +0 -168
  495. package/src/decoders.ts +0 -365
  496. package/src/ens.ts +0 -74
  497. package/src/error.ts +0 -268
  498. package/src/estimate.ts +0 -480
  499. package/src/explorer.ts +0 -38
  500. package/src/fees.ts +0 -362
  501. package/src/gasless.ts +0 -638
  502. package/src/index.ts +0 -205
  503. package/src/indexerClient.ts +0 -118
  504. package/src/intentReceiptMonitor.ts +0 -99
  505. package/src/intentReceiptPoller.ts +0 -327
  506. package/src/intents.ts +0 -1133
  507. package/src/keyMachineClient.ts +0 -29
  508. package/src/keymachine/index.ts +0 -175
  509. package/src/keymachine/key-machine.gen.ts +0 -993
  510. package/src/localeUtils.ts +0 -244
  511. package/src/logger/index.ts +0 -95
  512. package/src/logger/useSyncLoggerDebug.ts +0 -11
  513. package/src/logger.ts +0 -1
  514. package/src/meld/components/MeldCountriesList.tsx +0 -237
  515. package/src/meld/components/MeldFundMethods.tsx +0 -265
  516. package/src/meld/components/MeldProvidersList.tsx +0 -187
  517. package/src/meld/components/MeldTokensList.tsx +0 -321
  518. package/src/meld/components/SimpleHeader.tsx +0 -35
  519. package/src/meld/utils/meld.ts +0 -77
  520. package/src/mutations.ts +0 -166
  521. package/src/onramp/MeshConnectFlow.tsx +0 -86
  522. package/src/onramp/MeshConnectIframe.tsx +0 -661
  523. package/src/onramp/SendFromExchangeButton.tsx +0 -81
  524. package/src/onramp/TrailsOnRampProvider.tsx +0 -59
  525. package/src/onramp/index.ts +0 -31
  526. package/src/onramp/meshconnect.ts +0 -277
  527. package/src/onramp/trailsOnramp.tsx +0 -130
  528. package/src/onramp-client/index.ts +0 -52
  529. package/src/onrampClient.ts +0 -46
  530. package/src/paymasterSend.ts +0 -521
  531. package/src/placeholder.ts +0 -92
  532. package/src/poolUtils.ts +0 -222
  533. package/src/pools.ts +0 -120
  534. package/src/prepareSend.ts +0 -553
  535. package/src/query/balance.fetchers.ts +0 -753
  536. package/src/query/balance.hooks.ts +0 -357
  537. package/src/query/balance.queries.ts +0 -307
  538. package/src/query/chains.hooks.ts +0 -45
  539. package/src/query/chains.queries.ts +0 -17
  540. package/src/query/client.ts +0 -20
  541. package/src/query/fiat.fetchers.ts +0 -33
  542. package/src/query/fiat.hooks.ts +0 -71
  543. package/src/query/fiat.queries.ts +0 -67
  544. package/src/query/geo.fetchers.ts +0 -100
  545. package/src/query/geo.hooks.ts +0 -16
  546. package/src/query/geo.queries.ts +0 -36
  547. package/src/query/helpers.ts +0 -81
  548. package/src/query/meld.fetchers.ts +0 -97
  549. package/src/query/meld.hooks.ts +0 -18
  550. package/src/query/meld.queries.ts +0 -184
  551. package/src/query/persister.ts +0 -11
  552. package/src/query/price.fetchers.ts +0 -53
  553. package/src/query/price.hooks.ts +0 -46
  554. package/src/query/price.queries.ts +0 -364
  555. package/src/query/tokenList.queries.ts +0 -118
  556. package/src/queryParams.ts +0 -100
  557. package/src/recover.ts +0 -1728
  558. package/src/sendUserOp.ts +0 -512
  559. package/src/theme.ts +0 -2
  560. package/src/toSimpleSmartAccount.ts +0 -567
  561. package/src/toast.ts +0 -110
  562. package/src/tokens.ts +0 -1862
  563. package/src/trailsClient.ts +0 -40
  564. package/src/transactionIntent/constants.ts +0 -15
  565. package/src/transactionIntent/deposits/depositOrchestrator.ts +0 -243
  566. package/src/transactionIntent/deposits/gaslessDeposit.ts +0 -705
  567. package/src/transactionIntent/deposits/index.ts +0 -3
  568. package/src/transactionIntent/deposits/standardDeposit.ts +0 -590
  569. package/src/transactionIntent/execution/index.ts +0 -1
  570. package/src/transactionIntent/execution/transactionState.ts +0 -38
  571. package/src/transactionIntent/handlers/index.ts +0 -1
  572. package/src/transactionIntent/handlers/intentHandler.ts +0 -1613
  573. package/src/transactionIntent/helpers/index.ts +0 -1
  574. package/src/transactionIntent/helpers/transactionStateHelpers.ts +0 -440
  575. package/src/transactionIntent/index.ts +0 -10
  576. package/src/transactionIntent/quote/feeExtractors.ts +0 -61
  577. package/src/transactionIntent/quote/index.ts +0 -3
  578. package/src/transactionIntent/quote/normalizeQuote.ts +0 -559
  579. package/src/transactionIntent/quote/quoteHelpers.ts +0 -117
  580. package/src/transactionIntent/types.ts +0 -241
  581. package/src/transactionIntent/utils/balanceChecker.ts +0 -103
  582. package/src/transactionIntent/utils/erc20Approval.ts +0 -171
  583. package/src/transactionIntent/utils/index.ts +0 -2
  584. package/src/transactionIntent/utils/resilientDepositTracker.ts +0 -171
  585. package/src/transactionIntent/utils/testnetHelpers.ts +0 -5
  586. package/src/transactionIntent/validators.ts +0 -27
  587. package/src/transactions.ts +0 -429
  588. package/src/types.d.ts +0 -16
  589. package/src/umd.tsx +0 -33
  590. package/src/utils/address.ts +0 -78
  591. package/src/utils/allowance.ts +0 -47
  592. package/src/utils/fiat.ts +0 -32
  593. package/src/utils/format.ts +0 -625
  594. package/src/utils/passthrough.ts +0 -93
  595. package/src/utils/time.ts +0 -118
  596. package/src/utils/validation.ts +0 -104
  597. package/src/utils.ts +0 -112
  598. package/src/version.ts +0 -8
  599. package/src/vite-env.d.ts +0 -4
  600. package/src/walletUtils.ts +0 -293
  601. package/src/wallets.ts +0 -544
  602. package/src/widget/analytics/useWidgetAnalytics.ts +0 -56
  603. package/src/widget/assets/Exchange-icon-black.svg +0 -5
  604. package/src/widget/assets/MetaMask-icon-fox-with-margins.svg +0 -31
  605. package/src/widget/assets/MetaMask-icon-fox.svg +0 -26
  606. package/src/widget/assets/MetaMask-logo-black.svg +0 -3
  607. package/src/widget/assets/MetaMask-logo-white.svg +0 -16
  608. package/src/widget/assets/Trails-logo-black.svg +0 -13
  609. package/src/widget/assets/Trails-logo-white.svg +0 -13
  610. package/src/widget/assets/WalletChange-black.svg +0 -5
  611. package/src/widget/assets/WalletConnect-logo-black.svg +0 -14
  612. package/src/widget/assets/WalletConnect-logo-blue.svg +0 -14
  613. package/src/widget/assets/WalletConnect-logo-white.svg +0 -14
  614. package/src/widget/assets/WalletConnect-logo.svg +0 -40
  615. package/src/widget/assets/aave.svg +0 -14
  616. package/src/widget/assets/morpho.svg +0 -14
  617. package/src/widget/compiled.css +0 -26
  618. package/src/widget/components/AccountActionsDropdown.tsx +0 -31
  619. package/src/widget/components/AccountIntentTransactionHistory.tsx +0 -756
  620. package/src/widget/components/AccountIntentTransactionHistoryButton.tsx +0 -34
  621. package/src/widget/components/AccountSettings.tsx +0 -168
  622. package/src/widget/components/AddressOrEnsName.tsx +0 -24
  623. package/src/widget/components/AddressWalletIcon.tsx +0 -49
  624. package/src/widget/components/AllChainsIcon.tsx +0 -54
  625. package/src/widget/components/ChainFilterDropdown.tsx +0 -220
  626. package/src/widget/components/ChainImage.tsx +0 -40
  627. package/src/widget/components/ChainList.tsx +0 -158
  628. package/src/widget/components/ClassicSwap.tsx +0 -1761
  629. package/src/widget/components/ConfigDisplay.tsx +0 -158
  630. package/src/widget/components/ConnectWallet.tsx +0 -566
  631. package/src/widget/components/ConnectedWallets.tsx +0 -414
  632. package/src/widget/components/CopyButton.tsx +0 -108
  633. package/src/widget/components/CountryFilterDropdown.tsx +0 -179
  634. package/src/widget/components/DebugMenu.tsx +0 -50
  635. package/src/widget/components/DebugScreensList.tsx +0 -70
  636. package/src/widget/components/DebugToast.tsx +0 -63
  637. package/src/widget/components/DepositTracker.tsx +0 -326
  638. package/src/widget/components/DirectTransfer.tsx +0 -305
  639. package/src/widget/components/Disconnect.tsx +0 -68
  640. package/src/widget/components/DynamicInputStyles.tsx +0 -121
  641. package/src/widget/components/DynamicSizeInputField.tsx +0 -245
  642. package/src/widget/components/ENSAvatar.tsx +0 -33
  643. package/src/widget/components/Earn.tsx +0 -160
  644. package/src/widget/components/EarnPools.tsx +0 -417
  645. package/src/widget/components/EarnPoolsFilters.tsx +0 -165
  646. package/src/widget/components/ErrorAnimationIcon.tsx +0 -130
  647. package/src/widget/components/ErrorDisplay.tsx +0 -152
  648. package/src/widget/components/ExecutingIntentsBadge.tsx +0 -24
  649. package/src/widget/components/ExecutionStatusBadge.tsx +0 -53
  650. package/src/widget/components/FeeBreakdown.tsx +0 -155
  651. package/src/widget/components/FeeOption.tsx +0 -170
  652. package/src/widget/components/FeeOptions.tsx +0 -247
  653. package/src/widget/components/FiatSelector.tsx +0 -308
  654. package/src/widget/components/FiatSelectorButton.tsx +0 -68
  655. package/src/widget/components/Footer.tsx +0 -67
  656. package/src/widget/components/Fund.tsx +0 -2463
  657. package/src/widget/components/FundMethods.tsx +0 -423
  658. package/src/widget/components/FundWalletSelection.tsx +0 -60
  659. package/src/widget/components/FundingMethodSelectorButton.tsx +0 -106
  660. package/src/widget/components/GreenCheckAnimation.tsx +0 -119
  661. package/src/widget/components/HideBalances.tsx +0 -24
  662. package/src/widget/components/HighPriceImpactBlock.tsx +0 -44
  663. package/src/widget/components/HookModalContent.tsx +0 -377
  664. package/src/widget/components/Identicon.tsx +0 -228
  665. package/src/widget/components/LoadingSpinner.tsx +0 -9
  666. package/src/widget/components/MeldForm.tsx +0 -780
  667. package/src/widget/components/MeldHistory.tsx +0 -433
  668. package/src/widget/components/MeldStepsFlow.tsx +0 -1651
  669. package/src/widget/components/MeldTransactionStatus.tsx +0 -255
  670. package/src/widget/components/MeshExchangeSelection.tsx +0 -218
  671. package/src/widget/components/Modal.tsx +0 -86
  672. package/src/widget/components/OFTProgressBar.tsx +0 -89
  673. package/src/widget/components/OnRampProviderSelector.tsx +0 -263
  674. package/src/widget/components/OnrampDeposit.tsx +0 -122
  675. package/src/widget/components/OnrampErrorScreen.tsx +0 -163
  676. package/src/widget/components/OnrampHistoryRow.tsx +0 -321
  677. package/src/widget/components/OnrampPaymentMethods.tsx +0 -81
  678. package/src/widget/components/OnrampProviderConfirmation.tsx +0 -1060
  679. package/src/widget/components/OriginSelectionAmount.tsx +0 -144
  680. package/src/widget/components/OriginTransferInformation.tsx +0 -59
  681. package/src/widget/components/Pay.tsx +0 -1165
  682. package/src/widget/components/PaymentMethods.tsx +0 -198
  683. package/src/widget/components/PercentageMaxButtons.tsx +0 -112
  684. package/src/widget/components/PoolDeposit.tsx +0 -642
  685. package/src/widget/components/PoolWithdraw.tsx +0 -761
  686. package/src/widget/components/PriceImpactWarning.tsx +0 -87
  687. package/src/widget/components/QRCodeOptions.tsx +0 -65
  688. package/src/widget/components/QRCodeWalletSelect.tsx +0 -80
  689. package/src/widget/components/QrCode.tsx +0 -216
  690. package/src/widget/components/QuoteDetails.tsx +0 -1275
  691. package/src/widget/components/Receipt.tsx +0 -673
  692. package/src/widget/components/ReceiptRecoverableFunds.tsx +0 -135
  693. package/src/widget/components/RecentTokens.tsx +0 -66
  694. package/src/widget/components/RecipientSelectorButton.tsx +0 -50
  695. package/src/widget/components/Recipients.tsx +0 -413
  696. package/src/widget/components/RefundWarning.tsx +0 -61
  697. package/src/widget/components/RequiredPropsError.tsx +0 -33
  698. package/src/widget/components/ScreenHeader.tsx +0 -123
  699. package/src/widget/components/SearchInputField.tsx +0 -99
  700. package/src/widget/components/SessionTimeoutScreen.tsx +0 -103
  701. package/src/widget/components/ShadowPortal.tsx +0 -99
  702. package/src/widget/components/ShadowRootContext.tsx +0 -17
  703. package/src/widget/components/SimpleRecipientInputScreen.tsx +0 -91
  704. package/src/widget/components/SlippageToleranceSettings.tsx +0 -279
  705. package/src/widget/components/Swap.tsx +0 -50
  706. package/src/widget/components/SwapDisplay.tsx +0 -68
  707. package/src/widget/components/SwapSettings.tsx +0 -52
  708. package/src/widget/components/ThemeProvider.tsx +0 -115
  709. package/src/widget/components/ThemeSyncer.tsx +0 -47
  710. package/src/widget/components/Toast.tsx +0 -336
  711. package/src/widget/components/TokenDisplayNonSelectable.tsx +0 -40
  712. package/src/widget/components/TokenImage.tsx +0 -156
  713. package/src/widget/components/TokenList.tsx +0 -107
  714. package/src/widget/components/TokenSelector.tsx +0 -807
  715. package/src/widget/components/TokenSelectorButton.tsx +0 -123
  716. package/src/widget/components/TokenSkeleton.tsx +0 -53
  717. package/src/widget/components/Tooltip.tsx +0 -64
  718. package/src/widget/components/TrailsHookModal.tsx +0 -107
  719. package/src/widget/components/TransactionDetails.tsx +0 -534
  720. package/src/widget/components/TransactionHistoryItem.tsx +0 -767
  721. package/src/widget/components/TransferPendingVertical.tsx +0 -591
  722. package/src/widget/components/TruncatedAddress.tsx +0 -68
  723. package/src/widget/components/TruncatedTransactionHash.tsx +0 -74
  724. package/src/widget/components/UserPreferences.tsx +0 -570
  725. package/src/widget/components/WaasFeeOptions.tsx +0 -588
  726. package/src/widget/components/WalletConfirmation.tsx +0 -220
  727. package/src/widget/components/WalletConnect.tsx +0 -348
  728. package/src/widget/components/WalletConnectionPending.tsx +0 -178
  729. package/src/widget/components/WalletImage.tsx +0 -52
  730. package/src/widget/components/WalletList.tsx +0 -125
  731. package/src/widget/components/WidgetProviders.tsx +0 -82
  732. package/src/widget/components/Withdraw.tsx +0 -1106
  733. package/src/widget/components/YellowWarningAnimation.tsx +0 -146
  734. package/src/widget/hooks/useAddressWalletIcon.ts +0 -55
  735. package/src/widget/hooks/useAmountUsd.ts +0 -44
  736. package/src/widget/hooks/useBalanceVisible.tsx +0 -95
  737. package/src/widget/hooks/useChainFilter.tsx +0 -56
  738. package/src/widget/hooks/useCheckout.ts +0 -361
  739. package/src/widget/hooks/useClickTracking.ts +0 -74
  740. package/src/widget/hooks/useCombinedHistory.ts +0 -420
  741. package/src/widget/hooks/useConnector.tsx +0 -24
  742. package/src/widget/hooks/useCustomTokenSearch.tsx +0 -369
  743. package/src/widget/hooks/useDebounce.ts +0 -25
  744. package/src/widget/hooks/useDebugScreens.ts +0 -600
  745. package/src/widget/hooks/useDefaultDestinationToken.tsx +0 -179
  746. package/src/widget/hooks/useDefaultOriginToken.tsx +0 -407
  747. package/src/widget/hooks/useDepositMonitor.ts +0 -118
  748. package/src/widget/hooks/useDestinationSelectedToken.tsx +0 -310
  749. package/src/widget/hooks/useDisplayCurrencyPreference.tsx +0 -145
  750. package/src/widget/hooks/useEarnPool.tsx +0 -36
  751. package/src/widget/hooks/useExecutingIntentsCount.ts +0 -78
  752. package/src/widget/hooks/useExternalFundingReceiptSync.ts +0 -79
  753. package/src/widget/hooks/useFiatOnRampCurrencies.ts +0 -46
  754. package/src/widget/hooks/useFiatSelectedCurrency.tsx +0 -123
  755. package/src/widget/hooks/useGetIntent.ts +0 -54
  756. package/src/widget/hooks/useIntentReceiptBalances.ts +0 -141
  757. package/src/widget/hooks/useIntentTransactionHistory.ts +0 -790
  758. package/src/widget/hooks/useIsConnectedWalletSmartContract.ts +0 -43
  759. package/src/widget/hooks/useIsMobile.tsx +0 -50
  760. package/src/widget/hooks/useIsSequenceWallet.ts +0 -17
  761. package/src/widget/hooks/useLocalePreference.tsx +0 -187
  762. package/src/widget/hooks/useMeldTransactionHistory.ts +0 -184
  763. package/src/widget/hooks/useMeldTransactionStatus.ts +0 -707
  764. package/src/widget/hooks/useOnRampCountryDefaults.ts +0 -57
  765. package/src/widget/hooks/useOnRampPaymentMethods.ts +0 -72
  766. package/src/widget/hooks/useOnRampProviderWidget.ts +0 -184
  767. package/src/widget/hooks/useOnRampQuote.ts +0 -340
  768. package/src/widget/hooks/useOnRampTransactionStatus.ts +0 -196
  769. package/src/widget/hooks/useOriginSelectedToken.tsx +0 -253
  770. package/src/widget/hooks/usePayMessage.tsx +0 -496
  771. package/src/widget/hooks/usePriceImpactWarning.ts +0 -17
  772. package/src/widget/hooks/useQuote.ts +0 -1239
  773. package/src/widget/hooks/useRecentTokens.ts +0 -159
  774. package/src/widget/hooks/useRecipients.ts +0 -167
  775. package/src/widget/hooks/useScreenTracking.ts +0 -14
  776. package/src/widget/hooks/useSelectedFeeOption.tsx +0 -323
  777. package/src/widget/hooks/useSelectedFundMethod.tsx +0 -93
  778. package/src/widget/hooks/useSelectedRecipient.tsx +0 -75
  779. package/src/widget/hooks/useSendForm.ts +0 -1389
  780. package/src/widget/hooks/useSwapAmount.tsx +0 -50
  781. package/src/widget/hooks/useSwapState.tsx +0 -121
  782. package/src/widget/hooks/useTargetAmount.ts +0 -26
  783. package/src/widget/hooks/useTheme.tsx +0 -80
  784. package/src/widget/hooks/useTokenList.ts +0 -1168
  785. package/src/widget/hooks/useTrailsSendTransaction.ts +0 -987
  786. package/src/widget/hooks/useViewManager.tsx +0 -506
  787. package/src/widget/hooks/useWalletConnectUri.tsx +0 -307
  788. package/src/widget/hooks/useWalletConnectionContext.tsx +0 -128
  789. package/src/widget/hooks/useWidgetProps.tsx +0 -33
  790. package/src/widget/index.css +0 -686
  791. package/src/widget/index.tsx +0 -28
  792. package/src/widget/providers/TrailsModalProvider.tsx +0 -238
  793. package/src/widget/providers/TrailsProvider.tsx +0 -155
  794. package/src/widget/providers/UserActivityProvider.tsx +0 -78
  795. package/src/widget/providers/WidgetProviderTree.tsx +0 -90
  796. package/src/widget/styles.ts +0 -26
  797. package/src/widget/types/analytics.ts +0 -22
  798. package/src/widget/types/commonProps.ts +0 -56
  799. package/src/widget/types/svg.d.ts +0 -8
  800. package/src/widget/types.ts +0 -51
  801. package/src/widget/utils/countryUtils.ts +0 -89
  802. package/src/widget/utils/createWagmiConfig.ts +0 -43
  803. package/src/widget/utils/forexRateStore.ts +0 -120
  804. package/src/widget/utils/fundMethodSwitchState.ts +0 -27
  805. package/src/widget/utils/historyFilters.ts +0 -157
  806. package/src/widget/utils/historyUtils.ts +0 -101
  807. package/src/widget/utils/localeStore.ts +0 -68
  808. package/src/widget/utils/meldProviderUtils.ts +0 -26
  809. package/src/widget/utils/meshSupportedTokens.ts +0 -28
  810. package/src/widget/utils/onrampConfig.ts +0 -15
  811. package/src/widget/utils/statusLabel.ts +0 -3
  812. package/src/widget/utils/tokens.ts +0 -138
  813. package/src/widget/utils/trailsOnrampConfig.ts +0 -39
  814. package/src/widget/utils/transactionFailure.ts +0 -52
  815. package/src/widget/utils/viewManagerGuards.ts +0 -49
  816. package/src/widget/utils/windowUtils.ts +0 -138
  817. package/src/widget/widget.tsx +0 -3400
  818. /package/dist/{widget/hooks → hooks}/useAddressWalletIcon.d.ts +0 -0
  819. /package/dist/{widget/hooks → hooks}/useAmountUsd.d.ts +0 -0
  820. /package/dist/{widget/hooks → hooks}/useBalanceVisible.d.ts +0 -0
  821. /package/dist/{widget/hooks → hooks}/useChainFilter.d.ts +0 -0
  822. /package/dist/{widget/hooks → hooks}/useClickTracking.d.ts +0 -0
  823. /package/dist/{widget/hooks → hooks}/useConnector.d.ts +0 -0
  824. /package/dist/{widget/hooks → hooks}/useDebounce.d.ts +0 -0
  825. /package/dist/{widget/hooks → hooks}/useDepositMonitor.d.ts +0 -0
  826. /package/dist/{widget/hooks → hooks}/useDisplayCurrencyPreference.d.ts +0 -0
  827. /package/dist/{widget/hooks → hooks}/useExecutingIntentsCount.d.ts +0 -0
  828. /package/dist/{widget/hooks → hooks}/useFiatSelectedCurrency.d.ts +0 -0
  829. /package/dist/{widget/hooks → hooks}/useGetIntent.d.ts +0 -0
  830. /package/dist/{widget/hooks → hooks}/useIsMobile.d.ts +0 -0
  831. /package/dist/{widget/hooks → hooks}/useIsSequenceWallet.d.ts +0 -0
  832. /package/dist/{widget/hooks → hooks}/useLocalePreference.d.ts +0 -0
  833. /package/dist/{widget/hooks → hooks}/useMeldTransactionHistory.d.ts +0 -0
  834. /package/dist/{widget/hooks → hooks}/useMeldTransactionStatus.d.ts +0 -0
  835. /package/dist/{widget/hooks → hooks}/useOnRampCountryDefaults.d.ts +0 -0
  836. /package/dist/{widget/hooks → hooks}/usePayMessage.d.ts +0 -0
  837. /package/dist/{widget/hooks → hooks}/usePriceImpactWarning.d.ts +0 -0
  838. /package/dist/{widget/hooks → hooks}/useRecipients.d.ts +0 -0
  839. /package/dist/{widget/hooks → hooks}/useSelectedFeeOption.d.ts +0 -0
  840. /package/dist/{widget/hooks → hooks}/useSelectedRecipient.d.ts +0 -0
  841. /package/dist/{widget/hooks → hooks}/useSwapAmount.d.ts +0 -0
  842. /package/dist/{widget/hooks → hooks}/useTargetAmount.d.ts +0 -0
  843. /package/dist/{widget/hooks → hooks}/useTheme.d.ts +0 -0
  844. /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
- }