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,1168 +0,0 @@
1
- import type { Address } from "ox"
2
- import { useEffect, useMemo, useState } from "react"
3
- import { isAddress, zeroAddress } from "viem"
4
- import { useAccount } from "wagmi"
5
- import { useQuery } from "@tanstack/react-query"
6
- import { getChainInfo } from "../../chains.js"
7
- import { useSupportedChains } from "../../query/chains.hooks.js"
8
- import type { Token } from "../../tokens.js"
9
- import {
10
- addressEqual,
11
- isNativeToken as isNativeTokenUtil,
12
- normalizeAddress,
13
- } from "../../utils/address.js"
14
- import { isValidDecimals } from "../../utils/validation.js"
15
- import {
16
- useAccountTotalBalanceUsd,
17
- useHasSufficientBalanceUsd,
18
- useTokenBalances,
19
- WIDGET_REFRESH_INTERVAL,
20
- } from "../../query/balance.hooks.js"
21
- import {
22
- formatPriceFields,
23
- formatUsdAmountDisplay,
24
- } from "../../utils/format.js"
25
- import { useSupportedTokens, useGetTokenImageUrl } from "../../tokens.js"
26
- import { useTrailsClient } from "../../trailsClient.js"
27
- import { useTokenPrices } from "../../query/price.hooks.js"
28
- import { logger } from "../../logger.js"
29
- import { useOnrampClient } from "../../onrampClient.js"
30
- import type { MeshSupportedToken } from "@0xtrails/api/onramp"
31
- import { useTrails } from "../providers/TrailsProvider.js"
32
- import { isMeshAssetSupported } from "../utils/meshSupportedTokens.js"
33
- import { getActiveMeshEnvironment } from "../utils/onrampConfig.js"
34
- import { getWidgetOnrampConfig } from "../utils/trailsOnrampConfig.js"
35
- import { DAY_MS } from "../../utils/time.js"
36
- import { useChainFilter } from "./useChainFilter.js"
37
- import { useCustomTokenSearch } from "./useCustomTokenSearch.js"
38
- import { useDebounce } from "./useDebounce.js"
39
- import { useSelectedFundMethod } from "./useSelectedFundMethod.js"
40
- import { useWidgetProps } from "./useWidgetProps.js"
41
- import type { FundMethod } from "../../transactionIntent/types.js"
42
- import { tokenListQueries } from "../../query/tokenList.queries.js"
43
-
44
- // Standard tokens for QR code and exchange modes
45
- const STANDARD_TOKENS = [
46
- "ETH",
47
- "POL",
48
- "USDC",
49
- "USDT",
50
- "DAI",
51
- "BAT",
52
- "WETH",
53
- ] as const
54
-
55
- // Type for API token info from getTokenList endpoint
56
- type ApiTokenInfo = {
57
- chainId: number
58
- address: string
59
- name: string
60
- symbol: string
61
- decimals: number
62
- supportsBridging?: boolean
63
- logoUri?: string
64
- }
65
-
66
- // Helper function to validate and clamp decimals (1-18)
67
- function validateDecimals(decimals: number): number {
68
- return Math.max(1, Math.min(18, Math.floor(decimals || 18)))
69
- }
70
-
71
- // Helper function to check if token is native
72
- function isNativeToken(token: Token | ApiTokenInfo): boolean {
73
- // Token has isNativeToken property
74
- if ("isNativeToken" in token && typeof token.isNativeToken === "boolean") {
75
- return token.isNativeToken
76
- }
77
- // ApiTokenInfo uses "address" field (intermediate type before conversion to Token)
78
- if ("address" in token) {
79
- return isNativeTokenUtil(token.address)
80
- }
81
- return false
82
- }
83
-
84
- // Helper function to get token key for mapping
85
- function getTokenKey(chainId: number, contractAddress: string): string {
86
- return `${chainId}:${normalizeAddress(contractAddress)}`
87
- }
88
-
89
- // Helper function to convert API token info to Token
90
- function convertApiTokenToToken(
91
- tokenInfo: ApiTokenInfo,
92
- getTokenImageUrl: (params: {
93
- chainId: number
94
- contractAddress: string
95
- symbol: string
96
- }) => string,
97
- ): Token {
98
- const chainInfo = getChainInfo(tokenInfo.chainId)
99
- const isNative = isNativeToken(tokenInfo)
100
- const validatedDecimals = validateDecimals(tokenInfo.decimals)
101
-
102
- return {
103
- symbol: isNative
104
- ? chainInfo?.nativeCurrency.symbol || "Unknown"
105
- : tokenInfo.symbol,
106
- name: isNative
107
- ? chainInfo?.nativeCurrency.name || "Unknown"
108
- : tokenInfo.name,
109
- decimals: isNative
110
- ? chainInfo?.nativeCurrency.decimals || 18
111
- : validatedDecimals,
112
- contractAddress: isNative ? zeroAddress : tokenInfo.address,
113
- chainId: tokenInfo.chainId,
114
- chainName: chainInfo?.name || `Chain ${tokenInfo.chainId}`,
115
- imageUrl:
116
- tokenInfo.logoUri ||
117
- getTokenImageUrl({
118
- chainId: tokenInfo.chainId,
119
- contractAddress: isNative ? zeroAddress : tokenInfo.address,
120
- symbol: isNative
121
- ? chainInfo?.nativeCurrency.symbol || "Unknown"
122
- : tokenInfo.symbol,
123
- }),
124
- isNativeToken: isNative,
125
- }
126
- }
127
-
128
- // Helper function to calculate search relevance score
129
- function calculateSearchRelevanceScore(
130
- tokenSymbol: string,
131
- tokenName: string,
132
- chainName: string,
133
- queryParts: string[],
134
- ): number {
135
- let score = 0
136
-
137
- for (const part of queryParts) {
138
- // Exact symbol match gets highest priority (100 points)
139
- if (tokenSymbol === part) score += 100
140
-
141
- // Symbol starts with query gets high priority (50 points)
142
- if (tokenSymbol.startsWith(part)) score += 50
143
-
144
- // Symbol contains query gets medium priority (25 points)
145
- if (tokenSymbol.includes(part)) score += 25
146
-
147
- // Token name exact match (20 points)
148
- if (tokenName === part) score += 20
149
-
150
- // Token name starts with query (15 points)
151
- if (tokenName.startsWith(part)) score += 15
152
-
153
- // Token name contains query (10 points)
154
- if (tokenName.includes(part)) score += 10
155
-
156
- // Chain name exact match (5 points)
157
- if (chainName === part) score += 5
158
-
159
- // Chain name contains query (2 points)
160
- if (chainName.includes(part)) score += 2
161
- }
162
-
163
- return score
164
- }
165
-
166
- export type UseTokenListProps = {
167
- onContinue: (selectedToken: Token) => void
168
- targetAmountUsd?: number | null
169
- onError: (error: Error | string | null) => void
170
- fundMethod?: FundMethod | null
171
- allSupportedTokens?: boolean
172
- includePrice?: boolean
173
- balanceRefetchInterval?: number | false
174
- }
175
-
176
- export type UseTokenListReturn = {
177
- selectedToken: Token | null
178
- searchQuery: string
179
- handleTokenSelect: (token: Token) => void
180
- filteredTokens: Token[]
181
- chainFilteredTokens: Token[]
182
- /** All tokens found by findContractInfo across every supported chain (unfiltered by chain selector). */
183
- foundTokensAllChains: Token[]
184
- isLoadingSortedTokens: boolean
185
- isLoadingSearchTokens?: boolean
186
- isLoadingCustomToken: boolean
187
- isSearching: boolean // True when search is in progress (typing)
188
- customTokenError: Error | null
189
- balanceError: Error | null
190
- showContinueButton: boolean
191
- isTokenSelected: (token: Token) => boolean
192
- setSearchQuery: (query: string) => void
193
- filteredTokensFormatted: Token[]
194
- totalBalanceUsd: number
195
- totalBalanceUsdFormatted: string
196
- isLoadingTotalBalanceUsd: boolean
197
- showInsufficientBalance: boolean
198
- isLoadingTokens: boolean
199
- }
200
-
201
- export function useTokenList({
202
- onContinue,
203
- targetAmountUsd,
204
- onError,
205
- fundMethod,
206
- allSupportedTokens = false,
207
- includePrice = false,
208
- balanceRefetchInterval = WIDGET_REFRESH_INTERVAL,
209
- }: UseTokenListProps): UseTokenListReturn {
210
- const [selectedToken, setSelectedToken] = useState<Token | null>(null)
211
- const [searchQuery, setSearchQuery] = useState("")
212
- const { address } = useAccount()
213
- const trailsClient = useTrailsClient()
214
- const { getTokenImageUrl } = useGetTokenImageUrl()
215
- const shouldSkipBalanceQueries = !!fundMethod && fundMethod !== "wallet"
216
- const balanceQueryAccount = shouldSkipBalanceQueries
217
- ? null
218
- : (address as Address.Address)
219
-
220
- const {
221
- sortedTokens: allSortedTokens,
222
- isLoadingSortedTokens,
223
- balanceError,
224
- } = useTokenBalances(balanceQueryAccount, undefined, {
225
- disabled: shouldSkipBalanceQueries,
226
- refetchInterval: shouldSkipBalanceQueries ? false : balanceRefetchInterval,
227
- })
228
-
229
- // Only fetch the full token catalog when needed (non-wallet fund methods
230
- // or destination selector with allSupportedTokens). For the wallet source
231
- // selector we only show user balance tokens.
232
- const needsSupportedTokens =
233
- (fundMethod && fundMethod !== "wallet") || allSupportedTokens
234
- const { supportedTokens, isLoadingTokens: isLoadingSupportedTokens } =
235
- useSupportedTokens({ disabled: !needsSupportedTokens })
236
-
237
- // Get trails config for API calls
238
- const trailsConfig = useTrails()
239
- const { onramp: onrampFactory } = useWidgetProps()
240
- const { selectedMeshExchange } = useSelectedFundMethod()
241
- const onrampClient = useOnrampClient()
242
- const meshOnrampConfig = getWidgetOnrampConfig(onrampFactory)
243
- const meshEnvironment = getActiveMeshEnvironment(meshOnrampConfig)
244
- const meshEnabled = !!meshOnrampConfig?.mesh
245
- const meshAllowedExchanges = meshOnrampConfig?.mesh?.exchanges ?? null
246
- const activeMeshIntegrationIds = selectedMeshExchange
247
- ? [selectedMeshExchange.integrationId]
248
- : null
249
- const activeMeshExchangeKeys = selectedMeshExchange
250
- ? null
251
- : meshAllowedExchanges
252
-
253
- // Get supported chains for getTokenList API
254
- const { data: supportedChains = [] } = useSupportedChains()
255
-
256
- // Get chain filter for destination token list
257
- const { selectedChainId: filterByChainId } = useChainFilter()
258
-
259
- // Only use API search for exchange/meld/qr-code modes or when allSupportedTokens is true
260
- // (where we show all tokens, not just user balances)
261
- // For other modes, we only filter user's token balances locally
262
- const shouldUseApiSearch =
263
- (fundMethod && fundMethod !== "wallet") || allSupportedTokens
264
- const shouldFilterMeshTokens =
265
- fundMethod === "onramp-mesh" && !allSupportedTokens
266
-
267
- // Memoize chain IDs to avoid recalculating
268
- const apiSearchChainIds = useMemo(
269
- () => supportedChains.map((chain) => chain.id),
270
- [supportedChains],
271
- )
272
-
273
- // Check if search query is an address
274
- const trimmedSearchQuery = useMemo(() => searchQuery.trim(), [searchQuery])
275
- // Debounce the search query to avoid excessive API calls (300ms delay)
276
- const debouncedSearchQuery = useDebounce(trimmedSearchQuery, 300)
277
- const isSearchQueryAddress = useMemo(
278
- () => (debouncedSearchQuery ? isAddress(debouncedSearchQuery) : false),
279
- [debouncedSearchQuery],
280
- )
281
-
282
- // Track if user is actively typing (search query changed but debounce hasn't fired yet)
283
- const isSearchPending = trimmedSearchQuery !== debouncedSearchQuery
284
-
285
- // Call getTokenList API when there's a search query (for any search, not just addresses)
286
- const { data: searchTokensResult, isLoading: isLoadingSearchTokens } =
287
- useQuery({
288
- ...tokenListQueries.search(
289
- trailsClient,
290
- {
291
- trailsApiUrl: trailsConfig.trailsApiUrl,
292
- trailsApiKey: trailsConfig.trailsApiKey,
293
- },
294
- {
295
- searchQuery: debouncedSearchQuery,
296
- // For getTokenList, pass a chain id if selected
297
- chainIds:
298
- filterByChainId !== null ? [filterByChainId] : apiSearchChainIds,
299
- limit: 30,
300
- },
301
- ),
302
- enabled:
303
- shouldUseApiSearch &&
304
- debouncedSearchQuery.length > 0 &&
305
- !!trailsClient &&
306
- !!trailsConfig.trailsApiKey,
307
- })
308
-
309
- // Fetch tokens from getTokenList when a chain is selected (for destination token list only)
310
- // This fetches all available tokens from that chain, not just filtering existing tokens
311
- const {
312
- data: chainFilteredTokenList,
313
- isLoading: isLoadingChainFilteredTokens,
314
- } = useQuery({
315
- ...tokenListQueries.byChain(
316
- trailsClient,
317
- {
318
- trailsApiUrl: trailsConfig.trailsApiUrl,
319
- trailsApiKey: trailsConfig.trailsApiKey,
320
- },
321
- {
322
- chainId: filterByChainId,
323
- limit: 100,
324
- },
325
- ),
326
- enabled:
327
- shouldUseApiSearch &&
328
- filterByChainId !== null &&
329
- !!trailsClient &&
330
- !!trailsConfig.trailsApiKey,
331
- })
332
-
333
- const {
334
- data: meshSupportedTokens = [],
335
- isLoading: isLoadingMeshSupportedTokens,
336
- } = useQuery({
337
- queryKey: [
338
- "mesh-supported-tokens",
339
- meshEnvironment,
340
- activeMeshExchangeKeys,
341
- trailsConfig.trailsApiUrl,
342
- trailsConfig.trailsApiKey,
343
- ],
344
- queryFn: async () => {
345
- const response = await onrampClient.getMeshSupportedTokens({
346
- environment: meshEnvironment,
347
- })
348
-
349
- if (activeMeshIntegrationIds?.length) {
350
- return (response.tokens || []).filter((token: MeshSupportedToken) =>
351
- (token.integrationIds || []).some((integrationId) =>
352
- activeMeshIntegrationIds.includes(integrationId),
353
- ),
354
- )
355
- }
356
-
357
- if (!activeMeshExchangeKeys?.length) {
358
- return response.tokens || []
359
- }
360
-
361
- return (response.tokens || []).filter((token: MeshSupportedToken) =>
362
- (token.exchangeKeys || []).some((exchangeKey) =>
363
- activeMeshExchangeKeys.includes(exchangeKey),
364
- ),
365
- )
366
- },
367
- enabled:
368
- fundMethod === "onramp-mesh" &&
369
- meshEnabled &&
370
- !!trailsConfig.trailsApiKey &&
371
- !!trailsConfig.trailsApiUrl,
372
- staleTime: DAY_MS,
373
- gcTime: DAY_MS,
374
- refetchOnMount: false,
375
- refetchOnWindowFocus: false,
376
- refetchOnReconnect: false,
377
- })
378
-
379
- const isSupportedMeshToken = useMemo(
380
- () => (chainId?: number | null, symbol?: string | null) =>
381
- isMeshAssetSupported(meshSupportedTokens, chainId, symbol),
382
- [meshSupportedTokens],
383
- )
384
-
385
- // Fetch prices for supported tokens when allSupportedTokens is true OR for qr-code/exchange/meld modes
386
- const supportedTokensForPricing = useMemo(() => {
387
- if (
388
- fundMethod === "direct-transfer" ||
389
- fundMethod === "onramp-mesh" ||
390
- fundMethod === "onramp-meld"
391
- ) {
392
- // For QR code and exchange modes, get prices for the filtered tokens
393
- if (!supportedTokens?.length) return []
394
-
395
- const filteredTokens = supportedTokens.filter((token: any) => {
396
- const symbol = token.symbol.toUpperCase()
397
- return shouldFilterMeshTokens
398
- ? isSupportedMeshToken(token.chainId, token.symbol)
399
- : STANDARD_TOKENS.includes(symbol as any)
400
- })
401
-
402
- return filteredTokens.map((token: any) => ({
403
- chainId: token.chainId,
404
- tokenAddress: token.contractAddress || zeroAddress,
405
- tokenSymbol: token.symbol,
406
- }))
407
- }
408
-
409
- if (!allSupportedTokens || !supportedTokens?.length) return []
410
-
411
- return supportedTokens.map((token: any) => ({
412
- chainId: token.chainId,
413
- tokenAddress: token.contractAddress || zeroAddress,
414
- tokenSymbol: token.symbol,
415
- }))
416
- }, [
417
- allSupportedTokens,
418
- supportedTokens,
419
- fundMethod,
420
- isSupportedMeshToken,
421
- shouldFilterMeshTokens,
422
- ])
423
-
424
- const {
425
- tokenPrices: supportedTokenPrices,
426
- isLoadingTokenPrices: isLoadingSupportedTokenPrices,
427
- } = useTokenPrices(supportedTokensForPricing, !includePrice)
428
-
429
- // Determine loading state based on fund method and allSupportedTokens
430
- const isLoadingTokens =
431
- fundMethod && fundMethod !== "wallet"
432
- ? isLoadingSupportedTokens ||
433
- isLoadingSupportedTokenPrices ||
434
- isLoadingMeshSupportedTokens ||
435
- isLoadingSearchTokens ||
436
- isLoadingChainFilteredTokens
437
- : allSupportedTokens
438
- ? isLoadingSortedTokens ||
439
- isLoadingSupportedTokens ||
440
- isLoadingSupportedTokenPrices ||
441
- isLoadingChainFilteredTokens
442
- : isLoadingSortedTokens
443
-
444
- const { data: totalBalanceUsd = 0, isLoading: isLoadingTotalBalanceUsd } =
445
- useAccountTotalBalanceUsd(balanceQueryAccount)
446
- const totalBalanceUsdFormatted = formatUsdAmountDisplay(totalBalanceUsd)
447
- const {
448
- data: hasSufficientBalanceUsd = false,
449
- isLoading: isLoadingHasSufficientBalanceUsd,
450
- error: hasSufficientBalanceUsdError,
451
- } = useHasSufficientBalanceUsd(
452
- balanceQueryAccount,
453
- shouldSkipBalanceQueries ? null : targetAmountUsd,
454
- )
455
- const showContinueButton = false
456
- // Note: Supported tokens are now fetched via useSupportedTokens hook with caching
457
-
458
- // Map chain-filtered token list results to Token format
459
- // Used when a chain is selected for destination token list
460
- const chainFilteredApiTokens = useMemo(() => {
461
- const chainTokens = (chainFilteredTokenList?.tokens ?? []) as ApiTokenInfo[]
462
- if (
463
- !shouldUseApiSearch ||
464
- chainTokens.length === 0 ||
465
- filterByChainId === null
466
- ) {
467
- return []
468
- }
469
-
470
- const tokens = chainTokens
471
- .filter((tokenInfo: ApiTokenInfo) => {
472
- if (!isValidDecimals(tokenInfo.decimals)) {
473
- logger.console.warn(
474
- "[trails-sdk] Skipping token with invalid decimals:",
475
- {
476
- symbol: tokenInfo.symbol,
477
- address: tokenInfo.address,
478
- decimals: tokenInfo.decimals,
479
- },
480
- )
481
- return false
482
- }
483
- return true
484
- })
485
- .map((tokenInfo: ApiTokenInfo) =>
486
- convertApiTokenToToken(tokenInfo, getTokenImageUrl),
487
- )
488
-
489
- return shouldFilterMeshTokens
490
- ? tokens.filter((token) =>
491
- isSupportedMeshToken(token.chainId, token.symbol),
492
- )
493
- : tokens
494
- }, [
495
- chainFilteredTokenList,
496
- getTokenImageUrl,
497
- shouldUseApiSearch,
498
- filterByChainId,
499
- shouldFilterMeshTokens,
500
- isSupportedMeshToken,
501
- ])
502
-
503
- const sortedTokens = useMemo<Array<Token>>(() => {
504
- // If fundMethod is not wallet, use filtered supported tokens
505
- if (fundMethod && fundMethod !== "wallet") {
506
- // If chain filter is active and we have chain-filtered tokens, use those
507
- if (
508
- shouldUseApiSearch &&
509
- filterByChainId !== null &&
510
- chainFilteredApiTokens.length > 0
511
- ) {
512
- // Merge chain-filtered tokens with local tokens (prefer local tokens with balances)
513
- const localTokensMap = new Map<string, Token>()
514
- for (const tokenItem of allSortedTokens) {
515
- const contractAddress = tokenItem.contractAddress || zeroAddress
516
- const key = getTokenKey(tokenItem.chainId || 0, contractAddress)
517
- localTokensMap.set(key, tokenItem)
518
- }
519
-
520
- const mergedTokens: Token[] = chainFilteredApiTokens.map(
521
- (apiToken: Token) => {
522
- const contractAddress = apiToken.contractAddress || zeroAddress
523
- const key = getTokenKey(apiToken.chainId || 0, contractAddress)
524
- const localToken = localTokensMap.get(key)
525
-
526
- // If local token exists and has balance, use it; otherwise use API token
527
- return localToken && (localToken.balanceUsd || 0) > 0
528
- ? localToken
529
- : apiToken
530
- },
531
- )
532
-
533
- // Add any local tokens that weren't in API results
534
- const apiTokenKeys = new Set(
535
- mergedTokens.map((token) =>
536
- getTokenKey(
537
- token.chainId || 0,
538
- token.contractAddress || zeroAddress,
539
- ),
540
- ),
541
- )
542
- for (const localToken of allSortedTokens) {
543
- const key = getTokenKey(
544
- localToken.chainId || 0,
545
- localToken.contractAddress || zeroAddress,
546
- )
547
- if (
548
- !apiTokenKeys.has(key) &&
549
- (localToken.chainId || 0) === filterByChainId
550
- ) {
551
- mergedTokens.push(localToken)
552
- }
553
- }
554
-
555
- return shouldFilterMeshTokens
556
- ? mergedTokens.filter((token) =>
557
- isSupportedMeshToken(token.chainId, token.symbol),
558
- )
559
- : mergedTokens
560
- }
561
-
562
- // Filter to only show specific tokens for QR code and exchange modes
563
- const filteredTokens = supportedTokens.filter((token: any) => {
564
- const symbol = token.symbol.toUpperCase()
565
- return shouldFilterMeshTokens
566
- ? isSupportedMeshToken(token.chainId, token.symbol)
567
- : STANDARD_TOKENS.includes(symbol as any)
568
- })
569
-
570
- // Convert SupportedToken to Token format and add price data
571
- const tokensWithPrices: Token[] = filteredTokens.map(
572
- (token: Token): Token => {
573
- // Find price data for this token
574
- const priceData = supportedTokenPrices?.find(
575
- (p: any) =>
576
- p.token.tokenAddress?.toLowerCase() ===
577
- (token.contractAddress || zeroAddress).toLowerCase() &&
578
- Number(p.token.chainId) === Number(token.chainId),
579
- )
580
-
581
- const priceUsd = priceData?.priceUsd
582
-
583
- // Format price fields if price exists
584
- const priceFields = priceUsd ? formatPriceFields(priceUsd) : undefined
585
-
586
- // Return Token with price data
587
- return {
588
- ...token,
589
- // No balance info for QR code and exchange modes
590
- ...(priceFields && {
591
- priceUsd: priceFields.priceUsd,
592
- priceUsdFormatted: priceFields.priceUsdFormatted,
593
- priceUsdDisplay: priceFields.priceUsdDisplay,
594
- }),
595
- isSufficientBalance: true, // Always true for QR code and exchange modes
596
- }
597
- },
598
- )
599
-
600
- // Sort by price (highest first) since volume is not available
601
- const sortedMeshTokens = tokensWithPrices.sort((a, b) => {
602
- return (b.priceUsd || 0) - (a.priceUsd || 0)
603
- })
604
-
605
- return shouldFilterMeshTokens
606
- ? sortedMeshTokens.filter((token) =>
607
- isSupportedMeshToken(token.chainId, token.symbol),
608
- )
609
- : sortedMeshTokens
610
- }
611
-
612
- // If allSupportedTokens is true and chain filter is active, use chain-filtered tokens
613
- if (
614
- allSupportedTokens &&
615
- shouldUseApiSearch &&
616
- filterByChainId !== null &&
617
- chainFilteredApiTokens.length > 0
618
- ) {
619
- // Merge chain-filtered tokens with local tokens (prefer local tokens with balances)
620
- const localTokensMap = new Map<string, Token>()
621
- for (const tokenItem of allSortedTokens) {
622
- const contractAddress = tokenItem.contractAddress || zeroAddress
623
- const key = getTokenKey(tokenItem.chainId || 0, contractAddress)
624
- localTokensMap.set(key, tokenItem)
625
- }
626
-
627
- const mergedTokens: Token[] = chainFilteredApiTokens.map(
628
- (apiToken: Token) => {
629
- const contractAddress = apiToken.contractAddress || zeroAddress
630
- const key = getTokenKey(apiToken.chainId || 0, contractAddress)
631
- const localToken = localTokensMap.get(key)
632
-
633
- // If local token exists and has balance, use it; otherwise use API token
634
- return localToken && (localToken.balanceUsd || 0) > 0
635
- ? localToken
636
- : apiToken
637
- },
638
- )
639
-
640
- // Add any local tokens that weren't in API results
641
- const apiTokenKeys = new Set(
642
- mergedTokens.map((token) =>
643
- getTokenKey(token.chainId || 0, token.contractAddress || zeroAddress),
644
- ),
645
- )
646
- for (const localToken of allSortedTokens) {
647
- const key = getTokenKey(
648
- localToken.chainId || 0,
649
- localToken.contractAddress || zeroAddress,
650
- )
651
- if (
652
- !apiTokenKeys.has(key) &&
653
- (localToken.chainId || 0) === filterByChainId
654
- ) {
655
- mergedTokens.push(localToken)
656
- }
657
- }
658
-
659
- return mergedTokens
660
- }
661
-
662
- // Default behavior: use account-specific tokens (already Token[]). Chain
663
- // filtering is applied in useTokenBalances with fail-open fallback.
664
- return allSortedTokens
665
- }, [
666
- allSortedTokens,
667
- fundMethod,
668
- supportedTokens,
669
- supportedTokenPrices,
670
- isSupportedMeshToken,
671
- shouldFilterMeshTokens,
672
- shouldUseApiSearch,
673
- filterByChainId,
674
- chainFilteredApiTokens,
675
- allSupportedTokens,
676
- ])
677
-
678
- useEffect(() => {
679
- if (onError && balanceError) {
680
- onError(balanceError)
681
- }
682
- }, [balanceError, onError])
683
-
684
- const handleTokenSelect = (token: Token) => {
685
- const isNative = token.isNativeToken ?? false
686
- const decimals = token.decimals
687
- if (!decimals) {
688
- logger.console.warn(
689
- "[trails-sdk] [useTokenList] Missing decimals for token:",
690
- {
691
- token: token,
692
- chainId: token.chainId,
693
- isNative,
694
- },
695
- )
696
- onError("Decimals not found [useTokenList]")
697
- return
698
- }
699
-
700
- setSelectedToken(token)
701
- const canContinue =
702
- (!targetAmountUsd || (targetAmountUsd && hasSufficientBalanceUsd)) &&
703
- (token.isSufficientBalance ?? true)
704
-
705
- if (!canContinue) {
706
- logger.console.warn("[trails-sdk] Cannot continue with token selection", {
707
- token: token,
708
- targetAmountUsd,
709
- hasSufficientBalanceUsd,
710
- isSufficientBalance: token.isSufficientBalance,
711
- })
712
- }
713
-
714
- onContinue(token)
715
- }
716
-
717
- const isTokenSelected = (token: Token): boolean => {
718
- if (!selectedToken) return false
719
-
720
- const isNative = token.isNativeToken ?? false
721
- const selectedIsNative = selectedToken.isNativeToken ?? false
722
- return (
723
- (selectedToken.chainId || 0) === (token.chainId || 0) &&
724
- (isNative
725
- ? selectedIsNative
726
- : addressEqual(selectedToken.contractAddress, token.contractAddress))
727
- )
728
- }
729
-
730
- // Map API search results to Token format
731
- // Only used for exchange/qr-code modes
732
- const apiSearchTokens = useMemo(() => {
733
- const searchTokens = (searchTokensResult?.tokens ?? []) as ApiTokenInfo[]
734
- if (!shouldUseApiSearch || searchTokens.length === 0) {
735
- return []
736
- }
737
-
738
- const tokens = searchTokens
739
- .filter((tokenInfo: ApiTokenInfo) => {
740
- if (!isValidDecimals(tokenInfo.decimals)) {
741
- logger.console.warn(
742
- "[trails-sdk] Skipping token with invalid decimals:",
743
- {
744
- symbol: tokenInfo.symbol,
745
- address: tokenInfo.address,
746
- decimals: tokenInfo.decimals,
747
- },
748
- )
749
- return false
750
- }
751
- return true
752
- })
753
- .map((tokenInfo: ApiTokenInfo) =>
754
- convertApiTokenToToken(tokenInfo, getTokenImageUrl),
755
- )
756
-
757
- return shouldFilterMeshTokens
758
- ? tokens.filter((token) =>
759
- isSupportedMeshToken(token.chainId, token.symbol),
760
- )
761
- : tokens
762
- }, [
763
- searchTokensResult,
764
- getTokenImageUrl,
765
- shouldUseApiSearch,
766
- shouldFilterMeshTokens,
767
- isSupportedMeshToken,
768
- ])
769
-
770
- const filteredTokens = useMemo(() => {
771
- // sortedTokens is already Token[] from useTokenBalances
772
- // Only use API search results for exchange/qr-code modes
773
- if (
774
- shouldUseApiSearch &&
775
- trimmedSearchQuery &&
776
- apiSearchTokens.length > 0
777
- ) {
778
- // Create a map of local tokens by chainId and contractAddress for quick lookup
779
- const localTokensMap = new Map<string, Token>()
780
- for (const tokenItem of sortedTokens) {
781
- const contractAddress = tokenItem.contractAddress || zeroAddress
782
- const key = getTokenKey(tokenItem.chainId || 0, contractAddress)
783
- localTokensMap.set(key, tokenItem)
784
- }
785
-
786
- // Merge API results with local tokens (prefer local tokens with balances)
787
- const mergedTokens: Token[] = apiSearchTokens.map((apiToken: Token) => {
788
- const contractAddress = apiToken.contractAddress || zeroAddress
789
- const key = getTokenKey(apiToken.chainId || 0, contractAddress)
790
- const localToken = localTokensMap.get(key)
791
-
792
- // If local token exists and has balance, use it; otherwise use API token
793
- return localToken && (localToken.balanceUsd || 0) > 0
794
- ? localToken
795
- : apiToken
796
- })
797
-
798
- // Add any local tokens that weren't in API results but match the search
799
- const apiTokenKeys = new Set(
800
- mergedTokens.map((token) => {
801
- const contractAddress = token.contractAddress || zeroAddress
802
- return getTokenKey(token.chainId || 0, contractAddress)
803
- }),
804
- )
805
-
806
- const queryLower = trimmedSearchQuery.toLowerCase()
807
- for (const tokenItem of sortedTokens) {
808
- const contractAddress = tokenItem.contractAddress || zeroAddress
809
- const key = getTokenKey(tokenItem.chainId || 0, contractAddress)
810
-
811
- if (!apiTokenKeys.has(key)) {
812
- // Check if token matches search query locally
813
- const tokenSymbol = (tokenItem.symbol || "").toLowerCase()
814
- const tokenName = (tokenItem.name || "").toLowerCase()
815
-
816
- if (
817
- tokenSymbol.includes(queryLower) ||
818
- tokenName.includes(queryLower) ||
819
- normalizeAddress(contractAddress).includes(queryLower)
820
- ) {
821
- mergedTokens.push(tokenItem)
822
- }
823
- }
824
- }
825
-
826
- return mergedTokens
827
- }
828
-
829
- // Fallback to local filtering if no API results or not using API search
830
- if (!trimmedSearchQuery) {
831
- return sortedTokens
832
- }
833
-
834
- const queryLower = trimmedSearchQuery.toLowerCase()
835
- const queryParts = queryLower.split(/\s+/).filter((part) => part.length > 0)
836
-
837
- const matchingTokens = sortedTokens.filter((token: Token) => {
838
- const chainInfo = getChainInfo(token.chainId || 0)
839
- const chainName = chainInfo?.name || ""
840
- const chainNameLower = chainName.toLowerCase()
841
-
842
- const tokenSymbol = (token.symbol || "???").toLowerCase()
843
- const tokenName = (token.name || "Unknown Token").toLowerCase()
844
- const contractAddress = (
845
- token.contractAddress || zeroAddress
846
- ).toLowerCase()
847
-
848
- // If multiple query parts, check if they match chain + token combination
849
- if (queryParts.length > 1) {
850
- const matchesChain = queryParts.some((part) =>
851
- chainNameLower.includes(part),
852
- )
853
- const matchesToken = queryParts.some(
854
- (part) =>
855
- tokenSymbol.includes(part) ||
856
- tokenName.includes(part) ||
857
- contractAddress.includes(part),
858
- )
859
- return matchesChain && matchesToken
860
- }
861
-
862
- // Single query part - match against any field
863
- return queryParts.some(
864
- (part) =>
865
- tokenSymbol.includes(part) ||
866
- tokenName.includes(part) ||
867
- chainNameLower.includes(part) ||
868
- contractAddress.includes(part),
869
- )
870
- })
871
-
872
- // Sort by relevance for balance tokens too
873
- return matchingTokens.sort((a: Token, b: Token) => {
874
- const aChainInfo = getChainInfo(a.chainId || 0)
875
- const bChainInfo = getChainInfo(b.chainId || 0)
876
- const aChainName = aChainInfo?.name?.toLowerCase() || ""
877
- const bChainName = bChainInfo?.name?.toLowerCase() || ""
878
-
879
- const aTokenSymbol = (a.symbol || "???").toLowerCase()
880
- const bTokenSymbol = (b.symbol || "???").toLowerCase()
881
-
882
- const aTokenName = (a.name || "Unknown Token").toLowerCase()
883
- const bTokenName = (b.name || "Unknown Token").toLowerCase()
884
-
885
- // Calculate relevance scores using helper function
886
- const aScore = calculateSearchRelevanceScore(
887
- aTokenSymbol,
888
- aTokenName,
889
- aChainName,
890
- queryParts,
891
- )
892
- const bScore = calculateSearchRelevanceScore(
893
- bTokenSymbol,
894
- bTokenName,
895
- bChainName,
896
- queryParts,
897
- )
898
-
899
- return bScore - aScore // Higher score first
900
- })
901
- }, [sortedTokens, trimmedSearchQuery, apiSearchTokens, shouldUseApiSearch])
902
-
903
- const filteredTokensFormatted = useMemo(() => {
904
- // Get base formatted tokens - filteredTokens is already Token[]
905
- const baseFormattedTokens = filteredTokens
906
- .map((token: Token): Token | null => {
907
- const isNative = token.isNativeToken ?? false
908
- const chainInfo = getChainInfo(token.chainId || 0)
909
- const decimals = token.decimals
910
- if (!decimals) {
911
- logger.console.warn(
912
- "[trails-sdk] Missing decimals for token, skipping:",
913
- {
914
- token: token,
915
- chainId: token.chainId,
916
- isNative,
917
- },
918
- )
919
- return null // Return null to filter out tokens without decimals
920
- }
921
-
922
- let isSufficientBalance = token.isSufficientBalance ?? true
923
- if (targetAmountUsd) {
924
- isSufficientBalance = (token.balanceUsd ?? 0) >= targetAmountUsd
925
- }
926
- const chainName = token.chainName || chainInfo?.name || ""
927
-
928
- // Format price fields if not already formatted
929
- const priceFields = token.priceUsdFormatted
930
- ? undefined
931
- : token.priceUsd
932
- ? formatPriceFields(token.priceUsd)
933
- : undefined
934
-
935
- // Return Token with all formatting fields set
936
- return {
937
- ...token,
938
- balanceDisplay: token.balanceDisplay || token.balanceFormatted,
939
- priceUsdFormatted:
940
- token.priceUsdFormatted || priceFields?.priceUsdFormatted,
941
- priceUsdDisplay:
942
- token.priceUsdDisplay || priceFields?.priceUsdDisplay,
943
- balanceUsdDisplay:
944
- token.balanceUsdDisplay || token.balanceUsdFormatted,
945
- isSufficientBalance,
946
- chainName,
947
- }
948
- })
949
- .filter(Boolean) as Token[] // Filter out null values for tokens without decimals
950
-
951
- // If allSupportedTokens is true, combine with supported tokens
952
- if (allSupportedTokens) {
953
- // Create a set of existing token keys for quick lookup
954
- const existingTokenKeys = new Set(
955
- baseFormattedTokens.map(
956
- (token) =>
957
- `${token.chainId}-${normalizeAddress(token.contractAddress)}`,
958
- ),
959
- )
960
-
961
- // Add supported tokens that don't exist in the base list
962
- const additionalSupportedTokens: Token[] = supportedTokens
963
- .filter((supportedToken) => {
964
- if (
965
- shouldFilterMeshTokens &&
966
- !isSupportedMeshToken(supportedToken.chainId, supportedToken.symbol)
967
- ) {
968
- return false
969
- }
970
-
971
- const key = `${supportedToken.chainId || 0}-${normalizeAddress(supportedToken.contractAddress)}`
972
- return !existingTokenKeys.has(key)
973
- })
974
- .map((supportedToken): Token => {
975
- const chainInfo = getChainInfo(supportedToken.chainId || 0)
976
- const chainName =
977
- chainInfo?.name || `Chain ${supportedToken.chainId || 0}`
978
-
979
- // Find price data for this supported token
980
- const priceData = supportedTokenPrices?.find(
981
- (p: any) =>
982
- p.token.tokenAddress?.toLowerCase() ===
983
- (supportedToken.contractAddress || zeroAddress).toLowerCase() &&
984
- Number(p.token.chainId) === Number(supportedToken.chainId),
985
- )
986
-
987
- // Format price fields if price exists
988
- const priceFields = priceData?.priceUsd
989
- ? formatPriceFields(priceData.priceUsd)
990
- : undefined
991
-
992
- return {
993
- symbol: supportedToken.symbol,
994
- name: supportedToken.name,
995
- decimals: supportedToken.decimals,
996
- contractAddress: supportedToken.contractAddress,
997
- chainId: supportedToken.chainId,
998
- chainName: chainName,
999
- imageUrl: supportedToken.imageUrl || "",
1000
- ...(priceFields && {
1001
- priceUsd: priceFields.priceUsd,
1002
- priceUsdFormatted: priceFields.priceUsdFormatted,
1003
- priceUsdDisplay: priceFields.priceUsdDisplay,
1004
- }),
1005
- isSufficientBalance: true,
1006
- }
1007
- })
1008
- .sort((a, b) => {
1009
- // Sort supported tokens by price (highest first) since volume is not available
1010
- return (b.priceUsd || 0) - (a.priceUsd || 0)
1011
- })
1012
-
1013
- // Combine lists with base tokens taking precedence
1014
- const combinedTokens = [
1015
- ...baseFormattedTokens,
1016
- ...additionalSupportedTokens,
1017
- ]
1018
-
1019
- // Apply search filtering to combined tokens when allSupportedTokens is true
1020
- if (searchQuery.trim()) {
1021
- const query = searchQuery.toLowerCase().trim()
1022
- const queryParts = query.split(/\s+/).filter((part) => part.length > 0)
1023
-
1024
- const filteredTokens = combinedTokens.filter((token: Token) => {
1025
- const chainName = token.chainName?.toLowerCase() || ""
1026
- const tokenSymbol = token.symbol?.toLowerCase() || ""
1027
- const tokenName = token.name?.toLowerCase() || ""
1028
- const contractAddress = token.contractAddress?.toLowerCase() || ""
1029
-
1030
- // If multiple query parts, check if they match chain + token combination
1031
- if (queryParts.length > 1) {
1032
- const matchesChain = queryParts.some((part) =>
1033
- chainName.includes(part),
1034
- )
1035
- const matchesToken = queryParts.some(
1036
- (part) =>
1037
- tokenSymbol.includes(part) ||
1038
- tokenName.includes(part) ||
1039
- contractAddress.includes(part),
1040
- )
1041
- return matchesChain && matchesToken
1042
- }
1043
-
1044
- // Single query part - match against any field
1045
- return queryParts.some(
1046
- (part) =>
1047
- tokenSymbol.includes(part) ||
1048
- tokenName.includes(part) ||
1049
- chainName.includes(part) ||
1050
- contractAddress.includes(part),
1051
- )
1052
- })
1053
-
1054
- // Sort filtered tokens by relevance
1055
- return filteredTokens.sort((a, b) => {
1056
- const aChainName = a.chainName?.toLowerCase() || ""
1057
- const aTokenSymbol = a.symbol?.toLowerCase() || ""
1058
- const aTokenName = a.name?.toLowerCase() || ""
1059
- const bChainName = b.chainName?.toLowerCase() || ""
1060
- const bTokenSymbol = b.symbol?.toLowerCase() || ""
1061
- const bTokenName = b.name?.toLowerCase() || ""
1062
-
1063
- // Calculate relevance scores using helper function
1064
- const aScore = calculateSearchRelevanceScore(
1065
- aTokenSymbol,
1066
- aTokenName,
1067
- aChainName,
1068
- queryParts,
1069
- )
1070
- const bScore = calculateSearchRelevanceScore(
1071
- bTokenSymbol,
1072
- bTokenName,
1073
- bChainName,
1074
- queryParts,
1075
- )
1076
-
1077
- // If scores are equal, prefer tokens with balances
1078
- if (aScore === bScore) {
1079
- const aHasBalance = a.balance && a.balance !== ""
1080
- const bHasBalance = b.balance && b.balance !== ""
1081
- if (aHasBalance && !bHasBalance) return -1
1082
- if (!aHasBalance && bHasBalance) return 1
1083
- }
1084
-
1085
- return bScore - aScore // Higher score first
1086
- })
1087
- }
1088
-
1089
- return combinedTokens
1090
- }
1091
-
1092
- return baseFormattedTokens
1093
- }, [
1094
- filteredTokens,
1095
- targetAmountUsd,
1096
- allSupportedTokens,
1097
- supportedTokens,
1098
- supportedTokenPrices,
1099
- searchQuery,
1100
- shouldFilterMeshTokens,
1101
- isSupportedMeshToken,
1102
- ])
1103
-
1104
- const showInsufficientBalance = useMemo(() => {
1105
- return (
1106
- (totalBalanceUsd &&
1107
- targetAmountUsd &&
1108
- !hasSufficientBalanceUsd &&
1109
- !isLoadingHasSufficientBalanceUsd &&
1110
- !hasSufficientBalanceUsdError) ||
1111
- (filteredTokensFormatted?.length > 0 &&
1112
- !filteredTokensFormatted.some((token) => token.isSufficientBalance))
1113
- )
1114
- }, [
1115
- targetAmountUsd,
1116
- hasSufficientBalanceUsd,
1117
- isLoadingHasSufficientBalanceUsd,
1118
- hasSufficientBalanceUsdError,
1119
- filteredTokensFormatted,
1120
- totalBalanceUsd,
1121
- ])
1122
-
1123
- // isSearching: true when user is typing (debounce pending) or API is fetching
1124
- const isSearching = isSearchPending || isLoadingSearchTokens
1125
-
1126
- // True when an address search via the trailsApi.getTokenList has finished with zero results.
1127
- const isApiAddressSearchComplete =
1128
- isSearchQueryAddress &&
1129
- !isLoadingSearchTokens &&
1130
- !isSearchPending &&
1131
- (searchTokensResult?.tokens?.length ?? 0) === 0
1132
-
1133
- const {
1134
- chainFilteredTokens,
1135
- foundTokensAllChains,
1136
- isLoadingCustomToken,
1137
- customTokenError,
1138
- } = useCustomTokenSearch({
1139
- searchQuery,
1140
- filteredTokensFormatted,
1141
- filterByChainId,
1142
- isApiAddressSearchComplete,
1143
- })
1144
-
1145
- return {
1146
- selectedToken,
1147
- searchQuery,
1148
- handleTokenSelect,
1149
- filteredTokens,
1150
- chainFilteredTokens,
1151
- foundTokensAllChains,
1152
- isLoadingSortedTokens: isLoadingSortedTokens || isLoadingSearchTokens,
1153
- isLoadingSearchTokens,
1154
- isLoadingCustomToken,
1155
- isSearching,
1156
- customTokenError,
1157
- balanceError,
1158
- showContinueButton,
1159
- isTokenSelected,
1160
- setSearchQuery,
1161
- filteredTokensFormatted,
1162
- totalBalanceUsd,
1163
- totalBalanceUsdFormatted,
1164
- isLoadingTotalBalanceUsd,
1165
- showInsufficientBalance,
1166
- isLoadingTokens,
1167
- }
1168
- }