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.
- package/dist/abis/requireUtils.d.ts +134 -0
- package/dist/abis/requireUtils.d.ts.map +1 -0
- package/dist/abis/trailsHydrate.d.ts +6 -42
- package/dist/abis/trailsHydrate.d.ts.map +1 -1
- package/dist/abis/trailsRouter.d.ts +1 -1
- package/dist/abis/trailsRouter.d.ts.map +1 -1
- package/dist/actions/actionBuilder.d.ts +414 -0
- package/dist/actions/actionBuilder.d.ts.map +1 -0
- package/dist/actions/constants.d.ts +1853 -0
- package/dist/actions/constants.d.ts.map +1 -0
- package/dist/actions/custom-integrations/sushiswapV3/addresses.d.ts +4 -0
- package/dist/actions/custom-integrations/sushiswapV3/addresses.d.ts.map +1 -0
- package/dist/actions/custom-integrations/sushiswapV3/calldata.d.ts +4 -0
- package/dist/actions/custom-integrations/sushiswapV3/calldata.d.ts.map +1 -0
- package/dist/actions/custom-integrations/sushiswapV3/calls.d.ts +28 -0
- package/dist/actions/custom-integrations/sushiswapV3/calls.d.ts.map +1 -0
- package/dist/actions/custom-integrations/sushiswapV3/helpers.d.ts +15 -0
- package/dist/actions/custom-integrations/sushiswapV3/helpers.d.ts.map +1 -0
- package/dist/actions/custom-integrations/sushiswapV3/sushiswapV3.d.ts +9 -0
- package/dist/actions/custom-integrations/sushiswapV3/sushiswapV3.d.ts.map +1 -0
- package/dist/actions/custom-integrations/sushiswapV3/types.d.ts +95 -0
- package/dist/actions/custom-integrations/sushiswapV3/types.d.ts.map +1 -0
- package/dist/actions/custom-integrations/uniswapV3/addresses.d.ts +4 -0
- package/dist/actions/custom-integrations/uniswapV3/addresses.d.ts.map +1 -0
- package/dist/actions/custom-integrations/uniswapV3/calldata.d.ts +4 -0
- package/dist/actions/custom-integrations/uniswapV3/calldata.d.ts.map +1 -0
- package/dist/actions/custom-integrations/uniswapV3/calls.d.ts +50 -0
- package/dist/actions/custom-integrations/uniswapV3/calls.d.ts.map +1 -0
- package/dist/actions/custom-integrations/uniswapV3/helpers.d.ts +23 -0
- package/dist/actions/custom-integrations/uniswapV3/helpers.d.ts.map +1 -0
- package/dist/actions/custom-integrations/uniswapV3/types.d.ts +90 -0
- package/dist/actions/custom-integrations/uniswapV3/types.d.ts.map +1 -0
- package/dist/actions/custom-integrations/uniswapV3/uniswapV3.d.ts +9 -0
- package/dist/actions/custom-integrations/uniswapV3/uniswapV3.d.ts.map +1 -0
- package/dist/actions/destinationCalls.d.ts +17 -0
- package/dist/actions/destinationCalls.d.ts.map +1 -0
- package/dist/actions/dynamic.d.ts +97 -0
- package/dist/actions/dynamic.d.ts.map +1 -0
- package/dist/actions/hooks/useEarnBalances.d.ts +53 -0
- package/dist/actions/hooks/useEarnBalances.d.ts.map +1 -0
- package/dist/actions/hooks/useEarnMarkets.d.ts +29 -0
- package/dist/actions/hooks/useEarnMarkets.d.ts.map +1 -0
- package/dist/actions/hooks/useEarnProviders.d.ts +18 -0
- package/dist/actions/hooks/useEarnProviders.d.ts.map +1 -0
- package/dist/actions/hooks/useResolveActions.d.ts +28 -0
- package/dist/actions/hooks/useResolveActions.d.ts.map +1 -0
- package/dist/actions/index.d.ts +8 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +13 -0
- package/dist/actions/resolvers.d.ts +30 -0
- package/dist/actions/resolvers.d.ts.map +1 -0
- package/dist/actions/types/earn.d.ts +51 -0
- package/dist/actions/types/earn.d.ts.map +1 -0
- package/dist/actions/types.d.ts +303 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/utils.d.ts +181 -0
- package/dist/actions/utils.d.ts.map +1 -0
- package/dist/{widget/analytics → analytics/hooks}/useWidgetAnalytics.d.ts +2 -4
- package/dist/analytics/hooks/useWidgetAnalytics.d.ts.map +1 -0
- package/dist/analytics.d.ts.map +1 -1
- package/dist/chainSwitch.d.ts.map +1 -1
- package/dist/chains-DttlfV-6.js +4 -0
- package/dist/chains-ccVR_-73.js +655 -0
- package/dist/chains.d.ts +0 -1
- package/dist/chains.d.ts.map +1 -1
- package/dist/committedIntentStore.d.ts +5 -0
- package/dist/committedIntentStore.d.ts.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/error.d.ts +73 -4
- package/dist/error.d.ts.map +1 -1
- package/dist/hooks/persistedToken.d.ts +22 -0
- package/dist/hooks/persistedToken.d.ts.map +1 -0
- package/dist/hooks/prepareTrailsSendTransactionDestination.d.ts +26 -0
- package/dist/hooks/prepareTrailsSendTransactionDestination.d.ts.map +1 -0
- package/dist/hooks/useAddressWalletIcon.d.ts.map +1 -0
- package/dist/hooks/useAmountUsd.d.ts.map +1 -0
- package/dist/hooks/useBalanceVisible.d.ts.map +1 -0
- package/dist/hooks/useChainFilter.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useCheckout.d.ts +15 -15
- package/dist/hooks/useCheckout.d.ts.map +1 -0
- package/dist/hooks/useClickTracking.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useCombinedHistory.d.ts +3 -2
- package/dist/hooks/useCombinedHistory.d.ts.map +1 -0
- package/dist/hooks/useConnector.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useCustomTokenSearch.d.ts +3 -2
- package/dist/hooks/useCustomTokenSearch.d.ts.map +1 -0
- package/dist/hooks/useDebounce.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useDebugScreens.d.ts +2 -2
- package/dist/hooks/useDebugScreens.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useDefaultDestinationToken.d.ts +1 -1
- package/dist/hooks/useDefaultDestinationToken.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useDefaultOriginToken.d.ts +1 -1
- package/dist/hooks/useDefaultOriginToken.d.ts.map +1 -0
- package/dist/hooks/useDepositMonitor.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useDestinationSelectedToken.d.ts +10 -2
- package/dist/hooks/useDestinationSelectedToken.d.ts.map +1 -0
- package/dist/hooks/useDisplayCurrencyPreference.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useEarnPool.d.ts +1 -1
- package/dist/hooks/useEarnPool.d.ts.map +1 -0
- package/dist/hooks/useEffectiveFundBalance.d.ts +28 -0
- package/dist/hooks/useEffectiveFundBalance.d.ts.map +1 -0
- package/dist/hooks/useExecutingIntentsCount.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useExternalFundingReceiptSync.d.ts +1 -1
- package/dist/hooks/useExternalFundingReceiptSync.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useFiatOnRampCurrencies.d.ts +1 -1
- package/dist/hooks/useFiatOnRampCurrencies.d.ts.map +1 -0
- package/dist/hooks/useFiatSelectedCurrency.d.ts.map +1 -0
- package/dist/hooks/useGetIntent.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useIntentReceiptBalances.d.ts +1 -1
- package/dist/hooks/useIntentReceiptBalances.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useIntentTransactionHistory.d.ts +2 -1
- package/dist/hooks/useIntentTransactionHistory.d.ts.map +1 -0
- package/dist/hooks/useIsMobile.d.ts.map +1 -0
- package/dist/hooks/useIsSequenceWallet.d.ts.map +1 -0
- package/dist/hooks/useLocalePreference.d.ts.map +1 -0
- package/dist/hooks/useMeldTransactionHistory.d.ts.map +1 -0
- package/dist/hooks/useMeldTransactionStatus.d.ts.map +1 -0
- package/dist/hooks/useOnRampCountryDefaults.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useOnRampPaymentMethods.d.ts +2 -2
- package/dist/hooks/useOnRampPaymentMethods.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useOnRampProviderWidget.d.ts +1 -1
- package/dist/hooks/useOnRampProviderWidget.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useOnRampQuote.d.ts +3 -3
- package/dist/hooks/useOnRampQuote.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useOnRampTransactionStatus.d.ts +1 -1
- package/dist/hooks/useOnRampTransactionStatus.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useOriginSelectedToken.d.ts +1 -1
- package/dist/hooks/useOriginSelectedToken.d.ts.map +1 -0
- package/dist/hooks/usePayMessage.d.ts.map +1 -0
- package/dist/hooks/usePriceImpactWarning.d.ts.map +1 -0
- package/dist/hooks/useQuote.d.ts +619 -0
- package/dist/hooks/useQuote.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useRecentTokens.d.ts +1 -1
- package/dist/hooks/useRecentTokens.d.ts.map +1 -0
- package/dist/hooks/useRecipients.d.ts.map +1 -0
- package/dist/hooks/useSelectedFeeOption.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useSelectedFundMethod.d.ts +11 -1
- package/dist/hooks/useSelectedFundMethod.d.ts.map +1 -0
- package/dist/hooks/useSelectedRecipient.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useSendForm.d.ts +10 -12
- package/dist/hooks/useSendForm.d.ts.map +1 -0
- package/dist/hooks/useSwapAmount.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useSwapState.d.ts +1 -1
- package/dist/hooks/useSwapState.d.ts.map +1 -0
- package/dist/hooks/useTargetAmount.d.ts.map +1 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useTokenList.d.ts +4 -3
- package/dist/hooks/useTokenList.d.ts.map +1 -0
- package/dist/hooks/useTrailsSendTransaction.d.ts +171 -0
- package/dist/hooks/useTrailsSendTransaction.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useViewManager.d.ts +1 -1
- package/dist/hooks/useViewManager.d.ts.map +1 -0
- package/dist/hooks/useWalletConnectUri.d.ts +19 -0
- package/dist/hooks/useWalletConnectUri.d.ts.map +1 -0
- package/dist/hooks/useWalletConnectionContext.d.ts.map +1 -0
- package/dist/{widget/hooks → hooks}/useWidgetProps.d.ts +1 -1
- package/dist/hooks/useWidgetProps.d.ts.map +1 -0
- package/dist/hydrate/builder.d.ts +131 -0
- package/dist/hydrate/builder.d.ts.map +1 -0
- package/dist/hydrate/constants.d.ts +13 -0
- package/dist/hydrate/constants.d.ts.map +1 -0
- package/dist/hydrate/encodeExecute.d.ts +73 -0
- package/dist/hydrate/encodeExecute.d.ts.map +1 -0
- package/dist/hydrate/index.d.ts +8 -0
- package/dist/hydrate/index.d.ts.map +1 -0
- package/dist/hydrate/index.js +14 -0
- package/dist/hydrate/multicall.d.ts +69 -0
- package/dist/hydrate/multicall.d.ts.map +1 -0
- package/dist/hydrate/payload.d.ts +38 -0
- package/dist/hydrate/payload.d.ts.map +1 -0
- package/dist/hydrate/selectors.d.ts +28 -0
- package/dist/hydrate/selectors.d.ts.map +1 -0
- package/dist/hydrate/source.d.ts +11 -0
- package/dist/hydrate/source.d.ts.map +1 -0
- package/dist/hydrate/types.d.ts +21 -0
- package/dist/hydrate/types.d.ts.map +1 -0
- package/dist/hydrate/utils.d.ts +8 -0
- package/dist/hydrate/utils.d.ts.map +1 -0
- package/dist/hydrate-BsQ8nPlI.js +882 -0
- package/dist/index.d.ts +47 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +189 -662
- package/dist/intentConfigStore.d.ts +8 -0
- package/dist/intentConfigStore.d.ts.map +1 -0
- package/dist/intentProtocolApi.d.ts +11 -0
- package/dist/intentProtocolApi.d.ts.map +1 -0
- package/dist/intentProtocolEncoding.d.ts +30 -0
- package/dist/intentProtocolEncoding.d.ts.map +1 -0
- package/dist/intentProtocolResolver.d.ts +28 -0
- package/dist/intentProtocolResolver.d.ts.map +1 -0
- package/dist/intentReceiptPoller.d.ts.map +1 -1
- package/dist/intentValidation.d.ts +5 -0
- package/dist/intentValidation.d.ts.map +1 -0
- package/dist/intents.d.ts.map +1 -1
- package/dist/keymachine/index.d.ts +20 -0
- package/dist/keymachine/index.d.ts.map +1 -1
- package/dist/mutations.d.ts.map +1 -1
- package/dist/offlineRecovery.d.ts +24 -0
- package/dist/offlineRecovery.d.ts.map +1 -0
- package/dist/onramp/MeshConnectFlow.d.ts +9 -0
- package/dist/onramp/MeshConnectFlow.d.ts.map +1 -1
- package/dist/onramp/MeshConnectIframe.d.ts +9 -0
- package/dist/onramp/MeshConnectIframe.d.ts.map +1 -1
- package/dist/onramp/TrailsOnRampProvider.d.ts.map +1 -1
- package/dist/onramp/mesh/components/MeshExchangeConfirmation.d.ts +10 -0
- package/dist/onramp/mesh/components/MeshExchangeConfirmation.d.ts.map +1 -0
- package/dist/onramp/mesh/components/MeshExchangeIcon.d.ts +13 -0
- package/dist/onramp/mesh/components/MeshExchangeIcon.d.ts.map +1 -0
- package/dist/{widget → onramp/mesh}/components/MeshExchangeSelection.d.ts +1 -0
- package/dist/onramp/mesh/components/MeshExchangeSelection.d.ts.map +1 -0
- package/dist/onramp/mesh/components/MeshSessionOptions.d.ts +15 -0
- package/dist/onramp/mesh/components/MeshSessionOptions.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshAccessTokens.d.ts +9 -0
- package/dist/onramp/mesh/hooks/useMeshAccessTokens.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshFundingSelection.d.ts +11 -0
- package/dist/onramp/mesh/hooks/useMeshFundingSelection.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshOnrampFlow.d.ts +71 -0
- package/dist/onramp/mesh/hooks/useMeshOnrampFlow.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshOnrampSessionState.d.ts +32 -0
- package/dist/onramp/mesh/hooks/useMeshOnrampSessionState.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshSelectedTokenBalance.d.ts +19 -0
- package/dist/onramp/mesh/hooks/useMeshSelectedTokenBalance.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshSessionAccountBalance.d.ts +15 -0
- package/dist/onramp/mesh/hooks/useMeshSessionAccountBalance.d.ts.map +1 -0
- package/dist/onramp/mesh/hooks/useMeshSessionStorage.d.ts +7 -0
- package/dist/onramp/mesh/hooks/useMeshSessionStorage.d.ts.map +1 -0
- package/dist/onramp/meshSessionStorage.d.ts +13 -0
- package/dist/onramp/meshSessionStorage.d.ts.map +1 -0
- package/dist/onramp/meshconnect.d.ts +6 -4
- package/dist/onramp/meshconnect.d.ts.map +1 -1
- package/dist/onramp/trailsOnramp.d.ts +8 -0
- package/dist/onramp/trailsOnramp.d.ts.map +1 -1
- package/dist/onrampClient.d.ts.map +1 -1
- package/dist/placeholder.d.ts +129 -5
- package/dist/placeholder.d.ts.map +1 -1
- package/dist/poolUtils.d.ts +0 -14
- package/dist/poolUtils.d.ts.map +1 -1
- package/dist/prepareSend.d.ts +3 -2
- package/dist/prepareSend.d.ts.map +1 -1
- package/dist/query/balance.fetchers.d.ts +7 -1
- package/dist/query/balance.fetchers.d.ts.map +1 -1
- package/dist/query/intentProtocol.queries.d.ts +32 -0
- package/dist/query/intentProtocol.queries.d.ts.map +1 -0
- package/dist/recover.d.ts +70 -24
- package/dist/recover.d.ts.map +1 -1
- package/dist/src-CQhZqidH.js +51593 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/depositOrchestrator.d.ts +2 -3
- package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/gaslessDeposit.d.ts +2 -3
- package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/standardDeposit.d.ts +2 -5
- package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -1
- package/dist/transactionIntent/handlers/intentHandler.d.ts +5 -4
- package/dist/transactionIntent/handlers/intentHandler.d.ts.map +1 -1
- package/dist/transactionIntent/quote/quoteHelpers.d.ts +2 -2
- package/dist/transactionIntent/quote/quoteHelpers.d.ts.map +1 -1
- package/dist/transactionIntent/types.d.ts +4 -3
- package/dist/transactionIntent/types.d.ts.map +1 -1
- package/dist/transactions.d.ts +1 -0
- package/dist/transactions.d.ts.map +1 -1
- package/dist/umd/trails.min.js +1371 -409
- package/dist/utils/localStorageGc.d.ts +22 -0
- package/dist/utils/localStorageGc.d.ts.map +1 -0
- package/dist/utils/validation.d.ts +14 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/walletUtils.d.ts.map +1 -1
- package/dist/widget/components/AccountIntentTransactionHistory.d.ts.map +1 -1
- package/dist/widget/components/ChainList.d.ts +2 -0
- package/dist/widget/components/ChainList.d.ts.map +1 -1
- package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
- package/dist/widget/components/ConnectedWallets.d.ts +1 -1
- package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
- package/dist/widget/components/Earn.d.ts +2 -6
- package/dist/widget/components/Earn.d.ts.map +1 -1
- package/dist/widget/components/EarnMarkets.d.ts +9 -0
- package/dist/widget/components/EarnMarkets.d.ts.map +1 -0
- package/dist/widget/components/EarnPoolsFilters.d.ts +7 -1
- package/dist/widget/components/EarnPoolsFilters.d.ts.map +1 -1
- package/dist/widget/components/{PoolWithdraw.d.ts → EarnWithdraw.d.ts} +5 -5
- package/dist/widget/components/{PoolWithdraw.d.ts.map → EarnWithdraw.d.ts.map} +1 -1
- package/dist/widget/components/FeeOption.d.ts +1 -1
- package/dist/widget/components/FeeOption.d.ts.map +1 -1
- package/dist/widget/components/FeeOptions.d.ts +1 -1
- package/dist/widget/components/FeeOptions.d.ts.map +1 -1
- package/dist/widget/components/FiatSelector.d.ts +1 -1
- package/dist/widget/components/FiatSelector.d.ts.map +1 -1
- package/dist/widget/components/FiatSelectorButton.d.ts +1 -1
- package/dist/widget/components/FiatSelectorButton.d.ts.map +1 -1
- package/dist/widget/components/Fund.d.ts +1 -1
- package/dist/widget/components/Fund.d.ts.map +1 -1
- package/dist/widget/components/FundMethods.d.ts.map +1 -1
- package/dist/widget/components/FundingMethodSelectorButton.d.ts +1 -1
- package/dist/widget/components/FundingMethodSelectorButton.d.ts.map +1 -1
- package/dist/widget/components/HookModalContent.d.ts.map +1 -1
- package/dist/widget/components/MeldHistory.d.ts +1 -1
- package/dist/widget/components/MeldHistory.d.ts.map +1 -1
- package/dist/widget/components/MeldTransactionStatus.d.ts +1 -1
- package/dist/widget/components/MeldTransactionStatus.d.ts.map +1 -1
- package/dist/widget/components/MeshExchangeAccountHeader.d.ts +9 -0
- package/dist/widget/components/MeshExchangeAccountHeader.d.ts.map +1 -0
- package/dist/widget/components/OnrampHistoryRow.d.ts +1 -1
- package/dist/widget/components/OnrampHistoryRow.d.ts.map +1 -1
- package/dist/widget/components/OnrampProviderConfirmation.d.ts +1 -1
- package/dist/widget/components/OnrampProviderConfirmation.d.ts.map +1 -1
- package/dist/widget/components/Pay.d.ts.map +1 -1
- package/dist/widget/components/PoolDeposit.d.ts +2 -6
- package/dist/widget/components/PoolDeposit.d.ts.map +1 -1
- package/dist/widget/components/PulsatingButton.d.ts +9 -0
- package/dist/widget/components/PulsatingButton.d.ts.map +1 -0
- package/dist/widget/components/Receipt.d.ts +1 -1
- package/dist/widget/components/Receipt.d.ts.map +1 -1
- package/dist/widget/components/RecipientSelectorButton.d.ts.map +1 -1
- package/dist/widget/components/Recipients.d.ts.map +1 -1
- package/dist/widget/components/Swap.d.ts +2 -6
- package/dist/widget/components/Swap.d.ts.map +1 -1
- package/dist/widget/components/TokenList.d.ts +1 -0
- package/dist/widget/components/TokenList.d.ts.map +1 -1
- package/dist/widget/components/TokenSelector.d.ts +2 -2
- package/dist/widget/components/TokenSelector.d.ts.map +1 -1
- package/dist/widget/components/TransactionDetails.d.ts +1 -0
- package/dist/widget/components/TransactionDetails.d.ts.map +1 -1
- package/dist/widget/components/TransactionHistoryItem.d.ts +1 -0
- package/dist/widget/components/TransactionHistoryItem.d.ts.map +1 -1
- package/dist/widget/components/TransferPendingVertical.d.ts +1 -1
- package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
- package/dist/widget/components/WalletAccountHeader.d.ts +7 -0
- package/dist/widget/components/WalletAccountHeader.d.ts.map +1 -0
- package/dist/widget/components/WalletConfirmation.d.ts +2 -1
- package/dist/widget/components/WalletConfirmation.d.ts.map +1 -1
- package/dist/widget/components/WalletConnect.d.ts.map +1 -1
- package/dist/widget/components/WidgetProviders.d.ts.map +1 -1
- package/dist/widget/components/Withdraw.d.ts.map +1 -1
- package/dist/widget/components/earnMarketUtils.d.ts +11 -0
- package/dist/widget/components/earnMarketUtils.d.ts.map +1 -0
- package/dist/widget/components/earnNetworks.d.ts +6 -0
- package/dist/widget/components/earnNetworks.d.ts.map +1 -0
- package/dist/widget/index.d.ts +13 -0
- package/dist/widget/index.d.ts.map +1 -1
- package/dist/widget/index.js +17 -9
- package/dist/widget/modes/EarnWidget.d.ts +90 -0
- package/dist/widget/modes/EarnWidget.d.ts.map +1 -0
- package/dist/widget/modes/FundWidget.d.ts +97 -0
- package/dist/widget/modes/FundWidget.d.ts.map +1 -0
- package/dist/widget/modes/PayWidget.d.ts +80 -0
- package/dist/widget/modes/PayWidget.d.ts.map +1 -0
- package/dist/widget/modes/SwapWidget.d.ts +76 -0
- package/dist/widget/modes/SwapWidget.d.ts.map +1 -0
- package/dist/widget/modes/WithdrawWidget.d.ts +87 -0
- package/dist/widget/modes/WithdrawWidget.d.ts.map +1 -0
- package/dist/widget/providers/TrailsProvider.d.ts +3 -0
- package/dist/widget/providers/TrailsProvider.d.ts.map +1 -1
- package/dist/widget/providers/WidgetProviderTree.d.ts.map +1 -1
- package/dist/widget/shared/destinationDefaultToken.d.ts +15 -0
- package/dist/widget/shared/destinationDefaultToken.d.ts.map +1 -0
- package/dist/widget/shared/mapSharedProps.d.ts +9 -0
- package/dist/widget/shared/mapSharedProps.d.ts.map +1 -0
- package/dist/widget/shared/methodMap.d.ts +18 -0
- package/dist/widget/shared/methodMap.d.ts.map +1 -0
- package/dist/widget/shared/resolution.d.ts +23 -0
- package/dist/widget/shared/resolution.d.ts.map +1 -0
- package/dist/widget/shared/resolvePaymentSource.d.ts +36 -0
- package/dist/widget/shared/resolvePaymentSource.d.ts.map +1 -0
- package/dist/widget/shared/tokenAllowlist.d.ts +36 -0
- package/dist/widget/shared/tokenAllowlist.d.ts.map +1 -0
- package/dist/widget/shared/types.d.ts +150 -0
- package/dist/widget/shared/types.d.ts.map +1 -0
- package/dist/widget/styles.gen.d.ts +2 -0
- package/dist/widget/styles.gen.d.ts.map +1 -0
- package/dist/widget/types/commonProps.d.ts +3 -7
- package/dist/widget/types/commonProps.d.ts.map +1 -1
- package/dist/widget/utils/fundMethodSwitchState.d.ts +1 -0
- package/dist/widget/utils/fundMethodSwitchState.d.ts.map +1 -1
- package/dist/widget/utils/viewManagerGuards.d.ts +1 -1
- package/dist/widget/utils/viewManagerGuards.d.ts.map +1 -1
- package/dist/widget/widget.d.ts +23 -16
- package/dist/widget/widget.d.ts.map +1 -1
- package/package.json +22 -23
- package/dist/buffer.d.ts +0 -3
- package/dist/buffer.d.ts.map +0 -1
- package/dist/ccip-CT_An6eM.js +0 -230
- package/dist/index-RfqL5Foz.js +0 -114567
- package/dist/paymasterSend.d.ts +0 -90
- package/dist/paymasterSend.d.ts.map +0 -1
- package/dist/sendUserOp.d.ts +0 -122
- package/dist/sendUserOp.d.ts.map +0 -1
- package/dist/toSimpleSmartAccount.d.ts +0 -95
- package/dist/toSimpleSmartAccount.d.ts.map +0 -1
- package/dist/transactionIntent/utils/erc20Approval.d.ts +0 -34
- package/dist/transactionIntent/utils/erc20Approval.d.ts.map +0 -1
- package/dist/utils/allowance.d.ts +0 -19
- package/dist/utils/allowance.d.ts.map +0 -1
- package/dist/widget/analytics/useWidgetAnalytics.d.ts.map +0 -1
- package/dist/widget/components/FeeBreakdown.d.ts +0 -9
- package/dist/widget/components/FeeBreakdown.d.ts.map +0 -1
- package/dist/widget/components/HideBalances.d.ts +0 -4
- package/dist/widget/components/HideBalances.d.ts.map +0 -1
- package/dist/widget/components/MeshExchangeSelection.d.ts.map +0 -1
- package/dist/widget/components/OnrampDeposit.d.ts +0 -10
- package/dist/widget/components/OnrampDeposit.d.ts.map +0 -1
- package/dist/widget/components/SwapSettings.d.ts +0 -4
- package/dist/widget/components/SwapSettings.d.ts.map +0 -1
- package/dist/widget/components/TruncatedAddress.d.ts +0 -12
- package/dist/widget/components/TruncatedAddress.d.ts.map +0 -1
- package/dist/widget/components/WalletImage.d.ts +0 -8
- package/dist/widget/components/WalletImage.d.ts.map +0 -1
- package/dist/widget/css/compiled.css +0 -26
- package/dist/widget/css/index.css +0 -686
- package/dist/widget/hooks/useAddressWalletIcon.d.ts.map +0 -1
- package/dist/widget/hooks/useAmountUsd.d.ts.map +0 -1
- package/dist/widget/hooks/useBalanceVisible.d.ts.map +0 -1
- package/dist/widget/hooks/useChainFilter.d.ts.map +0 -1
- package/dist/widget/hooks/useCheckout.d.ts.map +0 -1
- package/dist/widget/hooks/useClickTracking.d.ts.map +0 -1
- package/dist/widget/hooks/useCombinedHistory.d.ts.map +0 -1
- package/dist/widget/hooks/useConnector.d.ts.map +0 -1
- package/dist/widget/hooks/useCustomTokenSearch.d.ts.map +0 -1
- package/dist/widget/hooks/useDebounce.d.ts.map +0 -1
- package/dist/widget/hooks/useDebugScreens.d.ts.map +0 -1
- package/dist/widget/hooks/useDefaultDestinationToken.d.ts.map +0 -1
- package/dist/widget/hooks/useDefaultOriginToken.d.ts.map +0 -1
- package/dist/widget/hooks/useDepositMonitor.d.ts.map +0 -1
- package/dist/widget/hooks/useDestinationSelectedToken.d.ts.map +0 -1
- package/dist/widget/hooks/useDisplayCurrencyPreference.d.ts.map +0 -1
- package/dist/widget/hooks/useEarnPool.d.ts.map +0 -1
- package/dist/widget/hooks/useExecutingIntentsCount.d.ts.map +0 -1
- package/dist/widget/hooks/useExternalFundingReceiptSync.d.ts.map +0 -1
- package/dist/widget/hooks/useFiatOnRampCurrencies.d.ts.map +0 -1
- package/dist/widget/hooks/useFiatSelectedCurrency.d.ts.map +0 -1
- package/dist/widget/hooks/useGetIntent.d.ts.map +0 -1
- package/dist/widget/hooks/useIntentReceiptBalances.d.ts.map +0 -1
- package/dist/widget/hooks/useIntentTransactionHistory.d.ts.map +0 -1
- package/dist/widget/hooks/useIsConnectedWalletSmartContract.d.ts +0 -7
- package/dist/widget/hooks/useIsConnectedWalletSmartContract.d.ts.map +0 -1
- package/dist/widget/hooks/useIsMobile.d.ts.map +0 -1
- package/dist/widget/hooks/useIsSequenceWallet.d.ts.map +0 -1
- package/dist/widget/hooks/useLocalePreference.d.ts.map +0 -1
- package/dist/widget/hooks/useMeldTransactionHistory.d.ts.map +0 -1
- package/dist/widget/hooks/useMeldTransactionStatus.d.ts.map +0 -1
- package/dist/widget/hooks/useOnRampCountryDefaults.d.ts.map +0 -1
- package/dist/widget/hooks/useOnRampPaymentMethods.d.ts.map +0 -1
- package/dist/widget/hooks/useOnRampProviderWidget.d.ts.map +0 -1
- package/dist/widget/hooks/useOnRampQuote.d.ts.map +0 -1
- package/dist/widget/hooks/useOnRampTransactionStatus.d.ts.map +0 -1
- package/dist/widget/hooks/useOriginSelectedToken.d.ts.map +0 -1
- package/dist/widget/hooks/usePayMessage.d.ts.map +0 -1
- package/dist/widget/hooks/usePriceImpactWarning.d.ts.map +0 -1
- package/dist/widget/hooks/useQuote.d.ts +0 -378
- package/dist/widget/hooks/useQuote.d.ts.map +0 -1
- package/dist/widget/hooks/useRecentTokens.d.ts.map +0 -1
- package/dist/widget/hooks/useRecipients.d.ts.map +0 -1
- package/dist/widget/hooks/useScreenTracking.d.ts +0 -2
- package/dist/widget/hooks/useScreenTracking.d.ts.map +0 -1
- package/dist/widget/hooks/useSelectedFeeOption.d.ts.map +0 -1
- package/dist/widget/hooks/useSelectedFundMethod.d.ts.map +0 -1
- package/dist/widget/hooks/useSelectedRecipient.d.ts.map +0 -1
- package/dist/widget/hooks/useSendForm.d.ts.map +0 -1
- package/dist/widget/hooks/useSwapAmount.d.ts.map +0 -1
- package/dist/widget/hooks/useSwapState.d.ts.map +0 -1
- package/dist/widget/hooks/useTargetAmount.d.ts.map +0 -1
- package/dist/widget/hooks/useTheme.d.ts.map +0 -1
- package/dist/widget/hooks/useTokenList.d.ts.map +0 -1
- package/dist/widget/hooks/useTrailsSendTransaction.d.ts +0 -83
- package/dist/widget/hooks/useTrailsSendTransaction.d.ts.map +0 -1
- package/dist/widget/hooks/useViewManager.d.ts.map +0 -1
- package/dist/widget/hooks/useWalletConnectUri.d.ts +0 -11
- package/dist/widget/hooks/useWalletConnectUri.d.ts.map +0 -1
- package/dist/widget/hooks/useWalletConnectionContext.d.ts.map +0 -1
- package/dist/widget/hooks/useWidgetProps.d.ts.map +0 -1
- package/dist/widget/styles.d.ts +0 -2
- package/dist/widget/styles.d.ts.map +0 -1
- package/dist/widget/types.d.ts +0 -44
- package/dist/widget/types.d.ts.map +0 -1
- package/dist/widget/utils/historyUtils.d.ts +0 -18
- package/dist/widget/utils/historyUtils.d.ts.map +0 -1
- package/src/abi.ts +0 -38
- package/src/abis/erc20.ts +0 -60
- package/src/abis/trailsHydrate.ts +0 -185
- package/src/abis/trailsRouter.ts +0 -121
- package/src/abis/trailsSweep.ts +0 -32
- package/src/abortController.ts +0 -35
- package/src/analytics.ts +0 -2029
- package/src/buffer.ts +0 -10
- package/src/chainSwitch.ts +0 -95
- package/src/chains.ts +0 -570
- package/src/config.ts +0 -118
- package/src/constants.ts +0 -239
- package/src/contractUtils.ts +0 -46
- package/src/cssUtils.ts +0 -5
- package/src/customChains.ts +0 -24
- package/src/customTokens.ts +0 -168
- package/src/decoders.ts +0 -365
- package/src/ens.ts +0 -74
- package/src/error.ts +0 -268
- package/src/estimate.ts +0 -480
- package/src/explorer.ts +0 -38
- package/src/fees.ts +0 -362
- package/src/gasless.ts +0 -638
- package/src/index.ts +0 -205
- package/src/indexerClient.ts +0 -118
- package/src/intentReceiptMonitor.ts +0 -99
- package/src/intentReceiptPoller.ts +0 -327
- package/src/intents.ts +0 -1133
- package/src/keyMachineClient.ts +0 -29
- package/src/keymachine/index.ts +0 -175
- package/src/keymachine/key-machine.gen.ts +0 -993
- package/src/localeUtils.ts +0 -244
- package/src/logger/index.ts +0 -95
- package/src/logger/useSyncLoggerDebug.ts +0 -11
- package/src/logger.ts +0 -1
- package/src/meld/components/MeldCountriesList.tsx +0 -237
- package/src/meld/components/MeldFundMethods.tsx +0 -265
- package/src/meld/components/MeldProvidersList.tsx +0 -187
- package/src/meld/components/MeldTokensList.tsx +0 -321
- package/src/meld/components/SimpleHeader.tsx +0 -35
- package/src/meld/utils/meld.ts +0 -77
- package/src/mutations.ts +0 -166
- package/src/onramp/MeshConnectFlow.tsx +0 -86
- package/src/onramp/MeshConnectIframe.tsx +0 -661
- package/src/onramp/SendFromExchangeButton.tsx +0 -81
- package/src/onramp/TrailsOnRampProvider.tsx +0 -59
- package/src/onramp/index.ts +0 -31
- package/src/onramp/meshconnect.ts +0 -277
- package/src/onramp/trailsOnramp.tsx +0 -130
- package/src/onramp-client/index.ts +0 -52
- package/src/onrampClient.ts +0 -46
- package/src/paymasterSend.ts +0 -521
- package/src/placeholder.ts +0 -92
- package/src/poolUtils.ts +0 -222
- package/src/pools.ts +0 -120
- package/src/prepareSend.ts +0 -553
- package/src/query/balance.fetchers.ts +0 -753
- package/src/query/balance.hooks.ts +0 -357
- package/src/query/balance.queries.ts +0 -307
- package/src/query/chains.hooks.ts +0 -45
- package/src/query/chains.queries.ts +0 -17
- package/src/query/client.ts +0 -20
- package/src/query/fiat.fetchers.ts +0 -33
- package/src/query/fiat.hooks.ts +0 -71
- package/src/query/fiat.queries.ts +0 -67
- package/src/query/geo.fetchers.ts +0 -100
- package/src/query/geo.hooks.ts +0 -16
- package/src/query/geo.queries.ts +0 -36
- package/src/query/helpers.ts +0 -81
- package/src/query/meld.fetchers.ts +0 -97
- package/src/query/meld.hooks.ts +0 -18
- package/src/query/meld.queries.ts +0 -184
- package/src/query/persister.ts +0 -11
- package/src/query/price.fetchers.ts +0 -53
- package/src/query/price.hooks.ts +0 -46
- package/src/query/price.queries.ts +0 -364
- package/src/query/tokenList.queries.ts +0 -118
- package/src/queryParams.ts +0 -100
- package/src/recover.ts +0 -1728
- package/src/sendUserOp.ts +0 -512
- package/src/theme.ts +0 -2
- package/src/toSimpleSmartAccount.ts +0 -567
- package/src/toast.ts +0 -110
- package/src/tokens.ts +0 -1862
- package/src/trailsClient.ts +0 -40
- package/src/transactionIntent/constants.ts +0 -15
- package/src/transactionIntent/deposits/depositOrchestrator.ts +0 -243
- package/src/transactionIntent/deposits/gaslessDeposit.ts +0 -705
- package/src/transactionIntent/deposits/index.ts +0 -3
- package/src/transactionIntent/deposits/standardDeposit.ts +0 -590
- package/src/transactionIntent/execution/index.ts +0 -1
- package/src/transactionIntent/execution/transactionState.ts +0 -38
- package/src/transactionIntent/handlers/index.ts +0 -1
- package/src/transactionIntent/handlers/intentHandler.ts +0 -1613
- package/src/transactionIntent/helpers/index.ts +0 -1
- package/src/transactionIntent/helpers/transactionStateHelpers.ts +0 -440
- package/src/transactionIntent/index.ts +0 -10
- package/src/transactionIntent/quote/feeExtractors.ts +0 -61
- package/src/transactionIntent/quote/index.ts +0 -3
- package/src/transactionIntent/quote/normalizeQuote.ts +0 -559
- package/src/transactionIntent/quote/quoteHelpers.ts +0 -117
- package/src/transactionIntent/types.ts +0 -241
- package/src/transactionIntent/utils/balanceChecker.ts +0 -103
- package/src/transactionIntent/utils/erc20Approval.ts +0 -171
- package/src/transactionIntent/utils/index.ts +0 -2
- package/src/transactionIntent/utils/resilientDepositTracker.ts +0 -171
- package/src/transactionIntent/utils/testnetHelpers.ts +0 -5
- package/src/transactionIntent/validators.ts +0 -27
- package/src/transactions.ts +0 -429
- package/src/types.d.ts +0 -16
- package/src/umd.tsx +0 -33
- package/src/utils/address.ts +0 -78
- package/src/utils/allowance.ts +0 -47
- package/src/utils/fiat.ts +0 -32
- package/src/utils/format.ts +0 -625
- package/src/utils/passthrough.ts +0 -93
- package/src/utils/time.ts +0 -118
- package/src/utils/validation.ts +0 -104
- package/src/utils.ts +0 -112
- package/src/version.ts +0 -8
- package/src/vite-env.d.ts +0 -4
- package/src/walletUtils.ts +0 -293
- package/src/wallets.ts +0 -544
- package/src/widget/analytics/useWidgetAnalytics.ts +0 -56
- package/src/widget/assets/Exchange-icon-black.svg +0 -5
- package/src/widget/assets/MetaMask-icon-fox-with-margins.svg +0 -31
- package/src/widget/assets/MetaMask-icon-fox.svg +0 -26
- package/src/widget/assets/MetaMask-logo-black.svg +0 -3
- package/src/widget/assets/MetaMask-logo-white.svg +0 -16
- package/src/widget/assets/Trails-logo-black.svg +0 -13
- package/src/widget/assets/Trails-logo-white.svg +0 -13
- package/src/widget/assets/WalletChange-black.svg +0 -5
- package/src/widget/assets/WalletConnect-logo-black.svg +0 -14
- package/src/widget/assets/WalletConnect-logo-blue.svg +0 -14
- package/src/widget/assets/WalletConnect-logo-white.svg +0 -14
- package/src/widget/assets/WalletConnect-logo.svg +0 -40
- package/src/widget/assets/aave.svg +0 -14
- package/src/widget/assets/morpho.svg +0 -14
- package/src/widget/compiled.css +0 -26
- package/src/widget/components/AccountActionsDropdown.tsx +0 -31
- package/src/widget/components/AccountIntentTransactionHistory.tsx +0 -756
- package/src/widget/components/AccountIntentTransactionHistoryButton.tsx +0 -34
- package/src/widget/components/AccountSettings.tsx +0 -168
- package/src/widget/components/AddressOrEnsName.tsx +0 -24
- package/src/widget/components/AddressWalletIcon.tsx +0 -49
- package/src/widget/components/AllChainsIcon.tsx +0 -54
- package/src/widget/components/ChainFilterDropdown.tsx +0 -220
- package/src/widget/components/ChainImage.tsx +0 -40
- package/src/widget/components/ChainList.tsx +0 -158
- package/src/widget/components/ClassicSwap.tsx +0 -1761
- package/src/widget/components/ConfigDisplay.tsx +0 -158
- package/src/widget/components/ConnectWallet.tsx +0 -566
- package/src/widget/components/ConnectedWallets.tsx +0 -414
- package/src/widget/components/CopyButton.tsx +0 -108
- package/src/widget/components/CountryFilterDropdown.tsx +0 -179
- package/src/widget/components/DebugMenu.tsx +0 -50
- package/src/widget/components/DebugScreensList.tsx +0 -70
- package/src/widget/components/DebugToast.tsx +0 -63
- package/src/widget/components/DepositTracker.tsx +0 -326
- package/src/widget/components/DirectTransfer.tsx +0 -305
- package/src/widget/components/Disconnect.tsx +0 -68
- package/src/widget/components/DynamicInputStyles.tsx +0 -121
- package/src/widget/components/DynamicSizeInputField.tsx +0 -245
- package/src/widget/components/ENSAvatar.tsx +0 -33
- package/src/widget/components/Earn.tsx +0 -160
- package/src/widget/components/EarnPools.tsx +0 -417
- package/src/widget/components/EarnPoolsFilters.tsx +0 -165
- package/src/widget/components/ErrorAnimationIcon.tsx +0 -130
- package/src/widget/components/ErrorDisplay.tsx +0 -152
- package/src/widget/components/ExecutingIntentsBadge.tsx +0 -24
- package/src/widget/components/ExecutionStatusBadge.tsx +0 -53
- package/src/widget/components/FeeBreakdown.tsx +0 -155
- package/src/widget/components/FeeOption.tsx +0 -170
- package/src/widget/components/FeeOptions.tsx +0 -247
- package/src/widget/components/FiatSelector.tsx +0 -308
- package/src/widget/components/FiatSelectorButton.tsx +0 -68
- package/src/widget/components/Footer.tsx +0 -67
- package/src/widget/components/Fund.tsx +0 -2463
- package/src/widget/components/FundMethods.tsx +0 -423
- package/src/widget/components/FundWalletSelection.tsx +0 -60
- package/src/widget/components/FundingMethodSelectorButton.tsx +0 -106
- package/src/widget/components/GreenCheckAnimation.tsx +0 -119
- package/src/widget/components/HideBalances.tsx +0 -24
- package/src/widget/components/HighPriceImpactBlock.tsx +0 -44
- package/src/widget/components/HookModalContent.tsx +0 -377
- package/src/widget/components/Identicon.tsx +0 -228
- package/src/widget/components/LoadingSpinner.tsx +0 -9
- package/src/widget/components/MeldForm.tsx +0 -780
- package/src/widget/components/MeldHistory.tsx +0 -433
- package/src/widget/components/MeldStepsFlow.tsx +0 -1651
- package/src/widget/components/MeldTransactionStatus.tsx +0 -255
- package/src/widget/components/MeshExchangeSelection.tsx +0 -218
- package/src/widget/components/Modal.tsx +0 -86
- package/src/widget/components/OFTProgressBar.tsx +0 -89
- package/src/widget/components/OnRampProviderSelector.tsx +0 -263
- package/src/widget/components/OnrampDeposit.tsx +0 -122
- package/src/widget/components/OnrampErrorScreen.tsx +0 -163
- package/src/widget/components/OnrampHistoryRow.tsx +0 -321
- package/src/widget/components/OnrampPaymentMethods.tsx +0 -81
- package/src/widget/components/OnrampProviderConfirmation.tsx +0 -1060
- package/src/widget/components/OriginSelectionAmount.tsx +0 -144
- package/src/widget/components/OriginTransferInformation.tsx +0 -59
- package/src/widget/components/Pay.tsx +0 -1165
- package/src/widget/components/PaymentMethods.tsx +0 -198
- package/src/widget/components/PercentageMaxButtons.tsx +0 -112
- package/src/widget/components/PoolDeposit.tsx +0 -642
- package/src/widget/components/PoolWithdraw.tsx +0 -761
- package/src/widget/components/PriceImpactWarning.tsx +0 -87
- package/src/widget/components/QRCodeOptions.tsx +0 -65
- package/src/widget/components/QRCodeWalletSelect.tsx +0 -80
- package/src/widget/components/QrCode.tsx +0 -216
- package/src/widget/components/QuoteDetails.tsx +0 -1275
- package/src/widget/components/Receipt.tsx +0 -673
- package/src/widget/components/ReceiptRecoverableFunds.tsx +0 -135
- package/src/widget/components/RecentTokens.tsx +0 -66
- package/src/widget/components/RecipientSelectorButton.tsx +0 -50
- package/src/widget/components/Recipients.tsx +0 -413
- package/src/widget/components/RefundWarning.tsx +0 -61
- package/src/widget/components/RequiredPropsError.tsx +0 -33
- package/src/widget/components/ScreenHeader.tsx +0 -123
- package/src/widget/components/SearchInputField.tsx +0 -99
- package/src/widget/components/SessionTimeoutScreen.tsx +0 -103
- package/src/widget/components/ShadowPortal.tsx +0 -99
- package/src/widget/components/ShadowRootContext.tsx +0 -17
- package/src/widget/components/SimpleRecipientInputScreen.tsx +0 -91
- package/src/widget/components/SlippageToleranceSettings.tsx +0 -279
- package/src/widget/components/Swap.tsx +0 -50
- package/src/widget/components/SwapDisplay.tsx +0 -68
- package/src/widget/components/SwapSettings.tsx +0 -52
- package/src/widget/components/ThemeProvider.tsx +0 -115
- package/src/widget/components/ThemeSyncer.tsx +0 -47
- package/src/widget/components/Toast.tsx +0 -336
- package/src/widget/components/TokenDisplayNonSelectable.tsx +0 -40
- package/src/widget/components/TokenImage.tsx +0 -156
- package/src/widget/components/TokenList.tsx +0 -107
- package/src/widget/components/TokenSelector.tsx +0 -807
- package/src/widget/components/TokenSelectorButton.tsx +0 -123
- package/src/widget/components/TokenSkeleton.tsx +0 -53
- package/src/widget/components/Tooltip.tsx +0 -64
- package/src/widget/components/TrailsHookModal.tsx +0 -107
- package/src/widget/components/TransactionDetails.tsx +0 -534
- package/src/widget/components/TransactionHistoryItem.tsx +0 -767
- package/src/widget/components/TransferPendingVertical.tsx +0 -591
- package/src/widget/components/TruncatedAddress.tsx +0 -68
- package/src/widget/components/TruncatedTransactionHash.tsx +0 -74
- package/src/widget/components/UserPreferences.tsx +0 -570
- package/src/widget/components/WaasFeeOptions.tsx +0 -588
- package/src/widget/components/WalletConfirmation.tsx +0 -220
- package/src/widget/components/WalletConnect.tsx +0 -348
- package/src/widget/components/WalletConnectionPending.tsx +0 -178
- package/src/widget/components/WalletImage.tsx +0 -52
- package/src/widget/components/WalletList.tsx +0 -125
- package/src/widget/components/WidgetProviders.tsx +0 -82
- package/src/widget/components/Withdraw.tsx +0 -1106
- package/src/widget/components/YellowWarningAnimation.tsx +0 -146
- package/src/widget/hooks/useAddressWalletIcon.ts +0 -55
- package/src/widget/hooks/useAmountUsd.ts +0 -44
- package/src/widget/hooks/useBalanceVisible.tsx +0 -95
- package/src/widget/hooks/useChainFilter.tsx +0 -56
- package/src/widget/hooks/useCheckout.ts +0 -361
- package/src/widget/hooks/useClickTracking.ts +0 -74
- package/src/widget/hooks/useCombinedHistory.ts +0 -420
- package/src/widget/hooks/useConnector.tsx +0 -24
- package/src/widget/hooks/useCustomTokenSearch.tsx +0 -369
- package/src/widget/hooks/useDebounce.ts +0 -25
- package/src/widget/hooks/useDebugScreens.ts +0 -600
- package/src/widget/hooks/useDefaultDestinationToken.tsx +0 -179
- package/src/widget/hooks/useDefaultOriginToken.tsx +0 -407
- package/src/widget/hooks/useDepositMonitor.ts +0 -118
- package/src/widget/hooks/useDestinationSelectedToken.tsx +0 -310
- package/src/widget/hooks/useDisplayCurrencyPreference.tsx +0 -145
- package/src/widget/hooks/useEarnPool.tsx +0 -36
- package/src/widget/hooks/useExecutingIntentsCount.ts +0 -78
- package/src/widget/hooks/useExternalFundingReceiptSync.ts +0 -79
- package/src/widget/hooks/useFiatOnRampCurrencies.ts +0 -46
- package/src/widget/hooks/useFiatSelectedCurrency.tsx +0 -123
- package/src/widget/hooks/useGetIntent.ts +0 -54
- package/src/widget/hooks/useIntentReceiptBalances.ts +0 -141
- package/src/widget/hooks/useIntentTransactionHistory.ts +0 -790
- package/src/widget/hooks/useIsConnectedWalletSmartContract.ts +0 -43
- package/src/widget/hooks/useIsMobile.tsx +0 -50
- package/src/widget/hooks/useIsSequenceWallet.ts +0 -17
- package/src/widget/hooks/useLocalePreference.tsx +0 -187
- package/src/widget/hooks/useMeldTransactionHistory.ts +0 -184
- package/src/widget/hooks/useMeldTransactionStatus.ts +0 -707
- package/src/widget/hooks/useOnRampCountryDefaults.ts +0 -57
- package/src/widget/hooks/useOnRampPaymentMethods.ts +0 -72
- package/src/widget/hooks/useOnRampProviderWidget.ts +0 -184
- package/src/widget/hooks/useOnRampQuote.ts +0 -340
- package/src/widget/hooks/useOnRampTransactionStatus.ts +0 -196
- package/src/widget/hooks/useOriginSelectedToken.tsx +0 -253
- package/src/widget/hooks/usePayMessage.tsx +0 -496
- package/src/widget/hooks/usePriceImpactWarning.ts +0 -17
- package/src/widget/hooks/useQuote.ts +0 -1239
- package/src/widget/hooks/useRecentTokens.ts +0 -159
- package/src/widget/hooks/useRecipients.ts +0 -167
- package/src/widget/hooks/useScreenTracking.ts +0 -14
- package/src/widget/hooks/useSelectedFeeOption.tsx +0 -323
- package/src/widget/hooks/useSelectedFundMethod.tsx +0 -93
- package/src/widget/hooks/useSelectedRecipient.tsx +0 -75
- package/src/widget/hooks/useSendForm.ts +0 -1389
- package/src/widget/hooks/useSwapAmount.tsx +0 -50
- package/src/widget/hooks/useSwapState.tsx +0 -121
- package/src/widget/hooks/useTargetAmount.ts +0 -26
- package/src/widget/hooks/useTheme.tsx +0 -80
- package/src/widget/hooks/useTokenList.ts +0 -1168
- package/src/widget/hooks/useTrailsSendTransaction.ts +0 -987
- package/src/widget/hooks/useViewManager.tsx +0 -506
- package/src/widget/hooks/useWalletConnectUri.tsx +0 -307
- package/src/widget/hooks/useWalletConnectionContext.tsx +0 -128
- package/src/widget/hooks/useWidgetProps.tsx +0 -33
- package/src/widget/index.css +0 -686
- package/src/widget/index.tsx +0 -28
- package/src/widget/providers/TrailsModalProvider.tsx +0 -238
- package/src/widget/providers/TrailsProvider.tsx +0 -155
- package/src/widget/providers/UserActivityProvider.tsx +0 -78
- package/src/widget/providers/WidgetProviderTree.tsx +0 -90
- package/src/widget/styles.ts +0 -26
- package/src/widget/types/analytics.ts +0 -22
- package/src/widget/types/commonProps.ts +0 -56
- package/src/widget/types/svg.d.ts +0 -8
- package/src/widget/types.ts +0 -51
- package/src/widget/utils/countryUtils.ts +0 -89
- package/src/widget/utils/createWagmiConfig.ts +0 -43
- package/src/widget/utils/forexRateStore.ts +0 -120
- package/src/widget/utils/fundMethodSwitchState.ts +0 -27
- package/src/widget/utils/historyFilters.ts +0 -157
- package/src/widget/utils/historyUtils.ts +0 -101
- package/src/widget/utils/localeStore.ts +0 -68
- package/src/widget/utils/meldProviderUtils.ts +0 -26
- package/src/widget/utils/meshSupportedTokens.ts +0 -28
- package/src/widget/utils/onrampConfig.ts +0 -15
- package/src/widget/utils/statusLabel.ts +0 -3
- package/src/widget/utils/tokens.ts +0 -138
- package/src/widget/utils/trailsOnrampConfig.ts +0 -39
- package/src/widget/utils/transactionFailure.ts +0 -52
- package/src/widget/utils/viewManagerGuards.ts +0 -49
- package/src/widget/utils/windowUtils.ts +0 -138
- package/src/widget/widget.tsx +0 -3400
- /package/dist/{widget/hooks → hooks}/useAddressWalletIcon.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useAmountUsd.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useBalanceVisible.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useChainFilter.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useClickTracking.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useConnector.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useDebounce.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useDepositMonitor.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useDisplayCurrencyPreference.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useExecutingIntentsCount.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useFiatSelectedCurrency.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useGetIntent.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useIsMobile.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useIsSequenceWallet.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useLocalePreference.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useMeldTransactionHistory.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useMeldTransactionStatus.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useOnRampCountryDefaults.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/usePayMessage.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/usePriceImpactWarning.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useRecipients.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useSelectedFeeOption.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useSelectedRecipient.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useSwapAmount.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useTargetAmount.d.ts +0 -0
- /package/dist/{widget/hooks → hooks}/useTheme.d.ts +0 -0
- /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
|
-
}
|