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,1239 +0,0 @@
|
|
|
1
|
-
import { useQuery, useQueryClient } from "@tanstack/react-query"
|
|
2
|
-
import { useRef, useMemo, useState, useEffect } from "react"
|
|
3
|
-
import type { TransactionReceipt } from "viem"
|
|
4
|
-
import { zeroAddress, erc20Abi, parseUnits } from "viem"
|
|
5
|
-
import { etherlink } from "viem/chains"
|
|
6
|
-
import { useAccount } from "wagmi"
|
|
7
|
-
import { useIndexerGatewayClient } from "../../indexerClient.js"
|
|
8
|
-
import { balanceQueries } from "../../query/balance.queries.js"
|
|
9
|
-
import { isNetworkError } from "../../query/helpers.js"
|
|
10
|
-
import { logger } from "../../logger.js"
|
|
11
|
-
import { useSupportedTokens } from "../../tokens.js"
|
|
12
|
-
import { findSupportedToken } from "../utils/tokens.js"
|
|
13
|
-
import { useTrailsClient } from "../../trailsClient.js"
|
|
14
|
-
import { useTrails } from "../../widget/providers/TrailsProvider.js"
|
|
15
|
-
import { getExplorerUrl } from "../../explorer.js"
|
|
16
|
-
import { getFullErrorMessage, getPrettifiedErrorMessage } from "../../error.js"
|
|
17
|
-
import { prepareSend } from "../../prepareSend.js"
|
|
18
|
-
import { abortControllerRegistry } from "../../abortController.js"
|
|
19
|
-
import { TradeType } from "../../prepareSend.js"
|
|
20
|
-
import { getChainInfo } from "../../chains.js"
|
|
21
|
-
import { useChainRpcClient } from "../../query/chains.hooks.js"
|
|
22
|
-
import { getIsContract } from "../../contractUtils.js"
|
|
23
|
-
import type { IntentTransaction } from "@0xtrails/api"
|
|
24
|
-
import type {
|
|
25
|
-
PrepareSendOptions,
|
|
26
|
-
FundMethod,
|
|
27
|
-
} from "../../transactionIntent/types.js"
|
|
28
|
-
import type { Chain } from "../../chains.js"
|
|
29
|
-
import type { Token } from "../../tokens.js"
|
|
30
|
-
import type { TransactionState } from "../../transactions.js"
|
|
31
|
-
import type { PrepareSendFees } from "../../prepareSend.js"
|
|
32
|
-
import type { TrailsFeeBreakdown } from "../../fees.js"
|
|
33
|
-
import { getTokenPrice } from "../../query/price.queries.js"
|
|
34
|
-
import { useCommitIntent, useExecuteIntent } from "../../mutations.js"
|
|
35
|
-
import type { CheckoutOnHandlers } from "./useCheckout.js"
|
|
36
|
-
import type {
|
|
37
|
-
FeeOption,
|
|
38
|
-
RouteProvider,
|
|
39
|
-
PriceImpactDetails,
|
|
40
|
-
} from "@0xtrails/api"
|
|
41
|
-
import type { OnrampTrackingData } from "../types/analytics.js"
|
|
42
|
-
import { isZeroOrInvalidAmount } from "../../utils/validation.js"
|
|
43
|
-
import { addressEqual } from "../../utils/address.js"
|
|
44
|
-
import { HOUR_MS } from "../../utils/time.js"
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Configuration options for the `useQuote` hook.
|
|
48
|
-
*
|
|
49
|
-
* All parameters are optional, but the hook will not fetch a quote until all required
|
|
50
|
-
* parameters are provided (walletClient, fromTokenAddress, fromChainId, toTokenAddress,
|
|
51
|
-
* toChainId, swapAmount, toAddress, toApprove).
|
|
52
|
-
*/
|
|
53
|
-
export type UseQuoteProps = {
|
|
54
|
-
/** The wallet client from wagmi (e.g., from `useWalletClient()`). Required for quote fetching. */
|
|
55
|
-
walletClient?: any // TODO: fix this, has to do with viem/wagmi versions
|
|
56
|
-
/** The contract address of the origin token. */
|
|
57
|
-
fromTokenAddress?: string | null
|
|
58
|
-
/** The chain ID of the origin chain */
|
|
59
|
-
fromChainId?: number | null
|
|
60
|
-
/** The contract address of the destination token. */
|
|
61
|
-
toTokenAddress?: string | null
|
|
62
|
-
/** The chain ID of the destination chain. */
|
|
63
|
-
toChainId?: number | null
|
|
64
|
-
/** Optional address to approve the destination token to. If not specified, the to address will be used. */
|
|
65
|
-
toApprove?: string | null
|
|
66
|
-
/** Optional custom calldata for the destination chain. Used for executing arbitrary contract calls. */
|
|
67
|
-
toCalldata?: string | null
|
|
68
|
-
/** The amount to swap, as a string or bigint in the token's smallest unit (wei/smallest unit). For example, 1 USDC (6 decimals) = '1000000'. */
|
|
69
|
-
swapAmount?: string | bigint
|
|
70
|
-
/** The recipient address for the destination token. */
|
|
71
|
-
toAddress?: string | null
|
|
72
|
-
/**
|
|
73
|
-
* @deprecated Use `toAddress` instead. This will be removed in a future version.
|
|
74
|
-
*/
|
|
75
|
-
toRecipient?: string | null
|
|
76
|
-
/** The trade type: `TradeType.EXACT_INPUT` (you specify input amount) or `TradeType.EXACT_OUTPUT` (you specify output amount). Defaults to `EXACT_OUTPUT`. */
|
|
77
|
-
tradeType?: TradeType | null
|
|
78
|
-
/** Slippage tolerance as a decimal string or number (e.g., '0.005' for 0.5%, '0.01' for 1%). Defaults to a reasonable value if not provided. */
|
|
79
|
-
slippageTolerance?: string | number | null
|
|
80
|
-
/** Optional callback function that receives transaction state updates during swap execution. */
|
|
81
|
-
onStatusUpdate?: ((transactionStates: TransactionState[]) => void) | null
|
|
82
|
-
/** Optional quote swap provider ID to use. If not specified, the best available provider will be selected. */
|
|
83
|
-
swapProvider?: RouteProvider | null
|
|
84
|
-
/** Optional quote bridge provider ID to use. If not specified, the best available provider will be selected. */
|
|
85
|
-
bridgeProvider?: RouteProvider | null
|
|
86
|
-
/** Optional swap provider fallback flag passed to QuoteIntent request options. */
|
|
87
|
-
swapProviderFallback?: boolean
|
|
88
|
-
/** Optional bridge provider fallback flag passed to QuoteIntent request options. */
|
|
89
|
-
bridgeProviderFallback?: boolean
|
|
90
|
-
/**
|
|
91
|
-
* Optional checkout event handlers for tracking the states of a Trails transaction.
|
|
92
|
-
*
|
|
93
|
-
* @example
|
|
94
|
-
* ```ts
|
|
95
|
-
* checkoutOnHandlers: {
|
|
96
|
-
* triggerCheckoutStart: () => {
|
|
97
|
-
* console.log('Checkout started')
|
|
98
|
-
* },
|
|
99
|
-
* triggerCheckoutQuote: (quote) => {
|
|
100
|
-
* console.log('Quote received:', quote)
|
|
101
|
-
* },
|
|
102
|
-
* triggerCheckoutComplete: (status, accountAddress) => {
|
|
103
|
-
* console.log('Checkout completed:', status, accountAddress)
|
|
104
|
-
* }
|
|
105
|
-
* }
|
|
106
|
-
* ```
|
|
107
|
-
*
|
|
108
|
-
* Available handlers:
|
|
109
|
-
* - `triggerCheckoutStart`
|
|
110
|
-
* - `triggerCheckoutQuote`
|
|
111
|
-
* - `triggerCheckoutSignatureRequest`
|
|
112
|
-
* - `triggerCheckoutSignatureConfirmed`
|
|
113
|
-
* - `triggerCheckoutSignatureRejected`
|
|
114
|
-
* - `triggerCheckoutComplete`
|
|
115
|
-
* - `triggerCheckoutError`
|
|
116
|
-
* - `triggerCheckoutStatusUpdate`
|
|
117
|
-
*/
|
|
118
|
-
checkoutOnHandlers?: Partial<CheckoutOnHandlers>
|
|
119
|
-
/** Optional paymaster URL for gasless ERC-4337 transactions. */
|
|
120
|
-
paymasterUrl?: string
|
|
121
|
-
/** Optional fee option selection (e.g., user selects USDC as the fee token instead of ETH) */
|
|
122
|
-
selectedFeeOption?: FeeOption | null
|
|
123
|
-
/** Optional AbortSignal to cancel the quote request. */
|
|
124
|
-
abortSignal?: AbortSignal
|
|
125
|
-
/** Optional API key override for Trails API access. */
|
|
126
|
-
apiKey?: string | null
|
|
127
|
-
/** Optional environment override for node gateway ('prod' | 'dev' | 'local' | 'cors-anywhere'). */
|
|
128
|
-
nodeGatewayEnv?: "prod" | "dev" | "local" | "cors-anywhere"
|
|
129
|
-
/** Optional flag to indicate if the wallet is a smart wallet. */
|
|
130
|
-
isSmartWallet?: boolean | null
|
|
131
|
-
/** Optional fund method (e.g., 'wallet', 'direct-transfer', 'onramp-mesh', 'onramp-meld'). Used to determine default balance for external deposit flows. */
|
|
132
|
-
fundMethod?: FundMethod | null
|
|
133
|
-
/** Optional onramp tracking data for analytics */
|
|
134
|
-
onramp?: OnrampTrackingData | null
|
|
135
|
-
/** Optional mode for analytics tracking ('pay' | 'fund' | 'earn' | 'swap') */
|
|
136
|
-
mode?: "pay" | "fund" | "earn" | "swap" | "withdraw" | null
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Return type for the `swap` function returned by {@link useQuote}.
|
|
141
|
-
*
|
|
142
|
-
* Contains information about both the origin and destination transactions,
|
|
143
|
-
* including transaction hashes, explorer URLs, and receipts.
|
|
144
|
-
*/
|
|
145
|
-
export type SwapReturn = {
|
|
146
|
-
originTransaction: {
|
|
147
|
-
transactionHash?: string | null
|
|
148
|
-
explorerUrl?: string | null
|
|
149
|
-
receipt: TransactionReceipt | IntentTransaction | null
|
|
150
|
-
}
|
|
151
|
-
destinationTransaction: {
|
|
152
|
-
transactionHash?: string | null
|
|
153
|
-
explorerUrl?: string | null
|
|
154
|
-
receipt: IntentTransaction | null
|
|
155
|
-
}
|
|
156
|
-
totalCompletionSeconds?: number
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Information about a quote provider (LiFi, CCTP, Relay, etc.) used for routing the swap.
|
|
161
|
-
*/
|
|
162
|
-
export type RouteProviderInfo = {
|
|
163
|
-
id: string
|
|
164
|
-
name: string
|
|
165
|
-
url: string
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* A quote object containing all the details about a Trails intent transaction.
|
|
170
|
-
*
|
|
171
|
-
* Includes token amounts, fees, price impact, estimated completion time,
|
|
172
|
-
* and other relevant information for displaying to the user.
|
|
173
|
-
*/
|
|
174
|
-
export type Quote = {
|
|
175
|
-
// Kept for backward compatibility (use origin*/destination* versions)
|
|
176
|
-
fromAmount: string
|
|
177
|
-
fromAmountMin: string
|
|
178
|
-
toAmount: string
|
|
179
|
-
toAmountMin: string
|
|
180
|
-
fromAmountUsdDisplay: string
|
|
181
|
-
toAmountUsdDisplay: string
|
|
182
|
-
toAmountMinUsdDisplay: string
|
|
183
|
-
// PrepareSendQuote compatible names
|
|
184
|
-
originAmount: string
|
|
185
|
-
originAmountMin: string
|
|
186
|
-
destinationAmount: string
|
|
187
|
-
destinationAmountMin: string
|
|
188
|
-
originAmountUsdDisplay: string
|
|
189
|
-
destinationAmountUsdDisplay: string
|
|
190
|
-
originAmountDisplay: string
|
|
191
|
-
destinationAmountDisplay: string
|
|
192
|
-
originAmountMinDisplay: string
|
|
193
|
-
originAmountMinUsdFormatted: string
|
|
194
|
-
originAmountMinUsdDisplay: string
|
|
195
|
-
destinationAmountMinDisplay: string
|
|
196
|
-
destinationAmountMinUsdFormatted: string
|
|
197
|
-
destinationAmountMinUsdDisplay: string
|
|
198
|
-
originAmountUsdFormatted: string
|
|
199
|
-
destinationAmountUsdFormatted: string
|
|
200
|
-
// Locale display fields
|
|
201
|
-
intentProtocol: string
|
|
202
|
-
originAmountFormattedLocale?: string
|
|
203
|
-
originAmountUsdLocaleDisplay?: string
|
|
204
|
-
destinationAmountFormattedLocale?: string
|
|
205
|
-
destinationAmountUsdLocaleDisplay?: string
|
|
206
|
-
originAmountUsd?: number
|
|
207
|
-
fromAmountUsd?: number
|
|
208
|
-
// Common fields
|
|
209
|
-
originToken: Token
|
|
210
|
-
destinationToken: Token
|
|
211
|
-
originChain: Chain
|
|
212
|
-
destinationChain: Chain
|
|
213
|
-
fees: PrepareSendFees
|
|
214
|
-
slippageTolerance: string
|
|
215
|
-
priceImpact: string
|
|
216
|
-
priceImpactUsd: string | null
|
|
217
|
-
priceImpactUsdDisplay: string
|
|
218
|
-
priceImpactUsdLocaleDisplay?: string
|
|
219
|
-
completionEstimateSeconds: number
|
|
220
|
-
completionEstimateDisplay: string
|
|
221
|
-
transactionStates: TransactionState[]
|
|
222
|
-
originTokenRate: string
|
|
223
|
-
routeProviders: RouteProviderInfo[]
|
|
224
|
-
destinationTokenRate: string
|
|
225
|
-
originTokenPriceUsd: number
|
|
226
|
-
destinationTokenPriceUsd: number
|
|
227
|
-
gasCostUsd: number | null
|
|
228
|
-
gasCostUsdDisplay: string
|
|
229
|
-
gasCost: string
|
|
230
|
-
gasCostFormatted: string
|
|
231
|
-
totalFeesUsd: number | null
|
|
232
|
-
totalFeesUsdDisplay: string
|
|
233
|
-
totalGasUsd: number | null
|
|
234
|
-
totalGasUsdDisplay: string
|
|
235
|
-
intentId: string | null
|
|
236
|
-
originAmountFormatted: string
|
|
237
|
-
destinationAmountFormatted: string
|
|
238
|
-
originDepositAddress: string
|
|
239
|
-
destinationDepositAddress: string
|
|
240
|
-
destinationAddress: string
|
|
241
|
-
destinationApproveAddress: string
|
|
242
|
-
destinationCalldata: string
|
|
243
|
-
trailsFeeBreakdown: TrailsFeeBreakdown | null
|
|
244
|
-
originGasUsd: number | null
|
|
245
|
-
originGasUsdDisplay: string
|
|
246
|
-
destinationGasUsd: number | null
|
|
247
|
-
destinationGasUsdDisplay: string
|
|
248
|
-
providerFeeUsd: number | null
|
|
249
|
-
providerFeeUsdDisplay: string
|
|
250
|
-
trailsFeeUsd: number | null
|
|
251
|
-
trailsFeeUsdDisplay: string
|
|
252
|
-
totalProviderFeesUsd: number | null
|
|
253
|
-
totalProviderFeesUsdDisplay: string
|
|
254
|
-
// Locale display fields for fees
|
|
255
|
-
totalGasUsdLocaleDisplay?: string
|
|
256
|
-
originGasUsdLocaleDisplay?: string
|
|
257
|
-
destinationGasUsdLocaleDisplay?: string
|
|
258
|
-
totalProviderFeesUsdLocaleDisplay?: string
|
|
259
|
-
providerFeeUsdLocaleDisplay?: string
|
|
260
|
-
trailsFeeUsdLocaleDisplay?: string
|
|
261
|
-
noSufficientBalance: boolean
|
|
262
|
-
expiresAt: string | null
|
|
263
|
-
priceImpactDetails: PriceImpactDetails | null
|
|
264
|
-
// Passthrough fields for UI switching
|
|
265
|
-
passthroughEligible?: boolean
|
|
266
|
-
passthroughTransactionStates?: TransactionState[]
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Return type for the {@link useQuote} hook.
|
|
271
|
-
*
|
|
272
|
-
* Provides the quote data, send function, loading state, error information,
|
|
273
|
-
* and utility functions for managing the quote lifecycle.
|
|
274
|
-
*/
|
|
275
|
-
export type SendOptions = {
|
|
276
|
-
/** Override the fee option for this transaction (e.g., pay gas in USDC instead of ETH). */
|
|
277
|
-
selectedFeeOption?: FeeOption | null
|
|
278
|
-
/** Callback called when the wallet signature is confirmed and transaction is submitted. */
|
|
279
|
-
onOriginSend?: () => void
|
|
280
|
-
/** For onramp-meld flow, provide the deposit transaction hash directly. */
|
|
281
|
-
depositTransactionHash?: string
|
|
282
|
-
/** Skip committing the intent (used when intent is already committed). */
|
|
283
|
-
skipCommit?: boolean
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
export type UseQuoteReturn = {
|
|
287
|
-
/** The quote object with transaction details, or `null` if not available. */
|
|
288
|
-
quote: Quote | null
|
|
289
|
-
/** A function to execute the transaction, or `null` if not available. Returns a Promise that resolves to transaction result with receipts. Accepts optional SendOptions to override fee option. */
|
|
290
|
-
send: ((options?: SendOptions) => Promise<SwapReturn | null>) | null
|
|
291
|
-
/**
|
|
292
|
-
* @deprecated Use `send` instead. This will be removed in a future version.
|
|
293
|
-
*/
|
|
294
|
-
swap: ((options?: SendOptions) => Promise<SwapReturn | null>) | null
|
|
295
|
-
/** Boolean indicating if a quote is currently being fetched. */
|
|
296
|
-
isLoadingQuote: boolean
|
|
297
|
-
/** Any error that occurred while fetching the quote, or `null`. */
|
|
298
|
-
quoteError: unknown
|
|
299
|
-
/** A user-friendly error message string. */
|
|
300
|
-
quoteErrorPrettified: string
|
|
301
|
-
/** Function to manually refetch the quote (useful for refreshing stale quotes). */
|
|
302
|
-
refetchQuote: () => Promise<void>
|
|
303
|
-
/** Function to abort any in-flight quote requests. */
|
|
304
|
-
abort: () => void
|
|
305
|
-
/** Fee options available for this quote (e.g., pay gas in different tokens). */
|
|
306
|
-
feeOptions: FeeOption[]
|
|
307
|
-
/** Whether the recipient address is a contract (null if not yet checked). */
|
|
308
|
-
isRecipientContract: boolean | null
|
|
309
|
-
/** Whether the sender address is a contract on the origin chain (null if not yet checked). */
|
|
310
|
-
isSenderContractOnOrigin: boolean | null
|
|
311
|
-
/** Whether the sender address is a contract on the destination chain (null if not yet checked). */
|
|
312
|
-
isSenderContractOnDestination: boolean | null
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// TODO: consolidate useSendForm, prepareSend, and useQuote hooks into a single hook
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* React hook for fetching quotes and executing cross-chain or same-chain intent transactions.
|
|
319
|
-
*
|
|
320
|
-
* This hook provides a simple interface to get quotes for intent transactions and execute them.
|
|
321
|
-
* It handles both cross-chain and same-chain intent transactions, automatically fetching token balances,
|
|
322
|
-
* calculating fees, and providing transaction state updates.
|
|
323
|
-
*
|
|
324
|
-
* @example
|
|
325
|
-
* Cross-chain swap example:
|
|
326
|
-
* ```tsx
|
|
327
|
-
* import { useQuote, TradeType } from '0xtrails'
|
|
328
|
-
* import { useEffect } from 'react'
|
|
329
|
-
* import { useWalletClient, useAccount } from 'wagmi'
|
|
330
|
-
*
|
|
331
|
-
* export const Swap = () => {
|
|
332
|
-
* const { data: walletClient } = useWalletClient()
|
|
333
|
-
* const { address } = useAccount()
|
|
334
|
-
*
|
|
335
|
-
* const { quote, send, isLoadingQuote, quoteError, refetchQuote } = useQuote({
|
|
336
|
-
* walletClient,
|
|
337
|
-
* fromTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
|
|
338
|
-
* fromChainId: 1, // Ethereum
|
|
339
|
-
* toTokenAddress: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // USDC
|
|
340
|
-
* toChainId: 8453, // Base
|
|
341
|
-
* swapAmount: '1000000', // 1 USDC (6 decimals)
|
|
342
|
-
* tradeType: TradeType.EXACT_INPUT,
|
|
343
|
-
* toAddress: address,
|
|
344
|
-
* slippageTolerance: '0.005', // 0.5%
|
|
345
|
-
* onStatusUpdate: (states) => {
|
|
346
|
-
* console.log('Transaction states:', states)
|
|
347
|
-
* }
|
|
348
|
-
* })
|
|
349
|
-
*
|
|
350
|
-
* // Quotes can become stale; refetch every ~30 seconds
|
|
351
|
-
* useEffect(() => {
|
|
352
|
-
* const id = setInterval(() => {
|
|
353
|
-
* refetchQuote?.()
|
|
354
|
-
* }, 30000)
|
|
355
|
-
* return () => clearInterval(id)
|
|
356
|
-
* }, [refetchQuote])
|
|
357
|
-
*
|
|
358
|
-
* const handleSend = async () => {
|
|
359
|
-
* if (!send) return
|
|
360
|
-
*
|
|
361
|
-
* try {
|
|
362
|
-
* const result = await send()
|
|
363
|
-
* console.log('Transaction completed:', result)
|
|
364
|
-
* } catch (error) {
|
|
365
|
-
* console.error('Transaction failed:', error)
|
|
366
|
-
* }
|
|
367
|
-
* }
|
|
368
|
-
*
|
|
369
|
-
* if (isLoadingQuote) return <div>Getting quote...</div>
|
|
370
|
-
* if (quoteError) return <div>Error: {String(quoteError)}</div>
|
|
371
|
-
* if (!quote) return <div>No quote available</div>
|
|
372
|
-
*
|
|
373
|
-
* return (
|
|
374
|
-
* <div>
|
|
375
|
-
* <div>From: {quote.fromAmount} {quote.originToken.symbol}</div>
|
|
376
|
-
* <div>To: {quote.toAmount} {quote.destinationToken.symbol}</div>
|
|
377
|
-
* <button onClick={handleSend}>Send</button>
|
|
378
|
-
* </div>
|
|
379
|
-
* )
|
|
380
|
-
* }
|
|
381
|
-
* ```
|
|
382
|
-
*
|
|
383
|
-
* @param props - Configuration options for the quote
|
|
384
|
-
* @param props.walletClient - The wallet client from wagmi (e.g., from `useWalletClient()`)
|
|
385
|
-
* @param props.fromTokenAddress - The contract address of the token to swap from.
|
|
386
|
-
* @param props.fromChainId - The chain ID of the origin chain
|
|
387
|
-
* @param props.toTokenAddress - The contract address of the token to swap to. Use `zeroAddress` for native tokens
|
|
388
|
-
* @param props.toChainId - The chain ID of the destination chain
|
|
389
|
-
* @param props.swapAmount - The amount to swap, as a string or bigint in the token's smallest unit (wei/smallest unit). For example, 1 USDC (6 decimals) = '1000000'
|
|
390
|
-
* @param props.tradeType - The trade type: `TradeType.EXACT_INPUT` (you specify input amount) or `TradeType.EXACT_OUTPUT` (you specify output amount). Defaults to `EXACT_OUTPUT`
|
|
391
|
-
* @param props.toAddress - The recipient address for the destination token.
|
|
392
|
-
* @param props.slippageTolerance - Slippage tolerance as a decimal string or number (e.g., '0.005' for 0.5%, '0.01' for 1%). Defaults to a reasonable value if not provided
|
|
393
|
-
* @param props.toCalldata - Optional custom calldata for the destination chain. Used for executing arbitrary contract calls (e.g., swap and mint an NFT on destination chain)
|
|
394
|
-
* @param props.onStatusUpdate - Optional callback function that receives transaction state updates during swap execution
|
|
395
|
-
* @param props.swapProvider - Optional swap provider ID to use (auto, lifi, relay, cctp, direct). If not specified, the best available provider will be selected
|
|
396
|
-
* @param props.bridgeProvider - Optional bridge provider ID to use (auto, lifi, relay, cctp, direct). If not specified, the best available provider will be selected
|
|
397
|
-
* @param props.checkoutOnHandlers - Optional event handlers for tracking checkout/transaction lifecycle events
|
|
398
|
-
* @param props.paymasterUrl - Optional paymaster URL for gasless ERC-4337 transactions
|
|
399
|
-
* @param props.selectedFeeOption - Optional fee option selection (e.g., user selects USDC as the fee token instead of ETH)
|
|
400
|
-
* @param props.abortSignal - Optional AbortSignal to cancel the quote request
|
|
401
|
-
* @param props.apiKey - Optional API key override for Trails API access
|
|
402
|
-
* @param props.nodeGatewayEnv - Optional environment override ('prod' | 'dev' | 'local' | 'cors-anywhere')
|
|
403
|
-
* @param props.isSmartWallet - Optional flag to indicate if the wallet is a smart wallet
|
|
404
|
-
*
|
|
405
|
-
* @returns An object containing:
|
|
406
|
-
* - `quote` - The quote object with transaction details, or `null` if not available
|
|
407
|
-
* - `send` - A function to execute the transaction, or `null` if not available. Returns a Promise that resolves to transaction result with receipts
|
|
408
|
-
* - `isLoadingQuote` - Boolean indicating if a quote is currently being fetched
|
|
409
|
-
* - `quoteError` - Any error that occurred while fetching the quote, or `null`
|
|
410
|
-
* - `quoteErrorPrettified` - A user-friendly error message string
|
|
411
|
-
* - `refetchQuote` - Function to manually refetch the quote (useful for refreshing stale quotes)
|
|
412
|
-
* - `abort` - Function to abort any in-flight quote requests
|
|
413
|
-
*
|
|
414
|
-
* @remarks
|
|
415
|
-
* - The hook uses React Query internally, so quotes are cached and automatically refetched based on query key changes
|
|
416
|
-
* - Quotes are considered stale after 30 seconds. You may want to periodically call `refetchQuote()` to keep quotes fresh
|
|
417
|
-
* - The hook will not fetch a quote until all required parameters are provided (walletClient, token addresses, chain IDs, swap amount, recipient)
|
|
418
|
-
* - For native tokens (ETH, MATIC, etc.), use the zero address (`0x0000000000000000000000000000000000000000`)
|
|
419
|
-
*
|
|
420
|
-
* @see {@link TradeType} for available trade types
|
|
421
|
-
* @see {@link Quote} for the quote object structure
|
|
422
|
-
* @see {@link SwapReturn} for the swap result structure
|
|
423
|
-
*
|
|
424
|
-
* For more information go to {@link https://docs.trails.build/sdk/hooks#usequote-hook}
|
|
425
|
-
*/
|
|
426
|
-
export function useQuote({
|
|
427
|
-
walletClient,
|
|
428
|
-
fromTokenAddress,
|
|
429
|
-
fromChainId,
|
|
430
|
-
toTokenAddress,
|
|
431
|
-
toChainId,
|
|
432
|
-
swapAmount,
|
|
433
|
-
tradeType,
|
|
434
|
-
toAddress,
|
|
435
|
-
toRecipient,
|
|
436
|
-
toApprove,
|
|
437
|
-
toCalldata,
|
|
438
|
-
slippageTolerance,
|
|
439
|
-
onStatusUpdate,
|
|
440
|
-
checkoutOnHandlers,
|
|
441
|
-
swapProvider,
|
|
442
|
-
bridgeProvider,
|
|
443
|
-
swapProviderFallback,
|
|
444
|
-
bridgeProviderFallback,
|
|
445
|
-
paymasterUrl,
|
|
446
|
-
selectedFeeOption,
|
|
447
|
-
nodeGatewayEnv,
|
|
448
|
-
abortSignal: externalAbortSignal,
|
|
449
|
-
apiKey,
|
|
450
|
-
isSmartWallet,
|
|
451
|
-
fundMethod,
|
|
452
|
-
onramp,
|
|
453
|
-
mode,
|
|
454
|
-
}: Partial<UseQuoteProps> = {}): UseQuoteReturn {
|
|
455
|
-
// Handle deprecated toRecipient prop - prefer toAddress
|
|
456
|
-
if (toRecipient && !toAddress) {
|
|
457
|
-
logger.console.warn(
|
|
458
|
-
"[trails-sdk] [useQuote] Warning: 'toRecipient' is deprecated, use 'toAddress' instead",
|
|
459
|
-
)
|
|
460
|
-
}
|
|
461
|
-
const effectiveToAddress = toAddress ?? toRecipient
|
|
462
|
-
|
|
463
|
-
// Generate a unique session ID for this hook instance to ensure fresh quotes on mount
|
|
464
|
-
// This forces React Query to treat this as a new query even if parameters are identical
|
|
465
|
-
const quoteSessionId = useMemo(() => Date.now(), [])
|
|
466
|
-
|
|
467
|
-
// Set node gateway environment override for this quote session
|
|
468
|
-
if (nodeGatewayEnv) {
|
|
469
|
-
;(globalThis as any).__testNodeGatewayEnv = nodeGatewayEnv
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
// Create abort controller for this hook instance
|
|
473
|
-
const abortControllerRef = useRef<AbortController>(new AbortController())
|
|
474
|
-
|
|
475
|
-
// Combine external abort signal with internal abort controller
|
|
476
|
-
const combinedAbortSignal = externalAbortSignal
|
|
477
|
-
? (() => {
|
|
478
|
-
const controller = new AbortController()
|
|
479
|
-
|
|
480
|
-
// Listen to external abort signal
|
|
481
|
-
externalAbortSignal.addEventListener("abort", () => {
|
|
482
|
-
controller.abort()
|
|
483
|
-
abortControllerRef.current?.abort()
|
|
484
|
-
})
|
|
485
|
-
|
|
486
|
-
// Listen to internal abort controller
|
|
487
|
-
abortControllerRef.current?.signal.addEventListener("abort", () => {
|
|
488
|
-
controller.abort()
|
|
489
|
-
})
|
|
490
|
-
|
|
491
|
-
return controller.signal
|
|
492
|
-
})()
|
|
493
|
-
: abortControllerRef.current.signal
|
|
494
|
-
|
|
495
|
-
// Debounce swapAmount to prevent excessive API calls while user is typing
|
|
496
|
-
// Skip debounce for onramp-meld to get instant quotes after Meld quote is received
|
|
497
|
-
const [debouncedSwapAmount, setDebouncedSwapAmount] = useState(swapAmount)
|
|
498
|
-
useEffect(() => {
|
|
499
|
-
// No debounce for onramp-meld - instant quote fetching
|
|
500
|
-
if (fundMethod === "onramp-meld") {
|
|
501
|
-
setDebouncedSwapAmount(swapAmount)
|
|
502
|
-
return
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
const timer = setTimeout(() => {
|
|
506
|
-
setDebouncedSwapAmount(swapAmount)
|
|
507
|
-
}, 300)
|
|
508
|
-
return () => clearTimeout(timer)
|
|
509
|
-
}, [swapAmount, fundMethod])
|
|
510
|
-
|
|
511
|
-
const {
|
|
512
|
-
trailsApiKey,
|
|
513
|
-
trailsApiUrl,
|
|
514
|
-
sequenceIndexerUrl,
|
|
515
|
-
sequenceMetadataUrl,
|
|
516
|
-
} = useTrails()
|
|
517
|
-
// trailsApiKey is the same as sequenceProjectAccessKey
|
|
518
|
-
const sequenceProjectAccessKey = trailsApiKey
|
|
519
|
-
|
|
520
|
-
// Get wallet ID from wagmi
|
|
521
|
-
const { connector } = useAccount()
|
|
522
|
-
const walletId = connector?.id
|
|
523
|
-
|
|
524
|
-
const trailsClient = useTrailsClient({
|
|
525
|
-
apiKey: trailsApiKey,
|
|
526
|
-
hostname: trailsApiUrl,
|
|
527
|
-
})
|
|
528
|
-
const indexerGatewayClient = useIndexerGatewayClient()
|
|
529
|
-
|
|
530
|
-
// Get RPC clients for known chainIds using hooks (reads from TrailsProvider context)
|
|
531
|
-
const originPublicClient = useChainRpcClient(fromChainId ?? undefined)
|
|
532
|
-
const destinationPublicClient = useChainRpcClient(toChainId ?? undefined)
|
|
533
|
-
|
|
534
|
-
const { supportedTokens } = useSupportedTokens({
|
|
535
|
-
disabled: !!toTokenAddress || !!fromTokenAddress,
|
|
536
|
-
})
|
|
537
|
-
|
|
538
|
-
// Get mutation hooks for passing to prepareSend
|
|
539
|
-
const commitIntentMutation = useCommitIntent()
|
|
540
|
-
const executeIntentMutation = useExecuteIntent()
|
|
541
|
-
|
|
542
|
-
// Auto-detect swap/bridge provider for etherlink chains
|
|
543
|
-
const effectiveSwapProvider =
|
|
544
|
-
!swapProvider &&
|
|
545
|
-
(fromChainId === etherlink.id || toChainId === etherlink.id)
|
|
546
|
-
? ("lifi" as RouteProvider)
|
|
547
|
-
: (swapProvider ?? null)
|
|
548
|
-
|
|
549
|
-
const effectiveBridgeProvider =
|
|
550
|
-
!bridgeProvider &&
|
|
551
|
-
(fromChainId === etherlink.id || toChainId === etherlink.id)
|
|
552
|
-
? ("lifi" as RouteProvider)
|
|
553
|
-
: (bridgeProvider ?? null)
|
|
554
|
-
|
|
555
|
-
// - If address IS a contract: cache untill refresh
|
|
556
|
-
// - If address is NOT a contract: don't cache, keep checking
|
|
557
|
-
|
|
558
|
-
const queryClient = useQueryClient()
|
|
559
|
-
|
|
560
|
-
const senderAddress = walletClient?.account?.address?.toLowerCase()
|
|
561
|
-
const recipientAddress = effectiveToAddress?.toLowerCase()
|
|
562
|
-
|
|
563
|
-
// Check if sender and recipient are the same address (case-insensitive)
|
|
564
|
-
const isSameAddress =
|
|
565
|
-
senderAddress && recipientAddress && senderAddress === recipientAddress
|
|
566
|
-
// Check if origin and destination chains are the same
|
|
567
|
-
const isSameChain = fromChainId && toChainId && fromChainId === toChainId
|
|
568
|
-
|
|
569
|
-
// Helper to check if we already have a confirmed contract result cached
|
|
570
|
-
const hasCachedContractResult = (
|
|
571
|
-
address: string | undefined,
|
|
572
|
-
chainId: number | undefined,
|
|
573
|
-
) => {
|
|
574
|
-
if (!address || !chainId) return false
|
|
575
|
-
const cached = queryClient.getQueryData(["isContract", address, chainId])
|
|
576
|
-
return cached === true // Only skip if we've confirmed it's a contract
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
// Query for sender on origin chain
|
|
580
|
-
const { data: senderOnOriginResult } = useQuery({
|
|
581
|
-
queryKey: ["isContract", senderAddress, fromChainId],
|
|
582
|
-
queryFn: async () => {
|
|
583
|
-
if (!senderAddress || !fromChainId) return null
|
|
584
|
-
return getIsContract(senderAddress as `0x${string}`, fromChainId)
|
|
585
|
-
},
|
|
586
|
-
enabled:
|
|
587
|
-
!!senderAddress &&
|
|
588
|
-
!!fromChainId &&
|
|
589
|
-
!hasCachedContractResult(senderAddress, fromChainId),
|
|
590
|
-
staleTime: (query) => (query.state.data === true ? Infinity : 0),
|
|
591
|
-
gcTime: HOUR_MS,
|
|
592
|
-
})
|
|
593
|
-
|
|
594
|
-
// Query for sender on destination chain - skip if same chain as origin (reuse origin result)
|
|
595
|
-
const { data: senderOnDestinationResult } = useQuery({
|
|
596
|
-
queryKey: ["isContract", senderAddress, toChainId],
|
|
597
|
-
queryFn: async () => {
|
|
598
|
-
if (!senderAddress || !toChainId) return null
|
|
599
|
-
return getIsContract(senderAddress as `0x${string}`, toChainId)
|
|
600
|
-
},
|
|
601
|
-
// Skip if same chain OR if we already have a cached contract result
|
|
602
|
-
enabled:
|
|
603
|
-
!!senderAddress &&
|
|
604
|
-
!!toChainId &&
|
|
605
|
-
!isSameChain &&
|
|
606
|
-
!hasCachedContractResult(senderAddress, toChainId),
|
|
607
|
-
staleTime: (query) => (query.state.data === true ? Infinity : 0),
|
|
608
|
-
gcTime: HOUR_MS,
|
|
609
|
-
})
|
|
610
|
-
|
|
611
|
-
// Query for recipient on destination chain - skip if same address as sender (reuse sender result)
|
|
612
|
-
const { data: recipientOnDestinationResult } = useQuery({
|
|
613
|
-
queryKey: ["isContract", recipientAddress, toChainId],
|
|
614
|
-
queryFn: async () => {
|
|
615
|
-
if (!recipientAddress || !toChainId) return null
|
|
616
|
-
return getIsContract(recipientAddress as `0x${string}`, toChainId)
|
|
617
|
-
},
|
|
618
|
-
// Skip if same address as sender OR if we already have a cached contract result
|
|
619
|
-
enabled:
|
|
620
|
-
!!recipientAddress &&
|
|
621
|
-
!!toChainId &&
|
|
622
|
-
!isSameAddress &&
|
|
623
|
-
!hasCachedContractResult(recipientAddress, toChainId),
|
|
624
|
-
staleTime: (query) => (query.state.data === true ? Infinity : 0),
|
|
625
|
-
gcTime: HOUR_MS,
|
|
626
|
-
})
|
|
627
|
-
|
|
628
|
-
// Derive the final values, reusing results where addresses/chains match
|
|
629
|
-
const isSenderContractOnOrigin = senderOnOriginResult ?? null
|
|
630
|
-
const isSenderContractOnDestination = isSameChain
|
|
631
|
-
? senderOnOriginResult // Same chain, reuse origin result
|
|
632
|
-
: (senderOnDestinationResult ?? null)
|
|
633
|
-
const isRecipientContract = isSameAddress
|
|
634
|
-
? isSameChain
|
|
635
|
-
? senderOnOriginResult
|
|
636
|
-
: senderOnDestinationResult // Same address, reuse sender result
|
|
637
|
-
: (recipientOnDestinationResult ?? null)
|
|
638
|
-
|
|
639
|
-
const prepareSendEnabled = Boolean(
|
|
640
|
-
walletClient &&
|
|
641
|
-
trailsClient &&
|
|
642
|
-
fromTokenAddress &&
|
|
643
|
-
toTokenAddress &&
|
|
644
|
-
debouncedSwapAmount &&
|
|
645
|
-
!isZeroOrInvalidAmount(debouncedSwapAmount) &&
|
|
646
|
-
effectiveToAddress &&
|
|
647
|
-
fromChainId &&
|
|
648
|
-
toChainId &&
|
|
649
|
-
indexerGatewayClient,
|
|
650
|
-
)
|
|
651
|
-
|
|
652
|
-
logger.console.log("[trails-sdk] [useQuote] prepareSend enabled check:", {
|
|
653
|
-
enabled: prepareSendEnabled,
|
|
654
|
-
walletClient: !!walletClient,
|
|
655
|
-
trailsClient: !!trailsClient,
|
|
656
|
-
fromTokenAddress: !!fromTokenAddress,
|
|
657
|
-
toTokenAddress: !!toTokenAddress,
|
|
658
|
-
debouncedSwapAmount: !!debouncedSwapAmount,
|
|
659
|
-
isZeroOrInvalid: isZeroOrInvalidAmount(debouncedSwapAmount),
|
|
660
|
-
effectiveToAddress: !!effectiveToAddress,
|
|
661
|
-
fromChainId: !!fromChainId,
|
|
662
|
-
toChainId: !!toChainId,
|
|
663
|
-
indexerGatewayClient: !!indexerGatewayClient,
|
|
664
|
-
})
|
|
665
|
-
|
|
666
|
-
const { data, isFetching, error, refetch } = useQuery({
|
|
667
|
-
queryKey: [
|
|
668
|
-
"prepareSend",
|
|
669
|
-
fromTokenAddress,
|
|
670
|
-
fromChainId,
|
|
671
|
-
toTokenAddress,
|
|
672
|
-
toChainId,
|
|
673
|
-
debouncedSwapAmount?.toString(),
|
|
674
|
-
effectiveToAddress,
|
|
675
|
-
toCalldata,
|
|
676
|
-
tradeType,
|
|
677
|
-
slippageTolerance,
|
|
678
|
-
swapProvider,
|
|
679
|
-
bridgeProvider,
|
|
680
|
-
swapProviderFallback,
|
|
681
|
-
bridgeProviderFallback,
|
|
682
|
-
apiKey,
|
|
683
|
-
isSmartWallet,
|
|
684
|
-
fundMethod,
|
|
685
|
-
quoteSessionId, // Include session ID to force fresh query on mount
|
|
686
|
-
],
|
|
687
|
-
queryFn: async () => {
|
|
688
|
-
try {
|
|
689
|
-
logger.console.log(
|
|
690
|
-
"[trails-sdk] [useQuote] prepareSend queryFn entered",
|
|
691
|
-
)
|
|
692
|
-
|
|
693
|
-
// Reset the abort controller for new queries to ensure fresh state
|
|
694
|
-
if (abortControllerRef.current.signal.aborted) {
|
|
695
|
-
logger.console.log(
|
|
696
|
-
"[trails-sdk] Resetting aborted controller for new query",
|
|
697
|
-
)
|
|
698
|
-
abortControllerRef.current = new AbortController()
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
if (
|
|
702
|
-
!walletClient ||
|
|
703
|
-
!trailsClient ||
|
|
704
|
-
!fromTokenAddress ||
|
|
705
|
-
!toTokenAddress ||
|
|
706
|
-
!debouncedSwapAmount ||
|
|
707
|
-
isZeroOrInvalidAmount(debouncedSwapAmount) ||
|
|
708
|
-
!effectiveToAddress ||
|
|
709
|
-
!fromChainId ||
|
|
710
|
-
!toChainId ||
|
|
711
|
-
!indexerGatewayClient
|
|
712
|
-
) {
|
|
713
|
-
logger.console.log(
|
|
714
|
-
"[trails-sdk] [useQuote] prepareSend queryFn guard failed, returning null",
|
|
715
|
-
)
|
|
716
|
-
return null
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
// Create a 20-second timeout
|
|
720
|
-
const timeoutId = setTimeout(() => {
|
|
721
|
-
logger.console.warn(
|
|
722
|
-
"[trails-sdk] [useQuote] Quote request timed out after 20 seconds",
|
|
723
|
-
)
|
|
724
|
-
abortControllerRef.current.abort()
|
|
725
|
-
}, 20000) // 20 seconds
|
|
726
|
-
|
|
727
|
-
try {
|
|
728
|
-
const originChain = getChainInfo(fromChainId)
|
|
729
|
-
const nativeTokenSymbol = originChain?.nativeCurrency?.symbol ?? ""
|
|
730
|
-
|
|
731
|
-
const balanceResult = await queryClient
|
|
732
|
-
.ensureQueryData(
|
|
733
|
-
balanceQueries.withPrices(
|
|
734
|
-
walletClient.account!.address,
|
|
735
|
-
indexerGatewayClient,
|
|
736
|
-
trailsClient,
|
|
737
|
-
),
|
|
738
|
-
)
|
|
739
|
-
.catch((balanceError: unknown) => {
|
|
740
|
-
if (isNetworkError(balanceError)) {
|
|
741
|
-
logger.console.warn(
|
|
742
|
-
"[trails-sdk] [useQuote] Network error fetching balances, proceeding with quote using zero balance:",
|
|
743
|
-
{
|
|
744
|
-
error: balanceError,
|
|
745
|
-
account: walletClient.account!.address,
|
|
746
|
-
},
|
|
747
|
-
)
|
|
748
|
-
return { balances: [] }
|
|
749
|
-
}
|
|
750
|
-
throw balanceError
|
|
751
|
-
})
|
|
752
|
-
|
|
753
|
-
const balances = balanceResult.balances
|
|
754
|
-
const nativeTokenFromBalances = balances.find(
|
|
755
|
-
(b: any) =>
|
|
756
|
-
b.chainId === fromChainId &&
|
|
757
|
-
(addressEqual(b.contractAddress, zeroAddress) || b.isNativeToken),
|
|
758
|
-
)
|
|
759
|
-
let originNativeTokenPriceUsd = nativeTokenFromBalances?.priceUsd ?? 0
|
|
760
|
-
|
|
761
|
-
// Reuse the price already fetched by balanceQueries.withPrices.
|
|
762
|
-
// Fallback only when native token is missing from the balances payload.
|
|
763
|
-
if (!originNativeTokenPriceUsd && nativeTokenSymbol) {
|
|
764
|
-
const nativePriceResult = await getTokenPrice(trailsClient, {
|
|
765
|
-
tokenSymbol: nativeTokenSymbol,
|
|
766
|
-
tokenAddress: zeroAddress,
|
|
767
|
-
chainId: fromChainId,
|
|
768
|
-
}).catch((error) => {
|
|
769
|
-
logger.console.error(
|
|
770
|
-
"[trails-sdk] [useQuote] Error getting origin native token price:",
|
|
771
|
-
error,
|
|
772
|
-
)
|
|
773
|
-
return null
|
|
774
|
-
})
|
|
775
|
-
originNativeTokenPriceUsd = nativePriceResult?.priceUsd ?? 0
|
|
776
|
-
}
|
|
777
|
-
|
|
778
|
-
if (originNativeTokenPriceUsd) {
|
|
779
|
-
logger.console.log(
|
|
780
|
-
"[trails-sdk] [useQuote] Origin native token price:",
|
|
781
|
-
{
|
|
782
|
-
chainId: fromChainId,
|
|
783
|
-
symbol: nativeTokenSymbol,
|
|
784
|
-
priceUsd: originNativeTokenPriceUsd,
|
|
785
|
-
},
|
|
786
|
-
)
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
const originTokenBalance = balances.find(
|
|
790
|
-
(b: any) =>
|
|
791
|
-
b.chainId === fromChainId &&
|
|
792
|
-
(b.contractAddress?.toLowerCase() ===
|
|
793
|
-
fromTokenAddress.toLowerCase() ||
|
|
794
|
-
(!b.contractAddress && fromTokenAddress === zeroAddress)),
|
|
795
|
-
)
|
|
796
|
-
|
|
797
|
-
const originTokenBalanceAmount = originTokenBalance?.balance ?? "0"
|
|
798
|
-
|
|
799
|
-
// Helper function to fetch decimals on-chain if not found in token list
|
|
800
|
-
const fetchDecimalsOnChain = async (
|
|
801
|
-
tokenAddress: string,
|
|
802
|
-
chainId: number,
|
|
803
|
-
): Promise<number | null> => {
|
|
804
|
-
try {
|
|
805
|
-
// Use the hook-based RPC clients that are already available
|
|
806
|
-
const publicClient =
|
|
807
|
-
chainId === fromChainId
|
|
808
|
-
? originPublicClient
|
|
809
|
-
: chainId === toChainId
|
|
810
|
-
? destinationPublicClient
|
|
811
|
-
: null
|
|
812
|
-
|
|
813
|
-
if (!publicClient) {
|
|
814
|
-
logger.console.warn(
|
|
815
|
-
`[trails-sdk] No RPC client available for chain ${chainId}`,
|
|
816
|
-
)
|
|
817
|
-
return null
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
// For native tokens, return 18 decimals
|
|
821
|
-
if (addressEqual(tokenAddress, zeroAddress)) {
|
|
822
|
-
const chainInfo = getChainInfo(chainId)
|
|
823
|
-
return chainInfo?.nativeCurrency.decimals ?? 18
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
const decimals = await publicClient.readContract({
|
|
827
|
-
address: tokenAddress as `0x${string}`,
|
|
828
|
-
abi: erc20Abi,
|
|
829
|
-
functionName: "decimals",
|
|
830
|
-
})
|
|
831
|
-
|
|
832
|
-
logger.console.log(
|
|
833
|
-
`[trails-sdk] Fetched decimals on-chain for token ${tokenAddress} on chain ${chainId}: ${decimals}`,
|
|
834
|
-
)
|
|
835
|
-
return decimals
|
|
836
|
-
} catch (error) {
|
|
837
|
-
logger.console.error(
|
|
838
|
-
`[trails-sdk] Error fetching decimals on-chain for token ${tokenAddress} on chain ${chainId}:`,
|
|
839
|
-
error,
|
|
840
|
-
)
|
|
841
|
-
return null
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
const originToken = findSupportedToken(
|
|
846
|
-
supportedTokens,
|
|
847
|
-
fromTokenAddress,
|
|
848
|
-
fromChainId,
|
|
849
|
-
)
|
|
850
|
-
const destinationToken = findSupportedToken(
|
|
851
|
-
supportedTokens,
|
|
852
|
-
toTokenAddress,
|
|
853
|
-
toChainId,
|
|
854
|
-
)
|
|
855
|
-
|
|
856
|
-
let sourceTokenDecimals = originToken?.decimals
|
|
857
|
-
if (!sourceTokenDecimals && fromTokenAddress && fromChainId) {
|
|
858
|
-
logger.console.warn(
|
|
859
|
-
"[trails-sdk] [useQuote] Source token decimals not found in token list, fetching on-chain:",
|
|
860
|
-
{
|
|
861
|
-
originToken,
|
|
862
|
-
fromTokenAddress,
|
|
863
|
-
fromChainId,
|
|
864
|
-
},
|
|
865
|
-
)
|
|
866
|
-
const onChainDecimals = await fetchDecimalsOnChain(
|
|
867
|
-
fromTokenAddress,
|
|
868
|
-
fromChainId,
|
|
869
|
-
)
|
|
870
|
-
if (onChainDecimals !== null) {
|
|
871
|
-
sourceTokenDecimals = onChainDecimals
|
|
872
|
-
}
|
|
873
|
-
}
|
|
874
|
-
if (!sourceTokenDecimals) {
|
|
875
|
-
logger.console.error(
|
|
876
|
-
"[trails-sdk] [useQuote] Source token decimals not found:",
|
|
877
|
-
{
|
|
878
|
-
originToken,
|
|
879
|
-
fromTokenAddress,
|
|
880
|
-
fromChainId,
|
|
881
|
-
},
|
|
882
|
-
)
|
|
883
|
-
throw new Error("Source token decimals not found")
|
|
884
|
-
}
|
|
885
|
-
let destinationTokenDecimals = destinationToken?.decimals
|
|
886
|
-
if (!destinationTokenDecimals && toTokenAddress && toChainId) {
|
|
887
|
-
logger.console.warn(
|
|
888
|
-
"[trails-sdk] Destination token decimals not found in token list, fetching on-chain:",
|
|
889
|
-
{
|
|
890
|
-
destinationToken,
|
|
891
|
-
toTokenAddress,
|
|
892
|
-
toChainId,
|
|
893
|
-
},
|
|
894
|
-
)
|
|
895
|
-
const onChainDecimals = await fetchDecimalsOnChain(
|
|
896
|
-
toTokenAddress,
|
|
897
|
-
toChainId,
|
|
898
|
-
)
|
|
899
|
-
if (onChainDecimals !== null) {
|
|
900
|
-
destinationTokenDecimals = onChainDecimals
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
if (!destinationTokenDecimals) {
|
|
904
|
-
logger.console.error(
|
|
905
|
-
"[trails-sdk] Destination token decimals not found:",
|
|
906
|
-
{
|
|
907
|
-
destinationToken,
|
|
908
|
-
toTokenAddress,
|
|
909
|
-
toChainId,
|
|
910
|
-
},
|
|
911
|
-
)
|
|
912
|
-
throw new Error("Destination token decimals not found")
|
|
913
|
-
}
|
|
914
|
-
const destinationTokenSymbol = destinationToken?.symbol ?? ""
|
|
915
|
-
const originTokenSymbol = originToken?.symbol ?? ""
|
|
916
|
-
|
|
917
|
-
// For onramp, qr-code and exchange fund methods, use a default amount of 100 tokens
|
|
918
|
-
// since the user will deposit from an external wallet/onramp provider (their connected wallet balance may be 0)
|
|
919
|
-
const effectiveOriginTokenBalance =
|
|
920
|
-
fundMethod === "direct-transfer" ||
|
|
921
|
-
fundMethod === "onramp-mesh" ||
|
|
922
|
-
fundMethod === "onramp-meld"
|
|
923
|
-
? parseUnits("100", sourceTokenDecimals).toString()
|
|
924
|
-
: originTokenBalanceAmount
|
|
925
|
-
|
|
926
|
-
const options: PrepareSendOptions = {
|
|
927
|
-
queryClient,
|
|
928
|
-
account: walletClient.account!,
|
|
929
|
-
originTokenAddress: fromTokenAddress,
|
|
930
|
-
originChainId: fromChainId,
|
|
931
|
-
originTokenBalance: effectiveOriginTokenBalance,
|
|
932
|
-
destinationChainId: toChainId,
|
|
933
|
-
recipient: effectiveToAddress,
|
|
934
|
-
destinationApproveAddress: toApprove ?? undefined,
|
|
935
|
-
destinationTokenAddress: toTokenAddress,
|
|
936
|
-
swapAmount: debouncedSwapAmount.toString(),
|
|
937
|
-
tradeType: tradeType ?? TradeType.EXACT_OUTPUT,
|
|
938
|
-
originTokenSymbol: originTokenSymbol,
|
|
939
|
-
destinationTokenSymbol: destinationTokenSymbol,
|
|
940
|
-
destinationCalldata: toCalldata as string,
|
|
941
|
-
client: walletClient,
|
|
942
|
-
trailsClient,
|
|
943
|
-
sourceTokenDecimals,
|
|
944
|
-
destinationTokenDecimals,
|
|
945
|
-
onTransactionStateChange: onStatusUpdate ?? (() => {}),
|
|
946
|
-
slippageTolerance: slippageTolerance?.toString(),
|
|
947
|
-
swapProvider: effectiveSwapProvider,
|
|
948
|
-
bridgeProvider: effectiveBridgeProvider,
|
|
949
|
-
swapProviderFallback,
|
|
950
|
-
bridgeProviderFallback,
|
|
951
|
-
paymasterUrl: paymasterUrl,
|
|
952
|
-
selectedFeeOption: selectedFeeOption ?? null,
|
|
953
|
-
abortSignal: combinedAbortSignal,
|
|
954
|
-
originNativeTokenPriceUsd: originNativeTokenPriceUsd,
|
|
955
|
-
commitIntentFn: (intent) =>
|
|
956
|
-
commitIntentMutation.mutateAsync(intent),
|
|
957
|
-
executeIntentFn: executeIntentMutation.mutateAsync,
|
|
958
|
-
checkoutOnHandlers,
|
|
959
|
-
sequenceIndexerUrl,
|
|
960
|
-
sequenceProjectAccessKey,
|
|
961
|
-
originPublicClient: originPublicClient ?? undefined,
|
|
962
|
-
destinationPublicClient: destinationPublicClient ?? undefined,
|
|
963
|
-
isSmartWallet: isSmartWallet ?? undefined,
|
|
964
|
-
isSenderContractOnOrigin: isSenderContractOnOrigin ?? undefined,
|
|
965
|
-
trailsApiKey,
|
|
966
|
-
trailsApiUrl,
|
|
967
|
-
sequenceMetadataUrl,
|
|
968
|
-
fundMethod: fundMethod ?? "wallet",
|
|
969
|
-
onramp: onramp ?? undefined,
|
|
970
|
-
mode: mode ?? undefined,
|
|
971
|
-
walletId: walletId ?? undefined,
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
logger.console.log("[trails-sdk] options", options)
|
|
975
|
-
|
|
976
|
-
const {
|
|
977
|
-
quote: prepareSendQuote,
|
|
978
|
-
send: prepareSendSend,
|
|
979
|
-
feeOptions: prepareSendFeeOptions,
|
|
980
|
-
} = await prepareSend(options)
|
|
981
|
-
|
|
982
|
-
const quote: Quote = {
|
|
983
|
-
// Backward compatible fields
|
|
984
|
-
fromAmount: prepareSendQuote.originAmount,
|
|
985
|
-
toAmount: prepareSendQuote.destinationAmount,
|
|
986
|
-
fromAmountMin: prepareSendQuote.originAmountMin,
|
|
987
|
-
toAmountMin: prepareSendQuote.destinationAmountMin,
|
|
988
|
-
fromAmountUsdDisplay: prepareSendQuote.originAmountUsdDisplay ?? "",
|
|
989
|
-
toAmountUsdDisplay:
|
|
990
|
-
prepareSendQuote.destinationAmountUsdDisplay ?? "",
|
|
991
|
-
toAmountMinUsdDisplay:
|
|
992
|
-
prepareSendQuote.destinationAmountMinUsdDisplay ?? "",
|
|
993
|
-
// PrepareSendQuote compatible fields
|
|
994
|
-
originAmount: prepareSendQuote.originAmount,
|
|
995
|
-
originAmountMin: prepareSendQuote.originAmountMin,
|
|
996
|
-
destinationAmount: prepareSendQuote.destinationAmount,
|
|
997
|
-
destinationAmountMin: prepareSendQuote.destinationAmountMin,
|
|
998
|
-
originAmountUsdDisplay:
|
|
999
|
-
prepareSendQuote.originAmountUsdDisplay ?? "",
|
|
1000
|
-
destinationAmountUsdDisplay:
|
|
1001
|
-
prepareSendQuote.destinationAmountUsdDisplay ?? "",
|
|
1002
|
-
originAmountDisplay: prepareSendQuote.originAmountDisplay ?? "",
|
|
1003
|
-
destinationAmountDisplay:
|
|
1004
|
-
prepareSendQuote.destinationAmountDisplay ?? "",
|
|
1005
|
-
originAmountMinDisplay:
|
|
1006
|
-
prepareSendQuote.originAmountMinDisplay ?? "",
|
|
1007
|
-
originAmountMinUsdFormatted:
|
|
1008
|
-
prepareSendQuote.originAmountMinUsdFormatted ?? "",
|
|
1009
|
-
originAmountMinUsdDisplay:
|
|
1010
|
-
prepareSendQuote.originAmountMinUsdDisplay ?? "",
|
|
1011
|
-
destinationAmountMinDisplay:
|
|
1012
|
-
prepareSendQuote.destinationAmountMinDisplay ?? "",
|
|
1013
|
-
destinationAmountMinUsdFormatted:
|
|
1014
|
-
prepareSendQuote.destinationAmountMinUsdFormatted ?? "",
|
|
1015
|
-
destinationAmountMinUsdDisplay:
|
|
1016
|
-
prepareSendQuote.destinationAmountMinUsdDisplay ?? "",
|
|
1017
|
-
originAmountUsdFormatted:
|
|
1018
|
-
prepareSendQuote.originAmountUsdFormatted ?? "",
|
|
1019
|
-
destinationAmountUsdFormatted:
|
|
1020
|
-
prepareSendQuote.destinationAmountUsdFormatted ?? "",
|
|
1021
|
-
// Locale display fields
|
|
1022
|
-
originAmountFormattedLocale:
|
|
1023
|
-
prepareSendQuote.originAmountFormattedLocale,
|
|
1024
|
-
originAmountUsdLocaleDisplay:
|
|
1025
|
-
prepareSendQuote.originAmountUsdLocaleDisplay,
|
|
1026
|
-
destinationAmountFormattedLocale:
|
|
1027
|
-
prepareSendQuote.destinationAmountFormattedLocale,
|
|
1028
|
-
destinationAmountUsdLocaleDisplay:
|
|
1029
|
-
prepareSendQuote.destinationAmountUsdLocaleDisplay,
|
|
1030
|
-
originAmountUsd: prepareSendQuote.originAmountUsd,
|
|
1031
|
-
fromAmountUsd: prepareSendQuote.fromAmountUsd,
|
|
1032
|
-
// Common fields
|
|
1033
|
-
originToken: prepareSendQuote.originToken,
|
|
1034
|
-
destinationToken: prepareSendQuote.destinationToken,
|
|
1035
|
-
originChain: prepareSendQuote.originChain,
|
|
1036
|
-
destinationChain: prepareSendQuote.destinationChain,
|
|
1037
|
-
fees: prepareSendQuote.fees,
|
|
1038
|
-
priceImpact: prepareSendQuote.priceImpact,
|
|
1039
|
-
priceImpactUsd: prepareSendQuote.priceImpactUsd ?? null,
|
|
1040
|
-
priceImpactUsdDisplay: prepareSendQuote.priceImpactUsdDisplay ?? "",
|
|
1041
|
-
priceImpactUsdLocaleDisplay:
|
|
1042
|
-
prepareSendQuote.priceImpactUsdLocaleDisplay,
|
|
1043
|
-
completionEstimateSeconds:
|
|
1044
|
-
prepareSendQuote.completionEstimateSeconds,
|
|
1045
|
-
completionEstimateDisplay:
|
|
1046
|
-
prepareSendQuote.completionEstimateDisplay ?? "",
|
|
1047
|
-
slippageTolerance: prepareSendQuote.slippageTolerance,
|
|
1048
|
-
transactionStates: prepareSendQuote.transactionStates ?? [],
|
|
1049
|
-
originTokenRate: prepareSendQuote.originTokenRate ?? "",
|
|
1050
|
-
destinationTokenRate: prepareSendQuote.destinationTokenRate ?? "",
|
|
1051
|
-
originTokenPriceUsd: prepareSendQuote.originTokenPriceUsd ?? 0,
|
|
1052
|
-
destinationTokenPriceUsd:
|
|
1053
|
-
prepareSendQuote.destinationTokenPriceUsd ?? 0,
|
|
1054
|
-
routeProviders: prepareSendQuote.routeProviders ?? [],
|
|
1055
|
-
gasCostUsd: prepareSendQuote.gasCostUsd ?? null,
|
|
1056
|
-
gasCostUsdDisplay: prepareSendQuote.gasCostUsdDisplay ?? "",
|
|
1057
|
-
gasCost: prepareSendQuote.gasCost ?? "",
|
|
1058
|
-
gasCostFormatted: prepareSendQuote.gasCostFormatted ?? "",
|
|
1059
|
-
totalFeesUsd: prepareSendQuote.totalFeesUsd ?? null,
|
|
1060
|
-
totalFeesUsdDisplay: prepareSendQuote.totalFeesUsdDisplay ?? "",
|
|
1061
|
-
totalGasUsd: prepareSendQuote.totalGasUsd ?? null,
|
|
1062
|
-
totalGasUsdDisplay: prepareSendQuote.totalGasUsdDisplay ?? "",
|
|
1063
|
-
intentId: prepareSendQuote.intentId ?? null,
|
|
1064
|
-
originAmountFormatted: prepareSendQuote.originAmountFormatted ?? "",
|
|
1065
|
-
destinationAmountFormatted:
|
|
1066
|
-
prepareSendQuote.destinationAmountFormatted ?? "",
|
|
1067
|
-
originDepositAddress: prepareSendQuote.originDepositAddress ?? "",
|
|
1068
|
-
destinationDepositAddress:
|
|
1069
|
-
prepareSendQuote.destinationDepositAddress ?? "",
|
|
1070
|
-
destinationAddress: prepareSendQuote.destinationAddress ?? "",
|
|
1071
|
-
destinationApproveAddress:
|
|
1072
|
-
prepareSendQuote.destinationApproveAddress ?? "",
|
|
1073
|
-
destinationCalldata: prepareSendQuote.destinationCalldata ?? "",
|
|
1074
|
-
intentProtocol: prepareSendQuote.intentProtocol,
|
|
1075
|
-
// Fee breakdown fields
|
|
1076
|
-
trailsFeeBreakdown: prepareSendQuote.trailsFeeBreakdown ?? null,
|
|
1077
|
-
originGasUsd: prepareSendQuote.originGasUsd ?? null,
|
|
1078
|
-
originGasUsdDisplay: prepareSendQuote.originGasUsdDisplay ?? "",
|
|
1079
|
-
destinationGasUsd: prepareSendQuote.destinationGasUsd ?? null,
|
|
1080
|
-
destinationGasUsdDisplay:
|
|
1081
|
-
prepareSendQuote.destinationGasUsdDisplay ?? "",
|
|
1082
|
-
providerFeeUsd: prepareSendQuote.providerFeeUsd ?? null,
|
|
1083
|
-
providerFeeUsdDisplay: prepareSendQuote.providerFeeUsdDisplay ?? "",
|
|
1084
|
-
trailsFeeUsd: prepareSendQuote.trailsFeeUsd ?? null,
|
|
1085
|
-
trailsFeeUsdDisplay: prepareSendQuote.trailsFeeUsdDisplay ?? "",
|
|
1086
|
-
totalProviderFeesUsd: prepareSendQuote.totalProviderFeesUsd ?? null,
|
|
1087
|
-
totalProviderFeesUsdDisplay:
|
|
1088
|
-
prepareSendQuote.totalProviderFeesUsdDisplay ?? "",
|
|
1089
|
-
// Locale display fields for fees
|
|
1090
|
-
totalGasUsdLocaleDisplay: prepareSendQuote.totalGasUsdLocaleDisplay,
|
|
1091
|
-
originGasUsdLocaleDisplay:
|
|
1092
|
-
prepareSendQuote.originGasUsdLocaleDisplay,
|
|
1093
|
-
destinationGasUsdLocaleDisplay:
|
|
1094
|
-
prepareSendQuote.destinationGasUsdLocaleDisplay,
|
|
1095
|
-
totalProviderFeesUsdLocaleDisplay:
|
|
1096
|
-
prepareSendQuote.totalProviderFeesUsdLocaleDisplay,
|
|
1097
|
-
providerFeeUsdLocaleDisplay:
|
|
1098
|
-
prepareSendQuote.providerFeeUsdLocaleDisplay,
|
|
1099
|
-
trailsFeeUsdLocaleDisplay:
|
|
1100
|
-
prepareSendQuote.trailsFeeUsdLocaleDisplay,
|
|
1101
|
-
noSufficientBalance: prepareSendQuote.noSufficientBalance ?? false,
|
|
1102
|
-
expiresAt: prepareSendQuote.expiresAt ?? null,
|
|
1103
|
-
priceImpactDetails: prepareSendQuote.priceImpactDetails ?? null,
|
|
1104
|
-
// Passthrough fields for UI switching
|
|
1105
|
-
passthroughEligible: prepareSendQuote.passthroughEligible,
|
|
1106
|
-
passthroughTransactionStates:
|
|
1107
|
-
prepareSendQuote.passthroughTransactionStates,
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
const sendTransaction = async (
|
|
1111
|
-
options?: SendOptions,
|
|
1112
|
-
): Promise<SwapReturn> => {
|
|
1113
|
-
// Use fee option from send() call if provided, otherwise fall back to prop value
|
|
1114
|
-
const effectiveFeeOption =
|
|
1115
|
-
options?.selectedFeeOption !== undefined
|
|
1116
|
-
? options.selectedFeeOption
|
|
1117
|
-
: (selectedFeeOption ?? null)
|
|
1118
|
-
|
|
1119
|
-
const {
|
|
1120
|
-
depositUserTxnReceipt,
|
|
1121
|
-
destinationIntentTransaction,
|
|
1122
|
-
totalCompletionSeconds,
|
|
1123
|
-
} = await prepareSendSend({
|
|
1124
|
-
selectedFeeOption: effectiveFeeOption,
|
|
1125
|
-
onOriginSend: options?.onOriginSend,
|
|
1126
|
-
depositTransactionHash: options?.depositTransactionHash,
|
|
1127
|
-
skipCommit: options?.skipCommit,
|
|
1128
|
-
})
|
|
1129
|
-
|
|
1130
|
-
return {
|
|
1131
|
-
originTransaction: {
|
|
1132
|
-
transactionHash: depositUserTxnReceipt?.transactionHash,
|
|
1133
|
-
explorerUrl: getExplorerUrl({
|
|
1134
|
-
txHash: depositUserTxnReceipt?.transactionHash as string,
|
|
1135
|
-
chainId: fromChainId,
|
|
1136
|
-
}),
|
|
1137
|
-
receipt: depositUserTxnReceipt,
|
|
1138
|
-
},
|
|
1139
|
-
destinationTransaction: {
|
|
1140
|
-
transactionHash: destinationIntentTransaction?.txnHash,
|
|
1141
|
-
explorerUrl: getExplorerUrl({
|
|
1142
|
-
txHash: destinationIntentTransaction?.txnHash as string,
|
|
1143
|
-
chainId: toChainId,
|
|
1144
|
-
}),
|
|
1145
|
-
receipt: destinationIntentTransaction,
|
|
1146
|
-
},
|
|
1147
|
-
totalCompletionSeconds,
|
|
1148
|
-
}
|
|
1149
|
-
}
|
|
1150
|
-
|
|
1151
|
-
// Clear the timeout on successful completion
|
|
1152
|
-
clearTimeout(timeoutId)
|
|
1153
|
-
|
|
1154
|
-
return {
|
|
1155
|
-
quote,
|
|
1156
|
-
send: sendTransaction,
|
|
1157
|
-
feeOptions: prepareSendFeeOptions?.feeOptions ?? [],
|
|
1158
|
-
}
|
|
1159
|
-
} finally {
|
|
1160
|
-
// Always clear the timeout
|
|
1161
|
-
clearTimeout(timeoutId)
|
|
1162
|
-
}
|
|
1163
|
-
} catch (error) {
|
|
1164
|
-
const isAbortError =
|
|
1165
|
-
error instanceof Error && error.name === "AbortError"
|
|
1166
|
-
|
|
1167
|
-
// Check if this was aborted due to timeout
|
|
1168
|
-
if (isAbortError || abortControllerRef.current.signal.aborted) {
|
|
1169
|
-
logger.console.error(
|
|
1170
|
-
"[trails-sdk] [useQuote] Quote request timed out:",
|
|
1171
|
-
error,
|
|
1172
|
-
)
|
|
1173
|
-
throw new Error("No route available")
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
|
-
logger.console.error(
|
|
1177
|
-
"[trails-sdk] [useQuote] Error getting quote:",
|
|
1178
|
-
error,
|
|
1179
|
-
)
|
|
1180
|
-
throw new Error(getFullErrorMessage(error))
|
|
1181
|
-
}
|
|
1182
|
-
},
|
|
1183
|
-
// Prevent unnecessary refetching
|
|
1184
|
-
enabled: prepareSendEnabled,
|
|
1185
|
-
staleTime: 0, // Always refetch when returning to a previously-queried amount
|
|
1186
|
-
refetchOnWindowFocus: false, // Don't refetch when window regains focus
|
|
1187
|
-
refetchOnMount: "always", // Always refetch on component remount to ensure fresh quote
|
|
1188
|
-
refetchInterval: false, // Disable automatic polling
|
|
1189
|
-
retry: false, // Disable automatic retries - only make 1 request
|
|
1190
|
-
refetchOnReconnect: true, // Refetch when network reconnects
|
|
1191
|
-
})
|
|
1192
|
-
|
|
1193
|
-
const sendFn = data?.send || null
|
|
1194
|
-
|
|
1195
|
-
// Create deprecated swap wrapper
|
|
1196
|
-
const swapFn = sendFn
|
|
1197
|
-
? async (options?: SendOptions) => {
|
|
1198
|
-
logger.console.warn(
|
|
1199
|
-
"[trails-sdk] [useQuote] Warning: 'swap' is deprecated, use 'send' instead",
|
|
1200
|
-
)
|
|
1201
|
-
return sendFn(options)
|
|
1202
|
-
}
|
|
1203
|
-
: null
|
|
1204
|
-
|
|
1205
|
-
return {
|
|
1206
|
-
quote: data?.quote || null,
|
|
1207
|
-
send: sendFn,
|
|
1208
|
-
swap: swapFn,
|
|
1209
|
-
isLoadingQuote: isFetching,
|
|
1210
|
-
quoteError: error,
|
|
1211
|
-
quoteErrorPrettified: getPrettifiedErrorMessage(error),
|
|
1212
|
-
refetchQuote: async () => {
|
|
1213
|
-
await refetch()
|
|
1214
|
-
},
|
|
1215
|
-
abort: () => {
|
|
1216
|
-
logger.console.log("[trails-sdk] useQuote abort() called")
|
|
1217
|
-
logger.console.log(
|
|
1218
|
-
"[trails-sdk] Active operations before abort:",
|
|
1219
|
-
abortControllerRegistry.getAll(),
|
|
1220
|
-
)
|
|
1221
|
-
|
|
1222
|
-
// Abort the internal abort controller
|
|
1223
|
-
abortControllerRef.current.abort()
|
|
1224
|
-
|
|
1225
|
-
// Also abort all active polling operations in prepareSend
|
|
1226
|
-
abortControllerRegistry.abortAll()
|
|
1227
|
-
|
|
1228
|
-
logger.console.log(
|
|
1229
|
-
"[trails-sdk] Abort completed, active operations:",
|
|
1230
|
-
abortControllerRegistry.getAll(),
|
|
1231
|
-
)
|
|
1232
|
-
},
|
|
1233
|
-
feeOptions: data?.feeOptions || [],
|
|
1234
|
-
// Contract detection results
|
|
1235
|
-
isRecipientContract: isRecipientContract ?? null,
|
|
1236
|
-
isSenderContractOnOrigin: isSenderContractOnOrigin ?? null,
|
|
1237
|
-
isSenderContractOnDestination: isSenderContractOnDestination ?? null,
|
|
1238
|
-
}
|
|
1239
|
-
}
|