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