@relayprotocol/relay-kit-ui 11.0.2 → 11.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/_cjs/src/components/common/TokenSelector/PaymentMethod.js.map +1 -1
  2. package/_cjs/src/components/common/TokenSelector/TokenSelector.js.map +1 -1
  3. package/_cjs/src/components/common/TransactionModal/TransactionModalRenderer.js +6 -0
  4. package/_cjs/src/components/common/TransactionModal/TransactionModalRenderer.js.map +1 -1
  5. package/_cjs/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.js.map +1 -1
  6. package/_cjs/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
  7. package/_cjs/src/components/widgets/SwapWidget/index.js +0 -2
  8. package/_cjs/src/components/widgets/SwapWidget/index.js.map +1 -1
  9. package/_cjs/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
  10. package/_cjs/src/components/widgets/WidgetErrorWell.js +0 -1
  11. package/_cjs/src/components/widgets/WidgetErrorWell.js.map +1 -1
  12. package/_cjs/src/constants/depositAddresses.js +2 -1
  13. package/_cjs/src/constants/depositAddresses.js.map +1 -1
  14. package/_cjs/src/constants/walletCompatibility.js +2 -1
  15. package/_cjs/src/constants/walletCompatibility.js.map +1 -1
  16. package/_cjs/src/utils/address.js +4 -0
  17. package/_cjs/src/utils/address.js.map +1 -1
  18. package/_cjs/src/utils/relayTransaction.js +4 -3
  19. package/_cjs/src/utils/relayTransaction.js.map +1 -1
  20. package/_cjs/src/utils/solana.js +1 -1
  21. package/_cjs/src/utils/solana.js.map +1 -1
  22. package/_cjs/src/utils/xrp.js +46 -0
  23. package/_cjs/src/utils/xrp.js.map +1 -0
  24. package/_cjs/src/version.js +1 -1
  25. package/_cjs/src/version.js.map +1 -1
  26. package/_cjs/tsconfig.build.tsbuildinfo +1 -1
  27. package/_esm/src/components/common/TokenSelector/PaymentMethod.js.map +1 -1
  28. package/_esm/src/components/common/TokenSelector/TokenSelector.js.map +1 -1
  29. package/_esm/src/components/common/TransactionModal/TransactionModalRenderer.js +8 -0
  30. package/_esm/src/components/common/TransactionModal/TransactionModalRenderer.js.map +1 -1
  31. package/_esm/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.js.map +1 -1
  32. package/_esm/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
  33. package/_esm/src/components/widgets/SwapWidget/index.js +1 -3
  34. package/_esm/src/components/widgets/SwapWidget/index.js.map +1 -1
  35. package/_esm/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
  36. package/_esm/src/components/widgets/WidgetErrorWell.js +1 -2
  37. package/_esm/src/components/widgets/WidgetErrorWell.js.map +1 -1
  38. package/_esm/src/constants/depositAddresses.js +2 -1
  39. package/_esm/src/constants/depositAddresses.js.map +1 -1
  40. package/_esm/src/constants/walletCompatibility.js +2 -1
  41. package/_esm/src/constants/walletCompatibility.js.map +1 -1
  42. package/_esm/src/utils/address.js +4 -0
  43. package/_esm/src/utils/address.js.map +1 -1
  44. package/_esm/src/utils/relayTransaction.js +11 -3
  45. package/_esm/src/utils/relayTransaction.js.map +1 -1
  46. package/_esm/src/utils/solana.js +1 -1
  47. package/_esm/src/utils/solana.js.map +1 -1
  48. package/_esm/src/utils/xrp.js +55 -0
  49. package/_esm/src/utils/xrp.js.map +1 -0
  50. package/_esm/src/version.js +1 -1
  51. package/_esm/src/version.js.map +1 -1
  52. package/_esm/tsconfig.build.tsbuildinfo +1 -1
  53. package/_types/src/components/common/TokenSelector/PaymentMethod.d.ts +1 -1
  54. package/_types/src/components/common/TokenSelector/PaymentMethod.d.ts.map +1 -1
  55. package/_types/src/components/common/TokenSelector/TokenSelector.d.ts +1 -1
  56. package/_types/src/components/common/TokenSelector/TokenSelector.d.ts.map +1 -1
  57. package/_types/src/components/common/TransactionModal/TransactionModalRenderer.d.ts.map +1 -1
  58. package/_types/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.d.ts +1 -1
  59. package/_types/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.d.ts.map +1 -1
  60. package/_types/src/components/widgets/OnrampWidget/widget/index.d.ts +1 -1
  61. package/_types/src/components/widgets/OnrampWidget/widget/index.d.ts.map +1 -1
  62. package/_types/src/components/widgets/SwapWidget/index.d.ts +1 -1
  63. package/_types/src/components/widgets/SwapWidget/index.d.ts.map +1 -1
  64. package/_types/src/components/widgets/SwapWidgetRenderer.d.ts +2 -2
  65. package/_types/src/components/widgets/SwapWidgetRenderer.d.ts.map +1 -1
  66. package/_types/src/components/widgets/WidgetErrorWell.d.ts.map +1 -1
  67. package/_types/src/constants/depositAddresses.d.ts.map +1 -1
  68. package/_types/src/constants/walletCompatibility.d.ts.map +1 -1
  69. package/_types/src/utils/address.d.ts +1 -1
  70. package/_types/src/utils/address.d.ts.map +1 -1
  71. package/_types/src/utils/relayTransaction.d.ts +6 -0
  72. package/_types/src/utils/relayTransaction.d.ts.map +1 -1
  73. package/_types/src/utils/solana.d.ts.map +1 -1
  74. package/_types/src/utils/xrp.d.ts +12 -0
  75. package/_types/src/utils/xrp.d.ts.map +1 -0
  76. package/_types/src/version.d.ts +1 -1
  77. package/_types/tsconfig.build.tsbuildinfo +1 -1
  78. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"SwapWidgetRenderer.js","sourceRoot":"","sources":["../../../../src/components/widgets/SwapWidgetRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Dispatch, FC, ReactNode, SetStateAction } from 'react'\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport {\n useCurrencyBalance,\n useRelayClient,\n useDebounceState,\n useWalletAddress,\n useDisconnected,\n usePreviousValueChange,\n useIsWalletCompatible,\n useKnownTokenContract,\n useFallbackState,\n useGasTopUpRequired,\n useExplicitDeposit,\n useDisplayName,\n useLighterAccount\n} from '../../hooks/index.js'\nimport type { Address, WalletClient } from 'viem'\nimport { formatUnits, parseUnits } from 'viem'\nimport { useAccount, useWalletClient } from 'wagmi'\nimport { useCapabilities } from 'wagmi/experimental'\nimport type { Token } from '../../types/index.js'\nimport { useQueryClient } from '@tanstack/react-query'\nimport type { ChainVM, Execute } from '@relayprotocol/relay-sdk'\nimport {\n calculatePriceTimeEstimate,\n calculateRelayerFeeProportionUsd,\n extractQuoteId,\n getCurrentStep,\n getSwapEventData,\n isHighRelayerServiceFeeUsd,\n parseFees\n} from '../../utils/quote.js'\nimport { useQuote, useTokenPrice } from '@relayprotocol/relay-kit-hooks'\nimport { EventNames } from '../../constants/events.js'\nimport {\n ProviderOptionsContext,\n useHapticEvent\n} from '../../providers/RelayKitProvider.js'\nimport type { DebouncedState } from 'usehooks-ts'\nimport type { AdaptedWallet } from '@relayprotocol/relay-sdk'\nimport type { LinkedWallet } from '../../types/index.js'\nimport {\n addressesEqual,\n addressWithFallback,\n isValidAddress,\n findSupportedWallet,\n isChainVmTypeSupported\n} from '../../utils/address.js'\nimport { adaptViemWallet } from '@relayprotocol/relay-sdk'\nimport { errorToJSON } from '../../utils/errors.js'\nimport { useSwapButtonCta } from '../../hooks/widget/useSwapButtonCta.js'\nimport { sha256 } from '../../utils/hashing.js'\nimport { get15MinuteInterval } from '../../utils/time.js'\nimport { isLighterAddress } from '../../utils/lighter.js'\nimport type { FeeBreakdown } from '../../types/FeeBreakdown.js'\n\nexport type TradeType = 'EXACT_INPUT' | 'EXPECTED_OUTPUT'\n\ntype SwapWidgetRendererProps = {\n transactionModalOpen: boolean\n setTransactionModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n depositAddressModalOpen: boolean\n children: (props: ChildrenProps) => ReactNode\n fromToken?: Token\n setFromToken?: (token?: Token) => void\n toToken?: Token\n setToToken?: (token?: Token) => void\n defaultToAddress?: Address\n defaultAmount?: string\n defaultTradeType?: TradeType\n slippageTolerance?: string\n context: 'Swap' | 'Deposit' | 'Withdraw'\n wallet?: AdaptedWallet\n linkedWallets?: LinkedWallet[]\n multiWalletSupportEnabled?: boolean\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm'>[]\n onConnectWallet?: () => void\n onAnalyticEvent?: (eventName: string, data?: any) => void\n onSwapError?: (error: string, data?: Execute) => void\n}\n\nexport type ChildrenProps = {\n quote?: ReturnType<typeof useQuote>['data']\n steps: Execute['steps'] | null\n setSteps: Dispatch<React.SetStateAction<Execute['steps'] | null>>\n swap: () => void\n transactionModalOpen: boolean\n details: null | Execute['details']\n feeBreakdown: FeeBreakdown | null\n fromToken?: Token\n setFromToken: Dispatch<React.SetStateAction<Token | undefined>>\n toToken?: Token\n setToToken: Dispatch<React.SetStateAction<Token | undefined>>\n swapError: Error | null\n error: Error | null\n toDisplayName?: string\n address?: Address | string\n recipient?: Address | string\n customToAddress?: Address | string\n setCustomToAddress: Dispatch<\n React.SetStateAction<Address | string | undefined>\n >\n tradeType: TradeType\n setTradeType: Dispatch<React.SetStateAction<TradeType>>\n isSameCurrencySameRecipientSwap: boolean\n amountInputValue: string\n debouncedInputAmountValue: string\n setAmountInputValue: (value: string) => void\n debouncedAmountInputControls: DebouncedState<(value: string) => void>\n amountOutputValue: string\n debouncedOutputAmountValue: string\n setAmountOutputValue: (value: string) => void\n debouncedAmountOutputControls: DebouncedState<(value: string) => void>\n toBalance?: bigint\n toBalancePending?: boolean\n fromBalance?: bigint\n fromBalancePending?: boolean\n isFetchingQuote: boolean\n isLoadingToBalance: boolean\n isLoadingFromBalance: boolean\n highRelayerServiceFee: boolean\n relayerFeeProportion: bigint\n hasInsufficientBalance: boolean\n isInsufficientLiquidityError?: boolean\n isCapacityExceededError?: boolean\n isCouldNotExecuteError?: boolean\n ctaCopy: string\n isFromNative: boolean\n slippageTolerance?: string\n timeEstimate?: { time: number; formattedTime: string }\n isSvmSwap: boolean\n isBvmSwap: boolean\n isValidFromAddress: boolean\n isValidToAddress: boolean\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm'>[]\n fromChainWalletVMSupported: boolean\n toChainWalletVMSupported: boolean\n isRecipientLinked?: boolean\n recipientWalletSupportsChain?: boolean\n gasTopUpEnabled: boolean\n setGasTopUpEnabled: Dispatch<React.SetStateAction<boolean>>\n gasTopUpBalance?: bigint\n gasTopUpRequired: boolean\n gasTopUpAmount?: bigint\n gasTopUpAmountUsd?: string\n quoteInProgress: null | Execute\n setQuoteInProgress: Dispatch<React.SetStateAction<null | Execute>>\n linkedWallet?: LinkedWallet\n quoteParameters?: Parameters<typeof useQuote>['2']\n invalidateBalanceQueries: () => void\n invalidateQuoteQuery: () => void\n setDetails: Dispatch<React.SetStateAction<Execute['details'] | null>>\n setSwapError: Dispatch<React.SetStateAction<Error | null>>\n abortController: AbortController | null\n fromTokenPriceData: ReturnType<typeof useTokenPrice>['data']\n isLoadingFromTokenPrice: boolean\n toTokenPriceData: ReturnType<typeof useTokenPrice>['data']\n isLoadingToTokenPrice: boolean\n}\n\n// shared query options for useTokenPrice\nconst tokenPriceQueryOptions = {\n staleTime: 60 * 1000, // 1 minute\n refetchInterval: 30 * 1000, // 30 seconds\n refetchOnWindowFocus: false\n}\n\nconst SwapWidgetRenderer: FC<SwapWidgetRendererProps> = ({\n transactionModalOpen,\n setTransactionModalOpen,\n depositAddressModalOpen,\n fromToken: _fromToken,\n setFromToken: _setFromToken,\n toToken: _toToken,\n setToToken: _setToToken,\n defaultToAddress,\n defaultAmount,\n defaultTradeType,\n slippageTolerance,\n context,\n wallet,\n multiWalletSupportEnabled = false,\n linkedWallets,\n supportedWalletVMs,\n children,\n onAnalyticEvent,\n onSwapError\n}) => {\n const haptic = useHapticEvent()\n const [fromToken, setFromToken] = useFallbackState(\n _setFromToken ? _fromToken : undefined,\n _setFromToken\n ? [\n _fromToken,\n _setFromToken as Dispatch<SetStateAction<Token | undefined>>\n ]\n : undefined\n )\n const [toToken, setToToken] = useFallbackState(\n _setToToken ? _toToken : undefined,\n _setToToken\n ? [_toToken, _setToToken as Dispatch<SetStateAction<Token | undefined>>]\n : undefined\n )\n const providerOptionsContext = useContext(ProviderOptionsContext)\n const connectorKeyOverrides = providerOptionsContext.vmConnectorKeyOverrides\n const relayClient = useRelayClient()\n const { connector } = useAccount()\n const walletClient = useWalletClient()\n const [customToAddress, setCustomToAddress] = useState<\n Address | string | undefined\n >(defaultToAddress)\n const address = useWalletAddress(wallet, linkedWallets)\n\n const [tradeType, setTradeType] = useState<'EXACT_INPUT' | 'EXPECTED_OUTPUT'>(\n defaultTradeType ?? 'EXACT_INPUT'\n )\n const queryClient = useQueryClient()\n const [steps, setSteps] = useState<null | Execute['steps']>(null)\n const [quoteInProgress, setQuoteInProgress] = useState<null | Execute>(null)\n const [waitingForSteps, setWaitingForSteps] = useState(false)\n const [details, setDetails] = useState<null | Execute['details']>(null)\n const [gasTopUpEnabled, setGasTopUpEnabled] = useState(false)\n const [abortController, setAbortController] =\n useState<AbortController | null>(null)\n\n const {\n value: amountInputValue,\n debouncedValue: debouncedInputAmountValue,\n setValue: setAmountInputValue,\n debouncedControls: debouncedAmountInputControls\n } = useDebounceState<string>(\n !defaultTradeType || defaultTradeType === 'EXACT_INPUT'\n ? (defaultAmount ?? '')\n : '',\n 500\n )\n const {\n value: amountOutputValue,\n debouncedValue: debouncedOutputAmountValue,\n setValue: setAmountOutputValue,\n debouncedControls: debouncedAmountOutputControls\n } = useDebounceState<string>(\n defaultTradeType === 'EXPECTED_OUTPUT' ? (defaultAmount ?? '') : '',\n 500\n )\n\n const [swapError, setSwapError] = useState<Error | null>(null)\n\n const toChain = relayClient?.chains.find(\n (chain) => chain.id === toToken?.chainId\n )\n const fromChain = relayClient?.chains?.find(\n (chain) => chain.id === fromToken?.chainId\n )\n\n const fromChainWalletVMSupported =\n isChainVmTypeSupported(fromChain?.vmType, supportedWalletVMs) ||\n fromChain?.id === 1337\n const toChainWalletVMSupported = isChainVmTypeSupported(\n toChain?.vmType,\n supportedWalletVMs\n )\n\n const defaultRecipient = useMemo(() => {\n const _linkedWallet = linkedWallets?.find(\n (linkedWallet) =>\n address ===\n (linkedWallet.vmType === 'evm'\n ? linkedWallet.address.toLowerCase()\n : linkedWallet.address)\n )\n const _isValidToAddress = isValidAddress(\n toChain?.vmType,\n customToAddress ?? '',\n toChain?.id,\n !customToAddress && _linkedWallet?.address === address\n ? _linkedWallet?.connector\n : undefined,\n connectorKeyOverrides\n )\n if (\n multiWalletSupportEnabled &&\n toChain &&\n linkedWallets &&\n !_isValidToAddress\n ) {\n const supportedAddress = findSupportedWallet(\n toChain,\n customToAddress,\n linkedWallets,\n connectorKeyOverrides\n )\n\n return supportedAddress\n }\n }, [\n multiWalletSupportEnabled,\n toChain,\n customToAddress,\n address,\n linkedWallets,\n setCustomToAddress\n ])\n\n const recipient = customToAddress ?? defaultRecipient ?? address\n\n const {\n value: fromBalance,\n queryKey: fromBalanceQueryKey,\n isLoading: isLoadingFromBalance,\n isError: fromBalanceErrorFetching,\n hasPendingBalance: fromBalancePending\n } = useCurrencyBalance({\n chain: fromChain,\n address: address,\n currency: fromToken?.address ? (fromToken.address as Address) : undefined,\n enabled: fromToken !== undefined,\n refreshInterval: undefined,\n wallet\n })\n\n const {\n value: toBalance,\n queryKey: toBalanceQueryKey,\n isLoading: isLoadingToBalance,\n hasPendingBalance: toBalancePending\n } = useCurrencyBalance({\n chain: toChain,\n address: recipient,\n currency: toToken?.address ? (toToken.address as Address) : undefined,\n enabled: toToken !== undefined,\n refreshInterval: undefined,\n wallet\n })\n\n const invalidateBalanceQueries = useCallback(() => {\n queryClient.invalidateQueries({ queryKey: ['useCodexBalances'] })\n queryClient.invalidateQueries({ queryKey: fromBalanceQueryKey })\n queryClient.invalidateQueries({ queryKey: toBalanceQueryKey })\n }, [queryClient, fromBalanceQueryKey, toBalanceQueryKey, address])\n const { data: capabilities } = useCapabilities({\n query: {\n enabled:\n connector &&\n (connector.id === 'coinbaseWalletSDK' || connector.id === 'coinbase')\n }\n })\n const hasAuxiliaryFundsSupport = Boolean(\n fromToken?.chainId\n ? capabilities?.[fromToken?.chainId]?.auxiliaryFunds?.supported\n : false\n )\n\n const isSvmSwap = fromChain?.vmType === 'svm' || toChain?.vmType === 'svm'\n const isBvmSwap = fromChain?.vmType === 'bvm' || toChain?.vmType === 'bvm'\n const linkedWallet = linkedWallets?.find(\n (linkedWallet) =>\n address ===\n (linkedWallet.vmType === 'evm'\n ? linkedWallet.address.toLowerCase()\n : linkedWallet.address) || linkedWallet.address === address\n )\n\n const isRecipientLinked =\n (recipient\n ? linkedWallets?.find((wallet) => wallet.address === recipient)\n : undefined) !== undefined\n\n const isValidFromAddress = isValidAddress(\n fromChain?.vmType,\n address ?? '',\n fromChain?.id,\n linkedWallet?.connector,\n connectorKeyOverrides\n )\n const fromAddressWithFallback = addressWithFallback(\n fromChain?.vmType,\n address,\n fromChain?.id,\n linkedWallet?.connector,\n connectorKeyOverrides\n )\n\n // Never allow the destination token's contract address as the recipient\n const recipientIsDestinationToken = Boolean(\n toChain &&\n toToken &&\n toToken.chainId === toChain.id &&\n addressesEqual(toChain.vmType ?? 'evm', recipient, toToken.address)\n )\n\n // Check custom recipients against the destination chain's known currencies\n const { isKnownTokenContract: recipientMatchesKnownToken } =\n useKnownTokenContract(\n toChain,\n customToAddress,\n customToAddress !== undefined && !recipientIsDestinationToken\n )\n\n // Only confirmed matches invalidate the recipient\n const recipientIsKnownTokenContract = recipientMatchesKnownToken\n\n const isValidToAddress =\n !recipientIsDestinationToken &&\n !recipientIsKnownTokenContract &&\n isValidAddress(toChain?.vmType, recipient ?? '', toChain?.id)\n\n const toAddressWithFallback = addressWithFallback(\n toChain?.vmType,\n recipientIsDestinationToken || recipientIsKnownTokenContract\n ? undefined\n : recipient,\n toChain?.id\n )\n\n const { displayName: toDisplayName } = useDisplayName(\n recipient,\n toChain?.vmType,\n toChain?.id\n )\n\n const [currentSlippageTolerance, setCurrentSlippageTolerance] = useState<\n string | undefined\n >(slippageTolerance)\n\n useEffect(() => {\n setCurrentSlippageTolerance(slippageTolerance)\n }, [slippageTolerance])\n\n const {\n required: gasTopUpRequired,\n amount: _gasTopUpAmount,\n amountUsd: _gasTopUpAmountUsd,\n balance: gasTopUpBalance\n } = useGasTopUpRequired(toChain, fromChain, toToken, recipient)\n\n // Retrieve the price of the `from` token\n const { data: fromTokenPriceData, isLoading: isLoadingFromTokenPrice } =\n useTokenPrice(\n relayClient?.baseApiUrl,\n {\n address: fromToken?.address ?? '',\n chainId: fromToken?.chainId ?? 0,\n referrer: relayClient?.source\n },\n {\n enabled: !!(fromToken?.address && fromToken.chainId),\n ...tokenPriceQueryOptions\n }\n )\n\n // Retrieve the price of the `to` token\n const { data: toTokenPriceData, isLoading: isLoadingToTokenPrice } =\n useTokenPrice(\n relayClient?.baseApiUrl,\n {\n address: toToken?.address ?? '',\n chainId: toToken?.chainId ?? 0,\n referrer: relayClient?.source\n },\n {\n enabled: !!(toToken?.address && toToken.chainId),\n ...tokenPriceQueryOptions\n }\n )\n\n const isFromNative = fromToken?.address === fromChain?.currency?.address\n\n const explicitDeposit = useExplicitDeposit(\n wallet,\n fromToken?.chainId,\n fromChain?.vmType,\n address\n )\n\n const shouldSetQuoteParameters = fromToken && toToken\n\n const quoteParameters: Parameters<typeof useQuote>['2'] =\n shouldSetQuoteParameters\n ? {\n user: fromAddressWithFallback,\n originChainId: fromToken.chainId,\n destinationChainId: toToken.chainId,\n originCurrency: fromToken.address,\n destinationCurrency: toToken.address,\n recipient: toAddressWithFallback,\n tradeType,\n appFees: providerOptionsContext.appFees,\n amount:\n tradeType === 'EXACT_INPUT'\n ? parseUnits(\n debouncedInputAmountValue,\n fromToken.decimals\n ).toString()\n : parseUnits(\n debouncedOutputAmountValue,\n toToken.decimals\n ).toString(),\n referrer: relayClient?.source ?? undefined,\n useDepositAddress: !fromChainWalletVMSupported,\n refundTo: fromToken?.chainId === 1337 ? address : undefined,\n slippageTolerance: slippageTolerance,\n topupGas: gasTopUpEnabled && gasTopUpRequired,\n ...(linkedWallet?.vmType === 'bvm' && wallet?.metadata?.publicKey\n ? {\n additionalData: {\n userPublicKey: wallet?.metadata?.publicKey\n }\n }\n : {}),\n ...(explicitDeposit !== undefined &&\n fromChain?.vmType === 'evm' && {\n explicitDeposit: explicitDeposit\n })\n }\n : undefined\n\n const onQuoteRequested: Parameters<typeof useQuote>['3'] = (\n options,\n config\n ) => {\n const interval = get15MinuteInterval()\n const quoteRequestId = sha256({ ...options, interval })\n onAnalyticEvent?.(EventNames.QUOTE_REQUESTED, {\n parameters: options,\n wallet_connector: linkedWallet?.connector,\n chain_id_in: options?.originChainId,\n chain_id_out: options?.destinationChainId,\n http_config: config,\n quote_request_id: quoteRequestId\n })\n }\n\n const onQuoteReceived: Parameters<typeof useQuote>['4'] = (\n { details, steps },\n options\n ) => {\n const interval = get15MinuteInterval()\n const quoteRequestId = sha256({ ...options, interval })\n onAnalyticEvent?.(EventNames.QUOTE_RECEIVED, {\n parameters: options,\n wallet_connector: linkedWallet?.connector,\n amount_in: details?.currencyIn?.amountFormatted,\n amount_in_raw: details?.currencyIn?.amount,\n currency_in: details?.currencyIn?.currency?.symbol,\n chain_id_in: details?.currencyIn?.currency?.chainId,\n amount_out: details?.currencyOut?.amountFormatted,\n amount_out_raw: details?.currencyOut?.amount,\n currency_out: details?.currencyOut?.currency?.symbol,\n chain_id_out: details?.currencyOut?.currency?.chainId,\n slippage_tolerance_destination_percentage:\n details?.slippageTolerance?.destination?.percent,\n slippage_tolerance_origin_percentage:\n details?.slippageTolerance?.origin?.percent,\n steps,\n quote_request_id: quoteRequestId,\n quote_id: steps ? extractQuoteId(steps) : undefined\n })\n }\n\n const quoteFetchingEnabled = Boolean(\n relayClient &&\n ((tradeType === 'EXACT_INPUT' &&\n debouncedInputAmountValue &&\n debouncedInputAmountValue.length > 0 &&\n Number(debouncedInputAmountValue) !== 0) ||\n (tradeType === 'EXPECTED_OUTPUT' &&\n debouncedOutputAmountValue &&\n debouncedOutputAmountValue.length > 0 &&\n Number(debouncedOutputAmountValue) !== 0)) &&\n fromToken !== undefined &&\n toToken !== undefined &&\n !transactionModalOpen &&\n !depositAddressModalOpen\n )\n\n const {\n data: _quoteData,\n error: quoteError,\n isFetching: isFetchingQuote,\n executeQuote: executeSwap,\n queryKey: quoteQueryKey\n } = useQuote(\n relayClient ? relayClient : undefined,\n wallet,\n quoteParameters,\n onQuoteRequested,\n onQuoteReceived,\n {\n refetchOnWindowFocus: false,\n enabled: quoteFetchingEnabled && quoteParameters !== undefined,\n refetchInterval:\n !transactionModalOpen &&\n !depositAddressModalOpen &&\n debouncedInputAmountValue === amountInputValue &&\n debouncedOutputAmountValue === amountOutputValue\n ? 12000\n : undefined\n },\n (e: any) => {\n const errorMessage = errorToJSON(\n e?.response?.data?.message ? new Error(e?.response?.data?.message) : e\n )\n const interval = get15MinuteInterval()\n const quoteRequestId = sha256({ ...quoteParameters, interval })\n onAnalyticEvent?.(EventNames.QUOTE_ERROR, {\n wallet_connector: linkedWallet?.connector,\n error_message: errorMessage,\n parameters: quoteParameters,\n quote_request_id: quoteRequestId,\n status_code: e?.response?.status ?? e?.status ?? ''\n })\n },\n undefined\n )\n\n const invalidateQuoteQuery = useCallback(() => {\n queryClient.invalidateQueries({ queryKey: quoteQueryKey })\n }, [queryClient, quoteQueryKey])\n let error =\n _quoteData || (isFetchingQuote && quoteFetchingEnabled) ? null : quoteError\n let quote = error ? undefined : _quoteData\n const gasTopUpAmount = quote?.details?.currencyGasTopup?.amount\n ? BigInt(quote?.details?.currencyGasTopup?.amount)\n : _gasTopUpAmount\n const gasTopUpAmountUsd =\n quote?.details?.currencyGasTopup?.amountUsd ?? _gasTopUpAmountUsd\n\n useDisconnected(address, () => {\n setCustomToAddress(undefined)\n })\n\n // Auto-select Lighter account when switching to LVM chain\n const isLighterChain = toChain?.vmType === 'lvm'\n const { data: connectedLighterAccount } = useLighterAccount(\n isLighterChain && address ? address : undefined\n )\n\n useEffect(() => {\n if (\n isLighterChain &&\n connectedLighterAccount?.index &&\n // Only auto-set if no valid Lighter address is already set\n (!customToAddress || !isLighterAddress(customToAddress))\n ) {\n setCustomToAddress(connectedLighterAccount.index.toString())\n }\n }, [isLighterChain, connectedLighterAccount, customToAddress])\n\n useEffect(() => {\n if (tradeType === 'EXACT_INPUT') {\n const amountOut = quote?.details?.currencyOut?.amount ?? ''\n setAmountOutputValue(\n amountOut !== ''\n ? formatUnits(\n BigInt(amountOut),\n Number(quote?.details?.currencyOut?.currency?.decimals ?? 18)\n )\n : ''\n )\n } else if (tradeType === 'EXPECTED_OUTPUT') {\n const amountIn = quote?.details?.currencyIn?.amount ?? ''\n setAmountInputValue(\n amountIn !== ''\n ? formatUnits(\n BigInt(amountIn),\n Number(quote?.details?.currencyIn?.currency?.decimals ?? 18)\n )\n : ''\n )\n }\n debouncedAmountInputControls.flush()\n debouncedAmountOutputControls.flush()\n }, [quote, tradeType])\n\n const feeBreakdown = useMemo(() => {\n const chains = relayClient?.chains\n const fromChain = chains?.find((chain) => chain.id === fromToken?.chainId)\n const toChain = chains?.find((chain) => chain.id === toToken?.chainId)\n return fromToken && toToken && fromChain && toChain && quote\n ? parseFees(toChain, fromChain, quote)\n : null\n }, [quote, fromToken, toToken, relayClient])\n\n const totalAmount = BigInt(quote?.details?.currencyIn?.amount ?? 0n)\n\n const hasInsufficientBalance = Boolean(\n !fromBalanceErrorFetching &&\n totalAmount &&\n address &&\n (fromBalance ?? 0n) < totalAmount &&\n !hasAuxiliaryFundsSupport &&\n fromChainWalletVMSupported\n )\n\n const fetchQuoteErrorMessage = error\n ? error?.message\n ? (error?.message as string)\n : 'Unknown Error'\n : null\n const fetchQuoteDataErrorMessage = error\n ? (error as any)?.response?.data?.message\n ? ((error as any)?.response?.data.message as string)\n : 'Unknown Error'\n : null\n const isInsufficientLiquidityError = Boolean(\n fetchQuoteErrorMessage?.includes('No quotes available')\n )\n const isCapacityExceededError =\n fetchQuoteDataErrorMessage?.includes(\n 'Amount is higher than the available liquidity'\n ) || fetchQuoteDataErrorMessage?.includes('Insufficient relayer liquidity')\n const isCouldNotExecuteError =\n fetchQuoteDataErrorMessage?.includes('Could not execute')\n const highRelayerServiceFee = isHighRelayerServiceFeeUsd(quote)\n const relayerFeeProportion = calculateRelayerFeeProportionUsd(quote)\n const timeEstimate = calculatePriceTimeEstimate(quote?.details)\n\n const recipientWalletSupportsChain = useIsWalletCompatible(\n toChain?.id,\n recipient,\n linkedWallets,\n onAnalyticEvent\n )\n\n const isSameCurrencySameRecipientSwap =\n fromToken?.address === toToken?.address &&\n fromToken?.chainId === toToken?.chainId &&\n address === recipient\n\n const ctaCopy = useSwapButtonCta({\n fromToken,\n toToken,\n multiWalletSupportEnabled,\n isValidFromAddress,\n fromChainWalletVMSupported,\n isValidToAddress,\n toChainWalletVMSupported,\n fromChain,\n toChain,\n isSameCurrencySameRecipientSwap,\n debouncedInputAmountValue,\n debouncedOutputAmountValue,\n hasInsufficientBalance,\n isInsufficientLiquidityError,\n quote,\n operation: quote?.details?.operation\n })\n\n usePreviousValueChange(\n isCapacityExceededError,\n !isFetchingQuote,\n (capacityExceeded) => {\n if (capacityExceeded) {\n onAnalyticEvent?.(EventNames.CTA_MAX_CAPACITY_PROMPTED, {\n inputAmount: debouncedInputAmountValue,\n outputAmount: debouncedOutputAmountValue\n })\n }\n }\n )\n\n const swap = useCallback(async () => {\n let submittedEvents: string[] = []\n\n const swapErrorHandler = (\n error: any,\n currentSteps?: Execute['steps'] | null\n ) => {\n const errorMessage = errorToJSON(\n error?.response?.data?.message\n ? new Error(error?.response?.data?.message)\n : error\n )\n if (\n error &&\n ((typeof error.message === 'string' &&\n error.message.toLowerCase().includes('reject')) ||\n (typeof error === 'string' &&\n error.toLowerCase().includes('reject')) ||\n (typeof error === 'string' && error.includes('Approval Denied')) ||\n (typeof error === 'string' && error.includes('denied transaction')) ||\n (typeof error.message === 'string' &&\n error.message.includes('Approval Denied')) ||\n (typeof error.message === 'string' &&\n error.message.includes('Plugin Closed')) ||\n (typeof error.message === 'string' &&\n error.message.includes('denied transaction')) ||\n (typeof error.message === 'string' &&\n error.message.includes('Failed to initialize request') &&\n fromChain?.id === 2741)) // Abstract @TODO: remove once privy improves handling rejected transactions\n ) {\n // Close the transaction modal if the user rejects the tx\n setTransactionModalOpen(false)\n onAnalyticEvent?.(EventNames.USER_REJECTED_WALLET, {\n error_message: errorMessage\n })\n return\n }\n\n const { step, stepItem } = getCurrentStep(currentSteps)\n const swapEventData = {\n ...getSwapEventData(\n quote?.details,\n quote?.fees,\n currentSteps ?? null,\n linkedWallet?.connector,\n quoteParameters\n ),\n error_message: errorMessage\n }\n const isApproval = step?.id === 'approve'\n const errorEvent = isApproval\n ? EventNames.APPROVAL_ERROR\n : EventNames.DEPOSIT_ERROR\n\n //Filter out receipt/deposit transaction errors, those are approval/deposit errors\n const isTransactionConfirmationError =\n (error &&\n typeof error.message === 'string' &&\n error.message.includes('TransactionConfirmationError')) ||\n (error.name && error.name.includes('TransactionConfirmationError'))\n if (\n stepItem?.receipt &&\n stepItem.check &&\n !isTransactionConfirmationError &&\n (typeof stepItem.receipt === 'object' && 'status' in stepItem.receipt\n ? stepItem.receipt.status !== 'reverted'\n : true) &&\n (!stepItem.checkStatus || stepItem.checkStatus !== 'unknown')\n ) {\n //In some cases there's a race condition where an error is thrown before the steps get a chance to call\n //the callback which triggers the success event. This is a workaround to ensure the success event is triggered when\n //we have a receipt and require a fill check if we haven't already send the success event.\n const successEvent = isApproval\n ? EventNames.APPROVAL_SUCCESS\n : EventNames.DEPOSIT_SUCCESS\n if (!submittedEvents.includes(successEvent)) {\n onAnalyticEvent?.(successEvent, swapEventData)\n submittedEvents.push(successEvent)\n //To preserve the order of events we need to delay sending the fill error event but mark that we did send it to avoid duplicates\n setTimeout(() => {\n onAnalyticEvent?.(EventNames.FILL_ERROR, swapEventData)\n }, 20)\n } else {\n onAnalyticEvent?.(EventNames.FILL_ERROR, swapEventData)\n }\n } else if (\n !stepItem?.receipt ||\n (typeof stepItem.receipt === 'object' &&\n 'status' in stepItem.receipt &&\n stepItem.receipt.status === 'reverted')\n ) {\n onAnalyticEvent?.(errorEvent, swapEventData)\n } else {\n onAnalyticEvent?.(EventNames.SWAP_ERROR, swapEventData)\n }\n\n haptic('error')\n setSwapError(errorMessage)\n onSwapError?.(errorMessage, { ...quote, steps: currentSteps } as Execute)\n }\n\n try {\n const swapEventData = getSwapEventData(\n quote?.details,\n quote?.fees,\n quote?.steps ? (quote?.steps as Execute['steps']) : null,\n linkedWallet?.connector,\n quoteParameters\n )\n onAnalyticEvent?.(EventNames.SWAP_CTA_CLICKED, swapEventData)\n setWaitingForSteps(true)\n\n if (!executeSwap) {\n throw new Error('Missing a quote')\n }\n\n if (!wallet && !walletClient.data) {\n throw new Error('Missing a wallet')\n }\n\n if (recipientMatchesKnownToken) {\n throw new Error('Recipient address is a token contract, not a wallet')\n }\n\n setSteps(quote?.steps as Execute['steps'])\n setQuoteInProgress(quote as Execute)\n setTransactionModalOpen(true)\n\n const _wallet =\n wallet ?? adaptViemWallet(walletClient.data as WalletClient)\n\n const activeWalletChainId = await _wallet?.getChainId()\n const activeWalletChain = relayClient?.chains?.find(\n (chain) => chain.id === activeWalletChainId\n )\n let targetChainId = fromToken?.chainId\n //Special case for Hyperliquid, to sign txs on an evm chain\n if (fromToken?.chainId === 1337) {\n targetChainId =\n activeWalletChain?.vmType !== 'evm' ? 1 : activeWalletChainId\n }\n\n if (fromToken && targetChainId && targetChainId !== activeWalletChainId) {\n onAnalyticEvent?.(EventNames.SWAP_SWITCH_NETWORK, {\n activeWalletChainId,\n ...swapEventData\n })\n await _wallet?.switchChain(targetChainId)\n }\n\n let _currentSteps: Execute['steps'] | undefined = undefined\n\n const execPromise = executeSwap(({ steps: currentSteps }) => {\n setSteps(currentSteps)\n _currentSteps = currentSteps\n\n const { step, stepItem } = getCurrentStep(currentSteps)\n const swapEventData = getSwapEventData(\n quote?.details,\n quote?.fees,\n currentSteps,\n linkedWallet?.connector,\n quoteParameters\n )\n if (step && stepItem) {\n //@ts-ignore\n const isApproval = step.id === 'approve' || step.id === 'approval'\n let submittedEvent = isApproval\n ? EventNames.APPROVAL_SUBMITTED\n : EventNames.DEPOSIT_SUBMITTED\n const successEvent = isApproval\n ? EventNames.APPROVAL_SUCCESS\n : EventNames.DEPOSIT_SUCCESS\n const isBatchTransaction = Boolean(\n Array.isArray(step.items) &&\n step.items.length > 1 &&\n wallet?.handleBatchTransactionStep\n )\n if (!isApproval && isBatchTransaction) {\n submittedEvent = EventNames.BATCH_TX_SUBMITTED\n }\n if (\n !submittedEvents.includes(submittedEvent) &&\n !stepItem.receipt &&\n stepItem?.txHashes &&\n stepItem?.txHashes?.length > 0\n ) {\n submittedEvents.push(submittedEvent)\n onAnalyticEvent?.(submittedEvent, swapEventData)\n } else if (\n !submittedEvents.includes(successEvent) &&\n ((stepItem.receipt &&\n !(\n typeof stepItem.receipt === 'object' &&\n 'status' in stepItem.receipt &&\n stepItem.receipt.status === 'reverted'\n )) ||\n stepItem.checkStatus === 'pending')\n ) {\n onAnalyticEvent?.(successEvent, swapEventData)\n submittedEvents.push(successEvent)\n }\n\n if (\n stepItem.status === 'complete' &&\n stepItem.check &&\n !submittedEvents.includes(EventNames.FILL_SUCCESS)\n ) {\n //Sometimes a fill may be quicker than the tx receipt is available, so we need to handle this scenario\n if (\n !submittedEvents.includes(EventNames.DEPOSIT_SUCCESS) &&\n !isBatchTransaction\n ) {\n onAnalyticEvent?.(EventNames.DEPOSIT_SUCCESS, swapEventData)\n submittedEvents.push(EventNames.DEPOSIT_SUCCESS)\n //To preserve the order of events we need to delay sending the fill success event but mark that we did send it to avoid duplicates\n setTimeout(() => {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }, 20)\n } else {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }\n submittedEvents.push(EventNames.FILL_SUCCESS)\n }\n } else if (\n currentSteps?.every((step) =>\n step.items?.every((item) => item.status === 'complete')\n ) &&\n !submittedEvents.includes(EventNames.FILL_SUCCESS)\n ) {\n //Sometimes a fill may be quicker than the tx receipt is available, so we need to handle this scenario\n if (\n !submittedEvents.includes(EventNames.DEPOSIT_SUCCESS) &&\n !submittedEvents.includes(EventNames.BATCH_TX_SUBMITTED)\n ) {\n onAnalyticEvent?.(EventNames.DEPOSIT_SUCCESS, swapEventData)\n submittedEvents.push(EventNames.DEPOSIT_SUCCESS)\n //To preserve the order of events we need to delay sending the fill success event but mark that we did send it to avoid duplicates\n setTimeout(() => {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }, 20)\n } else {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }\n submittedEvents.push(EventNames.FILL_SUCCESS)\n }\n })\n\n // Store the AbortController for potential cancellation immediately\n if (\n execPromise &&\n typeof execPromise === 'object' &&\n 'abortController' in execPromise\n ) {\n setAbortController((execPromise as any).abortController)\n }\n\n execPromise\n ?.catch((error: any) => {\n swapErrorHandler(error, _currentSteps)\n })\n .finally(() => {\n setWaitingForSteps(false)\n setAbortController(null)\n invalidateBalanceQueries()\n })\n } catch (error: any) {\n swapErrorHandler(error)\n setWaitingForSteps(false)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n relayClient,\n address,\n connector,\n wallet,\n walletClient,\n fromToken,\n toToken,\n customToAddress,\n recipient,\n debouncedInputAmountValue,\n debouncedOutputAmountValue,\n tradeType,\n waitingForSteps,\n executeSwap,\n setSteps,\n setQuoteInProgress,\n invalidateBalanceQueries,\n linkedWallet,\n abortController,\n recipientMatchesKnownToken\n ])\n\n return (\n <>\n {children({\n quote,\n steps,\n setSteps,\n swap,\n transactionModalOpen,\n feeBreakdown,\n fromToken,\n setFromToken,\n toToken,\n setToToken,\n swapError,\n error,\n toDisplayName,\n address,\n recipient,\n customToAddress,\n setCustomToAddress,\n tradeType,\n setTradeType,\n details,\n isSameCurrencySameRecipientSwap,\n debouncedInputAmountValue,\n debouncedAmountInputControls,\n setAmountInputValue,\n amountInputValue,\n amountOutputValue,\n debouncedOutputAmountValue,\n debouncedAmountOutputControls,\n setAmountOutputValue,\n toBalance,\n toBalancePending,\n isLoadingToBalance,\n isFetchingQuote,\n isLoadingFromBalance,\n fromBalance,\n fromBalancePending,\n highRelayerServiceFee,\n relayerFeeProportion,\n hasInsufficientBalance,\n isInsufficientLiquidityError,\n isCapacityExceededError,\n isCouldNotExecuteError,\n ctaCopy,\n isFromNative,\n slippageTolerance: currentSlippageTolerance,\n timeEstimate,\n isSvmSwap,\n isBvmSwap,\n isValidFromAddress,\n isValidToAddress,\n supportedWalletVMs,\n fromChainWalletVMSupported,\n toChainWalletVMSupported,\n isRecipientLinked,\n recipientWalletSupportsChain,\n gasTopUpEnabled,\n setGasTopUpEnabled,\n gasTopUpBalance,\n gasTopUpRequired,\n gasTopUpAmount,\n gasTopUpAmountUsd,\n invalidateBalanceQueries,\n invalidateQuoteQuery,\n setDetails,\n setSwapError,\n quoteInProgress,\n setQuoteInProgress,\n linkedWallet,\n quoteParameters,\n abortController,\n fromTokenPriceData,\n toTokenPriceData,\n isLoadingFromTokenPrice,\n isLoadingToTokenPrice\n })}\n </>\n )\n}\n\nexport default SwapWidgetRenderer\n"]}
1
+ {"version":3,"file":"SwapWidgetRenderer.js","sourceRoot":"","sources":["../../../../src/components/widgets/SwapWidgetRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Dispatch, FC, ReactNode, SetStateAction } from 'react'\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport {\n useCurrencyBalance,\n useRelayClient,\n useDebounceState,\n useWalletAddress,\n useDisconnected,\n usePreviousValueChange,\n useIsWalletCompatible,\n useKnownTokenContract,\n useFallbackState,\n useGasTopUpRequired,\n useExplicitDeposit,\n useDisplayName,\n useLighterAccount\n} from '../../hooks/index.js'\nimport type { Address, WalletClient } from 'viem'\nimport { formatUnits, parseUnits } from 'viem'\nimport { useAccount, useWalletClient } from 'wagmi'\nimport { useCapabilities } from 'wagmi/experimental'\nimport type { Token } from '../../types/index.js'\nimport { useQueryClient } from '@tanstack/react-query'\nimport type { ChainVM, Execute } from '@relayprotocol/relay-sdk'\nimport {\n calculatePriceTimeEstimate,\n calculateRelayerFeeProportionUsd,\n extractQuoteId,\n getCurrentStep,\n getSwapEventData,\n isHighRelayerServiceFeeUsd,\n parseFees\n} from '../../utils/quote.js'\nimport { useQuote, useTokenPrice } from '@relayprotocol/relay-kit-hooks'\nimport { EventNames } from '../../constants/events.js'\nimport {\n ProviderOptionsContext,\n useHapticEvent\n} from '../../providers/RelayKitProvider.js'\nimport type { DebouncedState } from 'usehooks-ts'\nimport type { AdaptedWallet } from '@relayprotocol/relay-sdk'\nimport type { LinkedWallet } from '../../types/index.js'\nimport {\n addressesEqual,\n addressWithFallback,\n isValidAddress,\n findSupportedWallet,\n isChainVmTypeSupported\n} from '../../utils/address.js'\nimport { adaptViemWallet } from '@relayprotocol/relay-sdk'\nimport { errorToJSON } from '../../utils/errors.js'\nimport { useSwapButtonCta } from '../../hooks/widget/useSwapButtonCta.js'\nimport { sha256 } from '../../utils/hashing.js'\nimport { get15MinuteInterval } from '../../utils/time.js'\nimport { isLighterAddress } from '../../utils/lighter.js'\nimport type { FeeBreakdown } from '../../types/FeeBreakdown.js'\n\nexport type TradeType = 'EXACT_INPUT' | 'EXPECTED_OUTPUT'\n\ntype SwapWidgetRendererProps = {\n transactionModalOpen: boolean\n setTransactionModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n depositAddressModalOpen: boolean\n children: (props: ChildrenProps) => ReactNode\n fromToken?: Token\n setFromToken?: (token?: Token) => void\n toToken?: Token\n setToToken?: (token?: Token) => void\n defaultToAddress?: Address\n defaultAmount?: string\n defaultTradeType?: TradeType\n slippageTolerance?: string\n context: 'Swap' | 'Deposit' | 'Withdraw'\n wallet?: AdaptedWallet\n linkedWallets?: LinkedWallet[]\n multiWalletSupportEnabled?: boolean\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm' | 'xrpvm'>[]\n onConnectWallet?: () => void\n onAnalyticEvent?: (eventName: string, data?: any) => void\n onSwapError?: (error: string, data?: Execute) => void\n}\n\nexport type ChildrenProps = {\n quote?: ReturnType<typeof useQuote>['data']\n steps: Execute['steps'] | null\n setSteps: Dispatch<React.SetStateAction<Execute['steps'] | null>>\n swap: () => void\n transactionModalOpen: boolean\n details: null | Execute['details']\n feeBreakdown: FeeBreakdown | null\n fromToken?: Token\n setFromToken: Dispatch<React.SetStateAction<Token | undefined>>\n toToken?: Token\n setToToken: Dispatch<React.SetStateAction<Token | undefined>>\n swapError: Error | null\n error: Error | null\n toDisplayName?: string\n address?: Address | string\n recipient?: Address | string\n customToAddress?: Address | string\n setCustomToAddress: Dispatch<\n React.SetStateAction<Address | string | undefined>\n >\n tradeType: TradeType\n setTradeType: Dispatch<React.SetStateAction<TradeType>>\n isSameCurrencySameRecipientSwap: boolean\n amountInputValue: string\n debouncedInputAmountValue: string\n setAmountInputValue: (value: string) => void\n debouncedAmountInputControls: DebouncedState<(value: string) => void>\n amountOutputValue: string\n debouncedOutputAmountValue: string\n setAmountOutputValue: (value: string) => void\n debouncedAmountOutputControls: DebouncedState<(value: string) => void>\n toBalance?: bigint\n toBalancePending?: boolean\n fromBalance?: bigint\n fromBalancePending?: boolean\n isFetchingQuote: boolean\n isLoadingToBalance: boolean\n isLoadingFromBalance: boolean\n highRelayerServiceFee: boolean\n relayerFeeProportion: bigint\n hasInsufficientBalance: boolean\n isInsufficientLiquidityError?: boolean\n isCapacityExceededError?: boolean\n isCouldNotExecuteError?: boolean\n ctaCopy: string\n isFromNative: boolean\n slippageTolerance?: string\n timeEstimate?: { time: number; formattedTime: string }\n isSvmSwap: boolean\n isBvmSwap: boolean\n isValidFromAddress: boolean\n isValidToAddress: boolean\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm' | 'xrpvm'>[]\n fromChainWalletVMSupported: boolean\n toChainWalletVMSupported: boolean\n isRecipientLinked?: boolean\n recipientWalletSupportsChain?: boolean\n gasTopUpEnabled: boolean\n setGasTopUpEnabled: Dispatch<React.SetStateAction<boolean>>\n gasTopUpBalance?: bigint\n gasTopUpRequired: boolean\n gasTopUpAmount?: bigint\n gasTopUpAmountUsd?: string\n quoteInProgress: null | Execute\n setQuoteInProgress: Dispatch<React.SetStateAction<null | Execute>>\n linkedWallet?: LinkedWallet\n quoteParameters?: Parameters<typeof useQuote>['2']\n invalidateBalanceQueries: () => void\n invalidateQuoteQuery: () => void\n setDetails: Dispatch<React.SetStateAction<Execute['details'] | null>>\n setSwapError: Dispatch<React.SetStateAction<Error | null>>\n abortController: AbortController | null\n fromTokenPriceData: ReturnType<typeof useTokenPrice>['data']\n isLoadingFromTokenPrice: boolean\n toTokenPriceData: ReturnType<typeof useTokenPrice>['data']\n isLoadingToTokenPrice: boolean\n}\n\n// shared query options for useTokenPrice\nconst tokenPriceQueryOptions = {\n staleTime: 60 * 1000, // 1 minute\n refetchInterval: 30 * 1000, // 30 seconds\n refetchOnWindowFocus: false\n}\n\nconst SwapWidgetRenderer: FC<SwapWidgetRendererProps> = ({\n transactionModalOpen,\n setTransactionModalOpen,\n depositAddressModalOpen,\n fromToken: _fromToken,\n setFromToken: _setFromToken,\n toToken: _toToken,\n setToToken: _setToToken,\n defaultToAddress,\n defaultAmount,\n defaultTradeType,\n slippageTolerance,\n context,\n wallet,\n multiWalletSupportEnabled = false,\n linkedWallets,\n supportedWalletVMs,\n children,\n onAnalyticEvent,\n onSwapError\n}) => {\n const haptic = useHapticEvent()\n const [fromToken, setFromToken] = useFallbackState(\n _setFromToken ? _fromToken : undefined,\n _setFromToken\n ? [\n _fromToken,\n _setFromToken as Dispatch<SetStateAction<Token | undefined>>\n ]\n : undefined\n )\n const [toToken, setToToken] = useFallbackState(\n _setToToken ? _toToken : undefined,\n _setToToken\n ? [_toToken, _setToToken as Dispatch<SetStateAction<Token | undefined>>]\n : undefined\n )\n const providerOptionsContext = useContext(ProviderOptionsContext)\n const connectorKeyOverrides = providerOptionsContext.vmConnectorKeyOverrides\n const relayClient = useRelayClient()\n const { connector } = useAccount()\n const walletClient = useWalletClient()\n const [customToAddress, setCustomToAddress] = useState<\n Address | string | undefined\n >(defaultToAddress)\n const address = useWalletAddress(wallet, linkedWallets)\n\n const [tradeType, setTradeType] = useState<'EXACT_INPUT' | 'EXPECTED_OUTPUT'>(\n defaultTradeType ?? 'EXACT_INPUT'\n )\n const queryClient = useQueryClient()\n const [steps, setSteps] = useState<null | Execute['steps']>(null)\n const [quoteInProgress, setQuoteInProgress] = useState<null | Execute>(null)\n const [waitingForSteps, setWaitingForSteps] = useState(false)\n const [details, setDetails] = useState<null | Execute['details']>(null)\n const [gasTopUpEnabled, setGasTopUpEnabled] = useState(false)\n const [abortController, setAbortController] =\n useState<AbortController | null>(null)\n\n const {\n value: amountInputValue,\n debouncedValue: debouncedInputAmountValue,\n setValue: setAmountInputValue,\n debouncedControls: debouncedAmountInputControls\n } = useDebounceState<string>(\n !defaultTradeType || defaultTradeType === 'EXACT_INPUT'\n ? (defaultAmount ?? '')\n : '',\n 500\n )\n const {\n value: amountOutputValue,\n debouncedValue: debouncedOutputAmountValue,\n setValue: setAmountOutputValue,\n debouncedControls: debouncedAmountOutputControls\n } = useDebounceState<string>(\n defaultTradeType === 'EXPECTED_OUTPUT' ? (defaultAmount ?? '') : '',\n 500\n )\n\n const [swapError, setSwapError] = useState<Error | null>(null)\n\n const toChain = relayClient?.chains.find(\n (chain) => chain.id === toToken?.chainId\n )\n const fromChain = relayClient?.chains?.find(\n (chain) => chain.id === fromToken?.chainId\n )\n\n const fromChainWalletVMSupported =\n isChainVmTypeSupported(fromChain?.vmType, supportedWalletVMs) ||\n fromChain?.id === 1337\n const toChainWalletVMSupported = isChainVmTypeSupported(\n toChain?.vmType,\n supportedWalletVMs\n )\n\n const defaultRecipient = useMemo(() => {\n const _linkedWallet = linkedWallets?.find(\n (linkedWallet) =>\n address ===\n (linkedWallet.vmType === 'evm'\n ? linkedWallet.address.toLowerCase()\n : linkedWallet.address)\n )\n const _isValidToAddress = isValidAddress(\n toChain?.vmType,\n customToAddress ?? '',\n toChain?.id,\n !customToAddress && _linkedWallet?.address === address\n ? _linkedWallet?.connector\n : undefined,\n connectorKeyOverrides\n )\n if (\n multiWalletSupportEnabled &&\n toChain &&\n linkedWallets &&\n !_isValidToAddress\n ) {\n const supportedAddress = findSupportedWallet(\n toChain,\n customToAddress,\n linkedWallets,\n connectorKeyOverrides\n )\n\n return supportedAddress\n }\n }, [\n multiWalletSupportEnabled,\n toChain,\n customToAddress,\n address,\n linkedWallets,\n setCustomToAddress\n ])\n\n const recipient = customToAddress ?? defaultRecipient ?? address\n\n const {\n value: fromBalance,\n queryKey: fromBalanceQueryKey,\n isLoading: isLoadingFromBalance,\n isError: fromBalanceErrorFetching,\n hasPendingBalance: fromBalancePending\n } = useCurrencyBalance({\n chain: fromChain,\n address: address,\n currency: fromToken?.address ? (fromToken.address as Address) : undefined,\n enabled: fromToken !== undefined,\n refreshInterval: undefined,\n wallet\n })\n\n const {\n value: toBalance,\n queryKey: toBalanceQueryKey,\n isLoading: isLoadingToBalance,\n hasPendingBalance: toBalancePending\n } = useCurrencyBalance({\n chain: toChain,\n address: recipient,\n currency: toToken?.address ? (toToken.address as Address) : undefined,\n enabled: toToken !== undefined,\n refreshInterval: undefined,\n wallet\n })\n\n const invalidateBalanceQueries = useCallback(() => {\n queryClient.invalidateQueries({ queryKey: ['useCodexBalances'] })\n queryClient.invalidateQueries({ queryKey: fromBalanceQueryKey })\n queryClient.invalidateQueries({ queryKey: toBalanceQueryKey })\n }, [queryClient, fromBalanceQueryKey, toBalanceQueryKey, address])\n const { data: capabilities } = useCapabilities({\n query: {\n enabled:\n connector &&\n (connector.id === 'coinbaseWalletSDK' || connector.id === 'coinbase')\n }\n })\n const hasAuxiliaryFundsSupport = Boolean(\n fromToken?.chainId\n ? capabilities?.[fromToken?.chainId]?.auxiliaryFunds?.supported\n : false\n )\n\n const isSvmSwap = fromChain?.vmType === 'svm' || toChain?.vmType === 'svm'\n const isBvmSwap = fromChain?.vmType === 'bvm' || toChain?.vmType === 'bvm'\n const linkedWallet = linkedWallets?.find(\n (linkedWallet) =>\n address ===\n (linkedWallet.vmType === 'evm'\n ? linkedWallet.address.toLowerCase()\n : linkedWallet.address) || linkedWallet.address === address\n )\n\n const isRecipientLinked =\n (recipient\n ? linkedWallets?.find((wallet) => wallet.address === recipient)\n : undefined) !== undefined\n\n const isValidFromAddress = isValidAddress(\n fromChain?.vmType,\n address ?? '',\n fromChain?.id,\n linkedWallet?.connector,\n connectorKeyOverrides\n )\n const fromAddressWithFallback = addressWithFallback(\n fromChain?.vmType,\n address,\n fromChain?.id,\n linkedWallet?.connector,\n connectorKeyOverrides\n )\n\n // Never allow the destination token's contract address as the recipient\n const recipientIsDestinationToken = Boolean(\n toChain &&\n toToken &&\n toToken.chainId === toChain.id &&\n addressesEqual(toChain.vmType ?? 'evm', recipient, toToken.address)\n )\n\n // Check custom recipients against the destination chain's known currencies\n const { isKnownTokenContract: recipientMatchesKnownToken } =\n useKnownTokenContract(\n toChain,\n customToAddress,\n customToAddress !== undefined && !recipientIsDestinationToken\n )\n\n // Only confirmed matches invalidate the recipient\n const recipientIsKnownTokenContract = recipientMatchesKnownToken\n\n const isValidToAddress =\n !recipientIsDestinationToken &&\n !recipientIsKnownTokenContract &&\n isValidAddress(toChain?.vmType, recipient ?? '', toChain?.id)\n\n const toAddressWithFallback = addressWithFallback(\n toChain?.vmType,\n recipientIsDestinationToken || recipientIsKnownTokenContract\n ? undefined\n : recipient,\n toChain?.id\n )\n\n const { displayName: toDisplayName } = useDisplayName(\n recipient,\n toChain?.vmType,\n toChain?.id\n )\n\n const [currentSlippageTolerance, setCurrentSlippageTolerance] = useState<\n string | undefined\n >(slippageTolerance)\n\n useEffect(() => {\n setCurrentSlippageTolerance(slippageTolerance)\n }, [slippageTolerance])\n\n const {\n required: gasTopUpRequired,\n amount: _gasTopUpAmount,\n amountUsd: _gasTopUpAmountUsd,\n balance: gasTopUpBalance\n } = useGasTopUpRequired(toChain, fromChain, toToken, recipient)\n\n // Retrieve the price of the `from` token\n const { data: fromTokenPriceData, isLoading: isLoadingFromTokenPrice } =\n useTokenPrice(\n relayClient?.baseApiUrl,\n {\n address: fromToken?.address ?? '',\n chainId: fromToken?.chainId ?? 0,\n referrer: relayClient?.source\n },\n {\n enabled: !!(fromToken?.address && fromToken.chainId),\n ...tokenPriceQueryOptions\n }\n )\n\n // Retrieve the price of the `to` token\n const { data: toTokenPriceData, isLoading: isLoadingToTokenPrice } =\n useTokenPrice(\n relayClient?.baseApiUrl,\n {\n address: toToken?.address ?? '',\n chainId: toToken?.chainId ?? 0,\n referrer: relayClient?.source\n },\n {\n enabled: !!(toToken?.address && toToken.chainId),\n ...tokenPriceQueryOptions\n }\n )\n\n const isFromNative = fromToken?.address === fromChain?.currency?.address\n\n const explicitDeposit = useExplicitDeposit(\n wallet,\n fromToken?.chainId,\n fromChain?.vmType,\n address\n )\n\n const shouldSetQuoteParameters = fromToken && toToken\n\n const quoteParameters: Parameters<typeof useQuote>['2'] =\n shouldSetQuoteParameters\n ? {\n user: fromAddressWithFallback,\n originChainId: fromToken.chainId,\n destinationChainId: toToken.chainId,\n originCurrency: fromToken.address,\n destinationCurrency: toToken.address,\n recipient: toAddressWithFallback,\n tradeType,\n appFees: providerOptionsContext.appFees,\n amount:\n tradeType === 'EXACT_INPUT'\n ? parseUnits(\n debouncedInputAmountValue,\n fromToken.decimals\n ).toString()\n : parseUnits(\n debouncedOutputAmountValue,\n toToken.decimals\n ).toString(),\n referrer: relayClient?.source ?? undefined,\n useDepositAddress: !fromChainWalletVMSupported,\n refundTo: fromToken?.chainId === 1337 ? address : undefined,\n slippageTolerance: slippageTolerance,\n topupGas: gasTopUpEnabled && gasTopUpRequired,\n ...(linkedWallet?.vmType === 'bvm' && wallet?.metadata?.publicKey\n ? {\n additionalData: {\n userPublicKey: wallet?.metadata?.publicKey\n }\n }\n : {}),\n ...(explicitDeposit !== undefined &&\n fromChain?.vmType === 'evm' && {\n explicitDeposit: explicitDeposit\n })\n }\n : undefined\n\n const onQuoteRequested: Parameters<typeof useQuote>['3'] = (\n options,\n config\n ) => {\n const interval = get15MinuteInterval()\n const quoteRequestId = sha256({ ...options, interval })\n onAnalyticEvent?.(EventNames.QUOTE_REQUESTED, {\n parameters: options,\n wallet_connector: linkedWallet?.connector,\n chain_id_in: options?.originChainId,\n chain_id_out: options?.destinationChainId,\n http_config: config,\n quote_request_id: quoteRequestId\n })\n }\n\n const onQuoteReceived: Parameters<typeof useQuote>['4'] = (\n { details, steps },\n options\n ) => {\n const interval = get15MinuteInterval()\n const quoteRequestId = sha256({ ...options, interval })\n onAnalyticEvent?.(EventNames.QUOTE_RECEIVED, {\n parameters: options,\n wallet_connector: linkedWallet?.connector,\n amount_in: details?.currencyIn?.amountFormatted,\n amount_in_raw: details?.currencyIn?.amount,\n currency_in: details?.currencyIn?.currency?.symbol,\n chain_id_in: details?.currencyIn?.currency?.chainId,\n amount_out: details?.currencyOut?.amountFormatted,\n amount_out_raw: details?.currencyOut?.amount,\n currency_out: details?.currencyOut?.currency?.symbol,\n chain_id_out: details?.currencyOut?.currency?.chainId,\n slippage_tolerance_destination_percentage:\n details?.slippageTolerance?.destination?.percent,\n slippage_tolerance_origin_percentage:\n details?.slippageTolerance?.origin?.percent,\n steps,\n quote_request_id: quoteRequestId,\n quote_id: steps ? extractQuoteId(steps) : undefined\n })\n }\n\n const quoteFetchingEnabled = Boolean(\n relayClient &&\n ((tradeType === 'EXACT_INPUT' &&\n debouncedInputAmountValue &&\n debouncedInputAmountValue.length > 0 &&\n Number(debouncedInputAmountValue) !== 0) ||\n (tradeType === 'EXPECTED_OUTPUT' &&\n debouncedOutputAmountValue &&\n debouncedOutputAmountValue.length > 0 &&\n Number(debouncedOutputAmountValue) !== 0)) &&\n fromToken !== undefined &&\n toToken !== undefined &&\n !transactionModalOpen &&\n !depositAddressModalOpen\n )\n\n const {\n data: _quoteData,\n error: quoteError,\n isFetching: isFetchingQuote,\n executeQuote: executeSwap,\n queryKey: quoteQueryKey\n } = useQuote(\n relayClient ? relayClient : undefined,\n wallet,\n quoteParameters,\n onQuoteRequested,\n onQuoteReceived,\n {\n refetchOnWindowFocus: false,\n enabled: quoteFetchingEnabled && quoteParameters !== undefined,\n refetchInterval:\n !transactionModalOpen &&\n !depositAddressModalOpen &&\n debouncedInputAmountValue === amountInputValue &&\n debouncedOutputAmountValue === amountOutputValue\n ? 12000\n : undefined\n },\n (e: any) => {\n const errorMessage = errorToJSON(\n e?.response?.data?.message ? new Error(e?.response?.data?.message) : e\n )\n const interval = get15MinuteInterval()\n const quoteRequestId = sha256({ ...quoteParameters, interval })\n onAnalyticEvent?.(EventNames.QUOTE_ERROR, {\n wallet_connector: linkedWallet?.connector,\n error_message: errorMessage,\n parameters: quoteParameters,\n quote_request_id: quoteRequestId,\n status_code: e?.response?.status ?? e?.status ?? ''\n })\n },\n undefined\n )\n\n const invalidateQuoteQuery = useCallback(() => {\n queryClient.invalidateQueries({ queryKey: quoteQueryKey })\n }, [queryClient, quoteQueryKey])\n let error =\n _quoteData || (isFetchingQuote && quoteFetchingEnabled) ? null : quoteError\n let quote = error ? undefined : _quoteData\n const gasTopUpAmount = quote?.details?.currencyGasTopup?.amount\n ? BigInt(quote?.details?.currencyGasTopup?.amount)\n : _gasTopUpAmount\n const gasTopUpAmountUsd =\n quote?.details?.currencyGasTopup?.amountUsd ?? _gasTopUpAmountUsd\n\n useDisconnected(address, () => {\n setCustomToAddress(undefined)\n })\n\n // Auto-select Lighter account when switching to LVM chain\n const isLighterChain = toChain?.vmType === 'lvm'\n const { data: connectedLighterAccount } = useLighterAccount(\n isLighterChain && address ? address : undefined\n )\n\n useEffect(() => {\n if (\n isLighterChain &&\n connectedLighterAccount?.index &&\n // Only auto-set if no valid Lighter address is already set\n (!customToAddress || !isLighterAddress(customToAddress))\n ) {\n setCustomToAddress(connectedLighterAccount.index.toString())\n }\n }, [isLighterChain, connectedLighterAccount, customToAddress])\n\n useEffect(() => {\n if (tradeType === 'EXACT_INPUT') {\n const amountOut = quote?.details?.currencyOut?.amount ?? ''\n setAmountOutputValue(\n amountOut !== ''\n ? formatUnits(\n BigInt(amountOut),\n Number(quote?.details?.currencyOut?.currency?.decimals ?? 18)\n )\n : ''\n )\n } else if (tradeType === 'EXPECTED_OUTPUT') {\n const amountIn = quote?.details?.currencyIn?.amount ?? ''\n setAmountInputValue(\n amountIn !== ''\n ? formatUnits(\n BigInt(amountIn),\n Number(quote?.details?.currencyIn?.currency?.decimals ?? 18)\n )\n : ''\n )\n }\n debouncedAmountInputControls.flush()\n debouncedAmountOutputControls.flush()\n }, [quote, tradeType])\n\n const feeBreakdown = useMemo(() => {\n const chains = relayClient?.chains\n const fromChain = chains?.find((chain) => chain.id === fromToken?.chainId)\n const toChain = chains?.find((chain) => chain.id === toToken?.chainId)\n return fromToken && toToken && fromChain && toChain && quote\n ? parseFees(toChain, fromChain, quote)\n : null\n }, [quote, fromToken, toToken, relayClient])\n\n const totalAmount = BigInt(quote?.details?.currencyIn?.amount ?? 0n)\n\n const hasInsufficientBalance = Boolean(\n !fromBalanceErrorFetching &&\n totalAmount &&\n address &&\n (fromBalance ?? 0n) < totalAmount &&\n !hasAuxiliaryFundsSupport &&\n fromChainWalletVMSupported\n )\n\n const fetchQuoteErrorMessage = error\n ? error?.message\n ? (error?.message as string)\n : 'Unknown Error'\n : null\n const fetchQuoteDataErrorMessage = error\n ? (error as any)?.response?.data?.message\n ? ((error as any)?.response?.data.message as string)\n : 'Unknown Error'\n : null\n const isInsufficientLiquidityError = Boolean(\n fetchQuoteErrorMessage?.includes('No quotes available')\n )\n const isCapacityExceededError =\n fetchQuoteDataErrorMessage?.includes(\n 'Amount is higher than the available liquidity'\n ) || fetchQuoteDataErrorMessage?.includes('Insufficient relayer liquidity')\n const isCouldNotExecuteError =\n fetchQuoteDataErrorMessage?.includes('Could not execute')\n const highRelayerServiceFee = isHighRelayerServiceFeeUsd(quote)\n const relayerFeeProportion = calculateRelayerFeeProportionUsd(quote)\n const timeEstimate = calculatePriceTimeEstimate(quote?.details)\n\n const recipientWalletSupportsChain = useIsWalletCompatible(\n toChain?.id,\n recipient,\n linkedWallets,\n onAnalyticEvent\n )\n\n const isSameCurrencySameRecipientSwap =\n fromToken?.address === toToken?.address &&\n fromToken?.chainId === toToken?.chainId &&\n address === recipient\n\n const ctaCopy = useSwapButtonCta({\n fromToken,\n toToken,\n multiWalletSupportEnabled,\n isValidFromAddress,\n fromChainWalletVMSupported,\n isValidToAddress,\n toChainWalletVMSupported,\n fromChain,\n toChain,\n isSameCurrencySameRecipientSwap,\n debouncedInputAmountValue,\n debouncedOutputAmountValue,\n hasInsufficientBalance,\n isInsufficientLiquidityError,\n quote,\n operation: quote?.details?.operation\n })\n\n usePreviousValueChange(\n isCapacityExceededError,\n !isFetchingQuote,\n (capacityExceeded) => {\n if (capacityExceeded) {\n onAnalyticEvent?.(EventNames.CTA_MAX_CAPACITY_PROMPTED, {\n inputAmount: debouncedInputAmountValue,\n outputAmount: debouncedOutputAmountValue\n })\n }\n }\n )\n\n const swap = useCallback(async () => {\n let submittedEvents: string[] = []\n\n const swapErrorHandler = (\n error: any,\n currentSteps?: Execute['steps'] | null\n ) => {\n const errorMessage = errorToJSON(\n error?.response?.data?.message\n ? new Error(error?.response?.data?.message)\n : error\n )\n if (\n error &&\n ((typeof error.message === 'string' &&\n error.message.toLowerCase().includes('reject')) ||\n (typeof error === 'string' &&\n error.toLowerCase().includes('reject')) ||\n (typeof error === 'string' && error.includes('Approval Denied')) ||\n (typeof error === 'string' && error.includes('denied transaction')) ||\n (typeof error.message === 'string' &&\n error.message.includes('Approval Denied')) ||\n (typeof error.message === 'string' &&\n error.message.includes('Plugin Closed')) ||\n (typeof error.message === 'string' &&\n error.message.includes('denied transaction')) ||\n (typeof error.message === 'string' &&\n error.message.includes('Failed to initialize request') &&\n fromChain?.id === 2741)) // Abstract @TODO: remove once privy improves handling rejected transactions\n ) {\n // Close the transaction modal if the user rejects the tx\n setTransactionModalOpen(false)\n onAnalyticEvent?.(EventNames.USER_REJECTED_WALLET, {\n error_message: errorMessage\n })\n return\n }\n\n const { step, stepItem } = getCurrentStep(currentSteps)\n const swapEventData = {\n ...getSwapEventData(\n quote?.details,\n quote?.fees,\n currentSteps ?? null,\n linkedWallet?.connector,\n quoteParameters\n ),\n error_message: errorMessage\n }\n const isApproval = step?.id === 'approve'\n const errorEvent = isApproval\n ? EventNames.APPROVAL_ERROR\n : EventNames.DEPOSIT_ERROR\n\n //Filter out receipt/deposit transaction errors, those are approval/deposit errors\n const isTransactionConfirmationError =\n (error &&\n typeof error.message === 'string' &&\n error.message.includes('TransactionConfirmationError')) ||\n (error.name && error.name.includes('TransactionConfirmationError'))\n if (\n stepItem?.receipt &&\n stepItem.check &&\n !isTransactionConfirmationError &&\n (typeof stepItem.receipt === 'object' && 'status' in stepItem.receipt\n ? stepItem.receipt.status !== 'reverted'\n : true) &&\n (!stepItem.checkStatus || stepItem.checkStatus !== 'unknown')\n ) {\n //In some cases there's a race condition where an error is thrown before the steps get a chance to call\n //the callback which triggers the success event. This is a workaround to ensure the success event is triggered when\n //we have a receipt and require a fill check if we haven't already send the success event.\n const successEvent = isApproval\n ? EventNames.APPROVAL_SUCCESS\n : EventNames.DEPOSIT_SUCCESS\n if (!submittedEvents.includes(successEvent)) {\n onAnalyticEvent?.(successEvent, swapEventData)\n submittedEvents.push(successEvent)\n //To preserve the order of events we need to delay sending the fill error event but mark that we did send it to avoid duplicates\n setTimeout(() => {\n onAnalyticEvent?.(EventNames.FILL_ERROR, swapEventData)\n }, 20)\n } else {\n onAnalyticEvent?.(EventNames.FILL_ERROR, swapEventData)\n }\n } else if (\n !stepItem?.receipt ||\n (typeof stepItem.receipt === 'object' &&\n 'status' in stepItem.receipt &&\n stepItem.receipt.status === 'reverted')\n ) {\n onAnalyticEvent?.(errorEvent, swapEventData)\n } else {\n onAnalyticEvent?.(EventNames.SWAP_ERROR, swapEventData)\n }\n\n haptic('error')\n setSwapError(errorMessage)\n onSwapError?.(errorMessage, { ...quote, steps: currentSteps } as Execute)\n }\n\n try {\n const swapEventData = getSwapEventData(\n quote?.details,\n quote?.fees,\n quote?.steps ? (quote?.steps as Execute['steps']) : null,\n linkedWallet?.connector,\n quoteParameters\n )\n onAnalyticEvent?.(EventNames.SWAP_CTA_CLICKED, swapEventData)\n setWaitingForSteps(true)\n\n if (!executeSwap) {\n throw new Error('Missing a quote')\n }\n\n if (!wallet && !walletClient.data) {\n throw new Error('Missing a wallet')\n }\n\n if (recipientMatchesKnownToken) {\n throw new Error('Recipient address is a token contract, not a wallet')\n }\n\n setSteps(quote?.steps as Execute['steps'])\n setQuoteInProgress(quote as Execute)\n setTransactionModalOpen(true)\n\n const _wallet =\n wallet ?? adaptViemWallet(walletClient.data as WalletClient)\n\n const activeWalletChainId = await _wallet?.getChainId()\n const activeWalletChain = relayClient?.chains?.find(\n (chain) => chain.id === activeWalletChainId\n )\n let targetChainId = fromToken?.chainId\n //Special case for Hyperliquid, to sign txs on an evm chain\n if (fromToken?.chainId === 1337) {\n targetChainId =\n activeWalletChain?.vmType !== 'evm' ? 1 : activeWalletChainId\n }\n\n if (fromToken && targetChainId && targetChainId !== activeWalletChainId) {\n onAnalyticEvent?.(EventNames.SWAP_SWITCH_NETWORK, {\n activeWalletChainId,\n ...swapEventData\n })\n await _wallet?.switchChain(targetChainId)\n }\n\n let _currentSteps: Execute['steps'] | undefined = undefined\n\n const execPromise = executeSwap(({ steps: currentSteps }) => {\n setSteps(currentSteps)\n _currentSteps = currentSteps\n\n const { step, stepItem } = getCurrentStep(currentSteps)\n const swapEventData = getSwapEventData(\n quote?.details,\n quote?.fees,\n currentSteps,\n linkedWallet?.connector,\n quoteParameters\n )\n if (step && stepItem) {\n //@ts-ignore\n const isApproval = step.id === 'approve' || step.id === 'approval'\n let submittedEvent = isApproval\n ? EventNames.APPROVAL_SUBMITTED\n : EventNames.DEPOSIT_SUBMITTED\n const successEvent = isApproval\n ? EventNames.APPROVAL_SUCCESS\n : EventNames.DEPOSIT_SUCCESS\n const isBatchTransaction = Boolean(\n Array.isArray(step.items) &&\n step.items.length > 1 &&\n wallet?.handleBatchTransactionStep\n )\n if (!isApproval && isBatchTransaction) {\n submittedEvent = EventNames.BATCH_TX_SUBMITTED\n }\n if (\n !submittedEvents.includes(submittedEvent) &&\n !stepItem.receipt &&\n stepItem?.txHashes &&\n stepItem?.txHashes?.length > 0\n ) {\n submittedEvents.push(submittedEvent)\n onAnalyticEvent?.(submittedEvent, swapEventData)\n } else if (\n !submittedEvents.includes(successEvent) &&\n ((stepItem.receipt &&\n !(\n typeof stepItem.receipt === 'object' &&\n 'status' in stepItem.receipt &&\n stepItem.receipt.status === 'reverted'\n )) ||\n stepItem.checkStatus === 'pending')\n ) {\n onAnalyticEvent?.(successEvent, swapEventData)\n submittedEvents.push(successEvent)\n }\n\n if (\n stepItem.status === 'complete' &&\n stepItem.check &&\n !submittedEvents.includes(EventNames.FILL_SUCCESS)\n ) {\n //Sometimes a fill may be quicker than the tx receipt is available, so we need to handle this scenario\n if (\n !submittedEvents.includes(EventNames.DEPOSIT_SUCCESS) &&\n !isBatchTransaction\n ) {\n onAnalyticEvent?.(EventNames.DEPOSIT_SUCCESS, swapEventData)\n submittedEvents.push(EventNames.DEPOSIT_SUCCESS)\n //To preserve the order of events we need to delay sending the fill success event but mark that we did send it to avoid duplicates\n setTimeout(() => {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }, 20)\n } else {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }\n submittedEvents.push(EventNames.FILL_SUCCESS)\n }\n } else if (\n currentSteps?.every((step) =>\n step.items?.every((item) => item.status === 'complete')\n ) &&\n !submittedEvents.includes(EventNames.FILL_SUCCESS)\n ) {\n //Sometimes a fill may be quicker than the tx receipt is available, so we need to handle this scenario\n if (\n !submittedEvents.includes(EventNames.DEPOSIT_SUCCESS) &&\n !submittedEvents.includes(EventNames.BATCH_TX_SUBMITTED)\n ) {\n onAnalyticEvent?.(EventNames.DEPOSIT_SUCCESS, swapEventData)\n submittedEvents.push(EventNames.DEPOSIT_SUCCESS)\n //To preserve the order of events we need to delay sending the fill success event but mark that we did send it to avoid duplicates\n setTimeout(() => {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }, 20)\n } else {\n onAnalyticEvent?.(EventNames.FILL_SUCCESS, swapEventData)\n }\n submittedEvents.push(EventNames.FILL_SUCCESS)\n }\n })\n\n // Store the AbortController for potential cancellation immediately\n if (\n execPromise &&\n typeof execPromise === 'object' &&\n 'abortController' in execPromise\n ) {\n setAbortController((execPromise as any).abortController)\n }\n\n execPromise\n ?.catch((error: any) => {\n swapErrorHandler(error, _currentSteps)\n })\n .finally(() => {\n setWaitingForSteps(false)\n setAbortController(null)\n invalidateBalanceQueries()\n })\n } catch (error: any) {\n swapErrorHandler(error)\n setWaitingForSteps(false)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n relayClient,\n address,\n connector,\n wallet,\n walletClient,\n fromToken,\n toToken,\n customToAddress,\n recipient,\n debouncedInputAmountValue,\n debouncedOutputAmountValue,\n tradeType,\n waitingForSteps,\n executeSwap,\n setSteps,\n setQuoteInProgress,\n invalidateBalanceQueries,\n linkedWallet,\n abortController,\n recipientMatchesKnownToken\n ])\n\n return (\n <>\n {children({\n quote,\n steps,\n setSteps,\n swap,\n transactionModalOpen,\n feeBreakdown,\n fromToken,\n setFromToken,\n toToken,\n setToToken,\n swapError,\n error,\n toDisplayName,\n address,\n recipient,\n customToAddress,\n setCustomToAddress,\n tradeType,\n setTradeType,\n details,\n isSameCurrencySameRecipientSwap,\n debouncedInputAmountValue,\n debouncedAmountInputControls,\n setAmountInputValue,\n amountInputValue,\n amountOutputValue,\n debouncedOutputAmountValue,\n debouncedAmountOutputControls,\n setAmountOutputValue,\n toBalance,\n toBalancePending,\n isLoadingToBalance,\n isFetchingQuote,\n isLoadingFromBalance,\n fromBalance,\n fromBalancePending,\n highRelayerServiceFee,\n relayerFeeProportion,\n hasInsufficientBalance,\n isInsufficientLiquidityError,\n isCapacityExceededError,\n isCouldNotExecuteError,\n ctaCopy,\n isFromNative,\n slippageTolerance: currentSlippageTolerance,\n timeEstimate,\n isSvmSwap,\n isBvmSwap,\n isValidFromAddress,\n isValidToAddress,\n supportedWalletVMs,\n fromChainWalletVMSupported,\n toChainWalletVMSupported,\n isRecipientLinked,\n recipientWalletSupportsChain,\n gasTopUpEnabled,\n setGasTopUpEnabled,\n gasTopUpBalance,\n gasTopUpRequired,\n gasTopUpAmount,\n gasTopUpAmountUsd,\n invalidateBalanceQueries,\n invalidateQuoteQuery,\n setDetails,\n setSwapError,\n quoteInProgress,\n setQuoteInProgress,\n linkedWallet,\n quoteParameters,\n abortController,\n fromTokenPriceData,\n toTokenPriceData,\n isLoadingFromTokenPrice,\n isLoadingToTokenPrice\n })}\n </>\n )\n}\n\nexport default SwapWidgetRenderer\n"]}
@@ -35,7 +35,6 @@ const WidgetErrorWell = ({ error, hasInsufficientBalance, quote, currency, relay
35
35
  if (!recipientWalletSupportsChain &&
36
36
  recipient &&
37
37
  !(0, relay_sdk_1.isDeadAddress)(recipient) &&
38
- recipient !== relay_sdk_1.tronDeadAddress &&
39
38
  toChainWalletVMSupported &&
40
39
  (!recipientLinkedWallet || recipientLinkedWallet.vmType === toChainVmType)) {
41
40
  return ((0, jsx_runtime_1.jsxs)(index_js_1.Flex, { align: "center", className: (0, cn_js_1.cn)('relay:gap-2 relay:p-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3', containerClassName), id: 'widget-error-well-section', children: [(0, jsx_runtime_1.jsx)(index_js_1.Box, { className: "relay:text-[color:var(--relay-colors-amber9)]", children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: faExclamationCircle_1.faExclamationCircle, width: 16 }) }), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle3", color: "warning", children: "Your selected wallet doesn't support the destination chain. Please choose a different wallet." })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetErrorWell.js","sourceRoot":"","sources":["../../../../src/components/widgets/WidgetErrorWell.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type Execute } from '@relayprotocol/relay-sdk'\nimport { isDeadAddress, tronDeadAddress } from '@relayprotocol/relay-sdk'\nimport { type FC } from 'react'\nimport { Box, Flex, Text } from '../primitives/index.js'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle'\nimport { type Currency } from '../../constants/currencies.js'\nimport Tooltip from '../primitives/Tooltip.js'\nimport { useMediaQuery } from 'usehooks-ts'\nimport { cn } from '../../utils/cn.js'\nimport type { QuoteResponse } from '@relayprotocol/relay-kit-hooks'\nimport type { LinkedWallet } from '../../types/index.js'\nimport { faRoute } from '@fortawesome/free-solid-svg-icons/faRoute'\n\ntype Props = {\n error: any\n hasInsufficientBalance: boolean\n quote?: Partial<Execute> | QuoteResponse\n currency?: Currency\n relayerFeeProportion?: bigint | 0\n isHighRelayerServiceFee?: boolean\n isCapacityExceededError?: boolean\n isCouldNotExecuteError?: boolean\n containerClassName?: string\n recipientWalletSupportsChain?: boolean | null\n recipient?: string\n toChainWalletVMSupported?: boolean\n recipientLinkedWallet?: LinkedWallet\n toChainVmType?: string\n}\n\nexport const WidgetErrorWell: FC<Props> = ({\n error,\n hasInsufficientBalance,\n quote,\n currency,\n relayerFeeProportion,\n isHighRelayerServiceFee,\n isCapacityExceededError,\n isCouldNotExecuteError,\n containerClassName,\n recipientWalletSupportsChain,\n recipient,\n toChainWalletVMSupported,\n recipientLinkedWallet,\n toChainVmType\n}) => {\n const isSmallDevice = useMediaQuery('(max-width: 600px)')\n const fetchQuoteErrorMessage = error\n ? error?.response?.data?.message\n ? error?.response?.data.message === 'processing response error'\n ? 'Amount is higher than the available liquidity.'\n : (error?.response?.data.message as string)\n : 'Unknown Error'\n : null\n const isHighPriceImpact = Number(quote?.details?.totalImpact?.percent) < -3.5\n const totalImpactUsd = quote?.details?.totalImpact?.usd\n const showHighPriceImpactWarning =\n isHighPriceImpact && totalImpactUsd && Number(totalImpactUsd) <= -10\n const isInsufficientLiquidityError =\n fetchQuoteErrorMessage?.includes('No quotes found')\n const isMissingUsdTokenPrice =\n quote?.details?.currencyOut &&\n (quote?.details?.currencyOut?.amountUsd === undefined ||\n quote?.details?.currencyOut?.amountUsd === '0')\n const isNoAvailableRoutesError =\n error?.response?.data?.errorCode === 'NO_SWAP_ROUTES_FOUND' ||\n error?.response?.data?.errorCode === 'UNSUPPORTED_ROUTE'\n\n if (isInsufficientLiquidityError || isNoAvailableRoutesError) {\n return (\n <Flex\n align=\"center\"\n justify=\"between\"\n className=\"relay:gap-2 relay:p-3 relay:w-full relay:rounded-[var(--relay-radii-widget-card-border-radius)] relay:bg-[var(--relay-colors-widget-background)] relay:border-widget-card relay:overflow-hidden relay:mb-[var(--relay-spacing-widget-card-section-gutter)]\"\n >\n <Text style=\"subtitle2\">Route</Text>\n <Flex align=\"center\" className=\"relay:gap-1\">\n <Text style=\"subtitle2\" color=\"subtle\">\n No available routes\n </Text>\n <Box className=\"relay:text-[color:var(--relay-colors-gray11)] relay:w-[14px] relay:shrink-0\">\n <FontAwesomeIcon icon={faRoute} width={14} />\n </Box>\n </Flex>\n </Flex>\n )\n }\n\n /*\n * Show wallet incompatibility warning when:\n * - Wallet doesn't support destination chain\n * - Valid recipient address (not dead/burn address)\n * - Destination chain supports wallet's VM type\n * - Wallet VM type matches destination chain VM\n */\n if (\n !recipientWalletSupportsChain &&\n recipient &&\n !isDeadAddress(recipient) &&\n recipient !== tronDeadAddress &&\n toChainWalletVMSupported &&\n (!recipientLinkedWallet || recipientLinkedWallet.vmType === toChainVmType)\n ) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:p-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber9)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Your selected wallet doesn't support the destination chain. Please\n choose a different wallet.\n </Text>\n </Flex>\n )\n }\n\n if (fetchQuoteErrorMessage && !quote) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:p-3 relay:bg-[var(--relay-colors-red2)] relay:border relay:border-solid relay:border-[var(--relay-colors-red4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-red10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"error\">\n {fetchQuoteErrorMessage}\n </Text>\n </Flex>\n )\n }\n\n if (hasInsufficientBalance) {\n return null\n }\n\n if (relayerFeeProportion && relayerFeeProportion >= 40n) {\n return (\n <Tooltip\n side={isSmallDevice ? 'top' : 'right'}\n content={\n <Text\n style=\"subtitle3\"\n className=\"relay:max-w-[215px] relay:inline-block\"\n >\n We recommend increasing the amount or waiting for the gas fee to be\n lower.\n </Text>\n }\n >\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-3 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Fees exceed 40% of the received amount.\n </Text>\n </Flex>\n </Tooltip>\n )\n }\n\n if (showHighPriceImpactWarning) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-2 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n The price impact is currently high (\n {quote?.details?.totalImpact?.percent}%).\n </Text>\n </Flex>\n )\n }\n\n if (isMissingUsdTokenPrice) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-2 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Unable to detect token price. Please confirm expected output before\n submitting.\n </Text>\n </Flex>\n )\n }\n\n if (isHighRelayerServiceFee) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-3 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Due to high demand, Relayer fees have temporarily been increased.\n </Text>\n </Flex>\n )\n }\n return null\n}\n"]}
1
+ {"version":3,"file":"WidgetErrorWell.js","sourceRoot":"","sources":["../../../../src/components/widgets/WidgetErrorWell.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type Execute } from '@relayprotocol/relay-sdk'\nimport { isDeadAddress } from '@relayprotocol/relay-sdk'\nimport { type FC } from 'react'\nimport { Box, Flex, Text } from '../primitives/index.js'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle'\nimport { type Currency } from '../../constants/currencies.js'\nimport Tooltip from '../primitives/Tooltip.js'\nimport { useMediaQuery } from 'usehooks-ts'\nimport { cn } from '../../utils/cn.js'\nimport type { QuoteResponse } from '@relayprotocol/relay-kit-hooks'\nimport type { LinkedWallet } from '../../types/index.js'\nimport { faRoute } from '@fortawesome/free-solid-svg-icons/faRoute'\n\ntype Props = {\n error: any\n hasInsufficientBalance: boolean\n quote?: Partial<Execute> | QuoteResponse\n currency?: Currency\n relayerFeeProportion?: bigint | 0\n isHighRelayerServiceFee?: boolean\n isCapacityExceededError?: boolean\n isCouldNotExecuteError?: boolean\n containerClassName?: string\n recipientWalletSupportsChain?: boolean | null\n recipient?: string\n toChainWalletVMSupported?: boolean\n recipientLinkedWallet?: LinkedWallet\n toChainVmType?: string\n}\n\nexport const WidgetErrorWell: FC<Props> = ({\n error,\n hasInsufficientBalance,\n quote,\n currency,\n relayerFeeProportion,\n isHighRelayerServiceFee,\n isCapacityExceededError,\n isCouldNotExecuteError,\n containerClassName,\n recipientWalletSupportsChain,\n recipient,\n toChainWalletVMSupported,\n recipientLinkedWallet,\n toChainVmType\n}) => {\n const isSmallDevice = useMediaQuery('(max-width: 600px)')\n const fetchQuoteErrorMessage = error\n ? error?.response?.data?.message\n ? error?.response?.data.message === 'processing response error'\n ? 'Amount is higher than the available liquidity.'\n : (error?.response?.data.message as string)\n : 'Unknown Error'\n : null\n const isHighPriceImpact = Number(quote?.details?.totalImpact?.percent) < -3.5\n const totalImpactUsd = quote?.details?.totalImpact?.usd\n const showHighPriceImpactWarning =\n isHighPriceImpact && totalImpactUsd && Number(totalImpactUsd) <= -10\n const isInsufficientLiquidityError =\n fetchQuoteErrorMessage?.includes('No quotes found')\n const isMissingUsdTokenPrice =\n quote?.details?.currencyOut &&\n (quote?.details?.currencyOut?.amountUsd === undefined ||\n quote?.details?.currencyOut?.amountUsd === '0')\n const isNoAvailableRoutesError =\n error?.response?.data?.errorCode === 'NO_SWAP_ROUTES_FOUND' ||\n error?.response?.data?.errorCode === 'UNSUPPORTED_ROUTE'\n\n if (isInsufficientLiquidityError || isNoAvailableRoutesError) {\n return (\n <Flex\n align=\"center\"\n justify=\"between\"\n className=\"relay:gap-2 relay:p-3 relay:w-full relay:rounded-[var(--relay-radii-widget-card-border-radius)] relay:bg-[var(--relay-colors-widget-background)] relay:border-widget-card relay:overflow-hidden relay:mb-[var(--relay-spacing-widget-card-section-gutter)]\"\n >\n <Text style=\"subtitle2\">Route</Text>\n <Flex align=\"center\" className=\"relay:gap-1\">\n <Text style=\"subtitle2\" color=\"subtle\">\n No available routes\n </Text>\n <Box className=\"relay:text-[color:var(--relay-colors-gray11)] relay:w-[14px] relay:shrink-0\">\n <FontAwesomeIcon icon={faRoute} width={14} />\n </Box>\n </Flex>\n </Flex>\n )\n }\n\n /*\n * Show wallet incompatibility warning when:\n * - Wallet doesn't support destination chain\n * - Valid recipient address (not dead/burn address)\n * - Destination chain supports wallet's VM type\n * - Wallet VM type matches destination chain VM\n */\n if (\n !recipientWalletSupportsChain &&\n recipient &&\n !isDeadAddress(recipient) &&\n toChainWalletVMSupported &&\n (!recipientLinkedWallet || recipientLinkedWallet.vmType === toChainVmType)\n ) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:p-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber9)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Your selected wallet doesn't support the destination chain. Please\n choose a different wallet.\n </Text>\n </Flex>\n )\n }\n\n if (fetchQuoteErrorMessage && !quote) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:p-3 relay:bg-[var(--relay-colors-red2)] relay:border relay:border-solid relay:border-[var(--relay-colors-red4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-red10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"error\">\n {fetchQuoteErrorMessage}\n </Text>\n </Flex>\n )\n }\n\n if (hasInsufficientBalance) {\n return null\n }\n\n if (relayerFeeProportion && relayerFeeProportion >= 40n) {\n return (\n <Tooltip\n side={isSmallDevice ? 'top' : 'right'}\n content={\n <Text\n style=\"subtitle3\"\n className=\"relay:max-w-[215px] relay:inline-block\"\n >\n We recommend increasing the amount or waiting for the gas fee to be\n lower.\n </Text>\n }\n >\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-3 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Fees exceed 40% of the received amount.\n </Text>\n </Flex>\n </Tooltip>\n )\n }\n\n if (showHighPriceImpactWarning) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-2 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n The price impact is currently high (\n {quote?.details?.totalImpact?.percent}%).\n </Text>\n </Flex>\n )\n }\n\n if (isMissingUsdTokenPrice) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-2 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Unable to detect token price. Please confirm expected output before\n submitting.\n </Text>\n </Flex>\n )\n }\n\n if (isHighRelayerServiceFee) {\n return (\n <Flex\n align=\"center\"\n className={cn(\n 'relay:gap-2 relay:py-3 relay:px-3 relay:bg-[var(--relay-colors-amber2)] relay:border relay:border-solid relay:border-[var(--relay-colors-amber4)] relay:rounded-[12px] relay:mb-3',\n containerClassName\n )}\n id={'widget-error-well-section'}\n >\n <Box className=\"relay:text-[color:var(--relay-colors-amber10)]\">\n <FontAwesomeIcon icon={faExclamationCircle} width={16} />\n </Box>\n <Text style=\"subtitle3\" color=\"warning\">\n Due to high demand, Relayer fees have temporarily been increased.\n </Text>\n </Flex>\n )\n }\n return null\n}\n"]}
@@ -10,6 +10,7 @@ exports.UnsupportedDepositAddressChainIds = [
10
10
  1996,
11
11
  1514,
12
12
  660279,
13
- 224235520
13
+ 224235520,
14
+ 537724
14
15
  ];
15
16
  //# sourceMappingURL=depositAddresses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"depositAddresses.js","sourceRoot":"","sources":["../../../src/constants/depositAddresses.ts"],"names":[],"mappings":";;;AAAa,QAAA,iCAAiC,GAAG;IAC/C,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,SAAS;CACV,CAAA","sourcesContent":["export const UnsupportedDepositAddressChainIds = [\n 984122, //forma\n 1625, //gravity\n 2911, //hychain\n 17071, //onchainpoints\n 7865, //powerloom\n 1996, //sanko\n 1514, //story\n 660279, //xai\n 224235520 //ton\n]\n"]}
1
+ {"version":3,"file":"depositAddresses.js","sourceRoot":"","sources":["../../../src/constants/depositAddresses.ts"],"names":[],"mappings":";;;AAAa,QAAA,iCAAiC,GAAG;IAC/C,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,SAAS;IACT,MAAM;CACP,CAAA","sourcesContent":["export const UnsupportedDepositAddressChainIds = [\n 984122, //forma\n 1625, //gravity\n 2911, //hychain\n 17071, //onchainpoints\n 7865, //powerloom\n 1996, //sanko\n 1514, //story\n 660279, //xai\n 224235520, //ton\n 537724 //xrp\n]\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NormalizedWalletName = exports.WalletChainIncompatible = exports.WalletChainRestricted = void 0;
4
4
  exports.WalletChainRestricted = {
5
5
  phantom: [1, 8453, 792703809, 137, 8253038, 101, 10143, 143, 999],
6
- backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 9286185, 792703809],
6
+ backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 792703809],
7
7
  magiceden: [
8
8
  1, 137, 8453, 33139, 8253038, 792703809, 1329, 2741, 42161, 80094, 56, 43114
9
9
  ],
@@ -22,6 +22,7 @@ exports.WalletChainIncompatible = {
22
22
  coinbase: [4663]
23
23
  };
24
24
  exports.NormalizedWalletName = {
25
+ backpackeclipse: 'backpack',
25
26
  phantomevm: 'phantom',
26
27
  phantombtc: 'phantom',
27
28
  magicedensol: 'magiceden',
@@ -1 +1 @@
1
- {"version":3,"file":"walletCompatibility.js","sourceRoot":"","sources":["../../../src/constants/walletCompatibility.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAA6B;IAC7D,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;IACrE,SAAS,EAAE;QACT,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK;KAC7E;IACD,OAAO,EAAE;QACP,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;QACxE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACnC;IACD,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;CAC/D,CAAA;AAEY,QAAA,uBAAuB,GAA6B;IAC/D,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC;CACjB,CAAA;AAEY,QAAA,oBAAoB,GAA2B;IAC1D,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,WAAW;IAC5B,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,UAAU;CACpB,CAAA","sourcesContent":["export const WalletChainRestricted: Record<string, number[]> = {\n phantom: [1, 8453, 792703809, 137, 8253038, 101, 10143, 143, 999],\n backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 9286185, 792703809],\n magiceden: [\n 1, 137, 8453, 33139, 8253038, 792703809, 1329, 2741, 42161, 80094, 56, 43114\n ],\n uniswap: [\n 1, 130, 42161, 43114, 8453, 81457, 56, 42220, 10, 137, 480, 324, 7777777,\n 4663, 59144, 143, 1868, 4326, 4217\n ],\n abstract: [2741],\n ronin: [1, 56, 137, 42161, 8453, 2020],\n porto: [8453, 42161, 56, 42220, 1, 10, 137, 80094],\n robinhood: [1, 10, 137, 4663, 8453, 42161, 8253038, 792703809]\n}\n\nexport const WalletChainIncompatible: Record<string, number[]> = {\n binance: [7777777, 8453],\n binanceus: [7777777, 8453],\n coinbase: [4663]\n}\n\nexport const NormalizedWalletName: Record<string, string> = {\n phantomevm: 'phantom',\n phantombtc: 'phantom',\n magicedensol: 'magiceden',\n roninwallet: 'ronin',\n robinhoodwallet: 'robinhood',\n uniswapwallet: 'uniswap',\n portoevm: 'porto',\n trusttron: 'trust',\n coinbasewalletevm: 'coinbase',\n baseevm: 'coinbase'\n}\n"]}
1
+ {"version":3,"file":"walletCompatibility.js","sourceRoot":"","sources":["../../../src/constants/walletCompatibility.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAA6B;IAC7D,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;IAC5D,SAAS,EAAE;QACT,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK;KAC7E;IACD,OAAO,EAAE;QACP,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;QACxE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KACnC;IACD,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;CAC/D,CAAA;AAEY,QAAA,uBAAuB,GAA6B;IAC/D,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC;CACjB,CAAA;AAEY,QAAA,oBAAoB,GAA2B;IAC1D,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,WAAW;IAC5B,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,UAAU;CACpB,CAAA","sourcesContent":["export const WalletChainRestricted: Record<string, number[]> = {\n phantom: [1, 8453, 792703809, 137, 8253038, 101, 10143, 143, 999],\n backpack: [1, 8453, 137, 42161, 10, 10143, 80094, 792703809],\n magiceden: [\n 1, 137, 8453, 33139, 8253038, 792703809, 1329, 2741, 42161, 80094, 56, 43114\n ],\n uniswap: [\n 1, 130, 42161, 43114, 8453, 81457, 56, 42220, 10, 137, 480, 324, 7777777,\n 4663, 59144, 143, 1868, 4326, 4217\n ],\n abstract: [2741],\n ronin: [1, 56, 137, 42161, 8453, 2020],\n porto: [8453, 42161, 56, 42220, 1, 10, 137, 80094],\n robinhood: [1, 10, 137, 4663, 8453, 42161, 8253038, 792703809]\n}\n\nexport const WalletChainIncompatible: Record<string, number[]> = {\n binance: [7777777, 8453],\n binanceus: [7777777, 8453],\n coinbase: [4663]\n}\n\nexport const NormalizedWalletName: Record<string, string> = {\n backpackeclipse: 'backpack',\n phantomevm: 'phantom',\n phantombtc: 'phantom',\n magicedensol: 'magiceden',\n roninwallet: 'ronin',\n robinhoodwallet: 'robinhood',\n uniswapwallet: 'uniswap',\n portoevm: 'porto',\n trusttron: 'trust',\n coinbasewalletevm: 'coinbase',\n baseevm: 'coinbase'\n}\n"]}
@@ -8,6 +8,7 @@ const solana_js_1 = require("../utils/solana.js");
8
8
  const tron_js_1 = require("./tron.js");
9
9
  const ton_js_1 = require("./ton.js");
10
10
  const lighter_js_1 = require("./lighter.js");
11
+ const xrp_js_1 = require("./xrp.js");
11
12
  const isWalletVmTypeCompatible = (walletVmType, chainVmType) => {
12
13
  if (!walletVmType || !chainVmType) {
13
14
  return false;
@@ -65,6 +66,9 @@ const isValidAddress = (vmType, address, chainId, connector, connectorKeyOverrid
65
66
  else if (vmType === 'lvm') {
66
67
  return (0, lighter_js_1.isLighterAddress)(address);
67
68
  }
69
+ else if (vmType === 'xrpvm') {
70
+ return (0, xrp_js_1.isXrpAddress)(address);
71
+ }
68
72
  }
69
73
  return false;
70
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/utils/address.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getDeadAddress,\n type ChainVM,\n type RelayChain\n} from '@relayprotocol/relay-sdk'\nimport { isAddress } from 'viem'\nimport { isBitcoinAddress } from '../utils/bitcoin.js'\nimport {\n eclipse,\n eclipseWallets,\n isSolanaAddress,\n solana\n} from '../utils/solana.js'\nimport type { LinkedWallet } from '../types/index.js'\nimport type { RelayKitProviderProps } from '../providers/RelayKitProvider.js'\nimport { isTronAddress } from './tron.js'\nimport { isTonAddress } from './ton.js'\nimport { isLighterAddress } from './lighter.js'\n\nexport const isWalletVmTypeCompatible = (\n walletVmType?: ChainVM,\n chainVmType?: ChainVM\n) => {\n if (!walletVmType || !chainVmType) {\n return false\n }\n\n if (walletVmType === chainVmType) {\n return true\n }\n\n // Hyperliquid uses EVM-style addresses/wallets for signing.\n return chainVmType === 'hypevm' && walletVmType === 'evm'\n}\n\nexport const isChainVmTypeSupported = (\n chainVmType: ChainVM | undefined,\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm'>[]\n) => {\n if (!chainVmType) {\n return true\n }\n\n if (chainVmType === 'hypevm') {\n return supportedWalletVMs.includes('evm')\n }\n\n return supportedWalletVMs.includes(\n chainVmType as Omit<ChainVM, 'hypevm' | 'lvm'>\n )\n}\n\nexport const isValidAddress = (\n vmType?: ChainVM,\n address?: string,\n chainId?: number,\n connector?: string,\n connectorKeyOverrides?: RelayKitProviderProps['options']['vmConnectorKeyOverrides']\n) => {\n let eclipseConnectorKeys: string[] | undefined = undefined\n if (connectorKeyOverrides && connectorKeyOverrides[eclipse.id]) {\n eclipseConnectorKeys = connectorKeyOverrides[eclipse.id]\n } else if (vmType === 'svm') {\n eclipseConnectorKeys = eclipseWallets\n }\n\n if (address) {\n if (vmType === 'evm' || vmType === 'hypevm' || !vmType) {\n return isAddress(address)\n } else if (vmType === 'svm') {\n if (chainId && connector) {\n if (\n chainId === eclipse.id &&\n !eclipseConnectorKeys!.includes(connector.toLowerCase())\n ) {\n return false\n }\n if (\n chainId === solana.id &&\n eclipseConnectorKeys!.includes(connector.toLowerCase())\n ) {\n return false\n }\n }\n\n return isSolanaAddress(address)\n } else if (vmType === 'bvm') {\n return isBitcoinAddress(address)\n } else if (vmType === 'tvm') {\n return isTronAddress(address)\n } else if (vmType === 'tonvm') {\n return isTonAddress(address)\n } else if (vmType === 'lvm') {\n return isLighterAddress(address)\n }\n }\n return false\n}\n\nexport const addressWithFallback = (\n vmType?: ChainVM,\n address?: string,\n chainId?: number,\n connector?: string,\n connectorKeyOverrides?: Parameters<typeof isValidAddress>['4']\n) => {\n return address &&\n isValidAddress(\n vmType ?? 'evm',\n address,\n chainId,\n connector,\n connectorKeyOverrides\n )\n ? address\n : getDeadAddress(vmType, chainId)\n}\n\nexport function findSupportedWallet(\n chain: RelayChain,\n currentAddress: string | undefined,\n linkedWallets: LinkedWallet[],\n connectorKeyOverrides?: Parameters<typeof isValidAddress>['4']\n): string | undefined {\n const currentWallet = linkedWallets.find(\n (wallet) => wallet.address === currentAddress\n )\n if (\n !isWalletVmTypeCompatible(currentWallet?.vmType, chain.vmType) ||\n (currentWallet &&\n !isValidAddress(\n chain.vmType,\n currentWallet.address,\n chain.id,\n currentWallet.connector,\n connectorKeyOverrides\n ))\n ) {\n const supportedWallet = linkedWallets.find((wallet) =>\n isValidAddress(\n chain.vmType,\n wallet.address,\n chain.id,\n wallet.connector,\n connectorKeyOverrides\n )\n )\n return supportedWallet?.address\n }\n return undefined\n}\n\nexport function addressesEqual(\n vmType: ChainVM,\n a?: string,\n b?: string\n): boolean {\n if (!a || !b) return false\n if (vmType === 'evm' || vmType === 'hypevm') {\n return a.toLowerCase() === b.toLowerCase()\n }\n return a === b\n}\n"]}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/utils/address.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getDeadAddress,\n type ChainVM,\n type RelayChain\n} from '@relayprotocol/relay-sdk'\nimport { isAddress } from 'viem'\nimport { isBitcoinAddress } from '../utils/bitcoin.js'\nimport {\n eclipse,\n eclipseWallets,\n isSolanaAddress,\n solana\n} from '../utils/solana.js'\nimport type { LinkedWallet } from '../types/index.js'\nimport type { RelayKitProviderProps } from '../providers/RelayKitProvider.js'\nimport { isTronAddress } from './tron.js'\nimport { isTonAddress } from './ton.js'\nimport { isLighterAddress } from './lighter.js'\nimport { isXrpAddress } from './xrp.js'\n\nexport const isWalletVmTypeCompatible = (\n walletVmType?: ChainVM,\n chainVmType?: ChainVM\n) => {\n if (!walletVmType || !chainVmType) {\n return false\n }\n\n if (walletVmType === chainVmType) {\n return true\n }\n\n // Hyperliquid uses EVM-style addresses/wallets for signing.\n return chainVmType === 'hypevm' && walletVmType === 'evm'\n}\n\nexport const isChainVmTypeSupported = (\n chainVmType: ChainVM | undefined,\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm' | 'xrpvm'>[]\n) => {\n if (!chainVmType) {\n return true\n }\n\n if (chainVmType === 'hypevm') {\n return supportedWalletVMs.includes('evm')\n }\n\n return supportedWalletVMs.includes(\n chainVmType as Omit<ChainVM, 'hypevm' | 'lvm' | 'xrpvm'>\n )\n}\n\nexport const isValidAddress = (\n vmType?: ChainVM,\n address?: string,\n chainId?: number,\n connector?: string,\n connectorKeyOverrides?: RelayKitProviderProps['options']['vmConnectorKeyOverrides']\n) => {\n let eclipseConnectorKeys: string[] | undefined = undefined\n if (connectorKeyOverrides && connectorKeyOverrides[eclipse.id]) {\n eclipseConnectorKeys = connectorKeyOverrides[eclipse.id]\n } else if (vmType === 'svm') {\n eclipseConnectorKeys = eclipseWallets\n }\n\n if (address) {\n if (vmType === 'evm' || vmType === 'hypevm' || !vmType) {\n return isAddress(address)\n } else if (vmType === 'svm') {\n if (chainId && connector) {\n if (\n chainId === eclipse.id &&\n !eclipseConnectorKeys!.includes(connector.toLowerCase())\n ) {\n return false\n }\n if (\n chainId === solana.id &&\n eclipseConnectorKeys!.includes(connector.toLowerCase())\n ) {\n return false\n }\n }\n\n return isSolanaAddress(address)\n } else if (vmType === 'bvm') {\n return isBitcoinAddress(address)\n } else if (vmType === 'tvm') {\n return isTronAddress(address)\n } else if (vmType === 'tonvm') {\n return isTonAddress(address)\n } else if (vmType === 'lvm') {\n return isLighterAddress(address)\n } else if (vmType === 'xrpvm') {\n return isXrpAddress(address)\n }\n }\n return false\n}\n\nexport const addressWithFallback = (\n vmType?: ChainVM,\n address?: string,\n chainId?: number,\n connector?: string,\n connectorKeyOverrides?: Parameters<typeof isValidAddress>['4']\n) => {\n return address &&\n isValidAddress(\n vmType ?? 'evm',\n address,\n chainId,\n connector,\n connectorKeyOverrides\n )\n ? address\n : getDeadAddress(vmType, chainId)\n}\n\nexport function findSupportedWallet(\n chain: RelayChain,\n currentAddress: string | undefined,\n linkedWallets: LinkedWallet[],\n connectorKeyOverrides?: Parameters<typeof isValidAddress>['4']\n): string | undefined {\n const currentWallet = linkedWallets.find(\n (wallet) => wallet.address === currentAddress\n )\n if (\n !isWalletVmTypeCompatible(currentWallet?.vmType, chain.vmType) ||\n (currentWallet &&\n !isValidAddress(\n chain.vmType,\n currentWallet.address,\n chain.id,\n currentWallet.connector,\n connectorKeyOverrides\n ))\n ) {\n const supportedWallet = linkedWallets.find((wallet) =>\n isValidAddress(\n chain.vmType,\n wallet.address,\n chain.id,\n wallet.connector,\n connectorKeyOverrides\n )\n )\n return supportedWallet?.address\n }\n return undefined\n}\n\nexport function addressesEqual(\n vmType: ChainVM,\n a?: string,\n b?: string\n): boolean {\n if (!a || !b) return false\n if (vmType === 'evm' || vmType === 'hypevm') {\n return a.toLowerCase() === b.toLowerCase()\n }\n return a === b\n}\n"]}
@@ -7,11 +7,12 @@ const getRequestCurrencies = (transaction) => {
7
7
  const actual = route?.actual;
8
8
  const quoted = route?.quoted;
9
9
  const currencyIn = actual?.origin?.inputCurrency ?? quoted?.origin?.inputCurrency;
10
- const currencyOut = actual?.destination?.outputCurrency ??
10
+ const settledActual = transaction?.status === 'success' ? actual : undefined;
11
+ const currencyOut = settledActual?.destination?.outputCurrency ??
11
12
  quoted?.destination?.outputCurrency ??
12
- actual?.origin?.outputCurrency ??
13
+ settledActual?.origin?.outputCurrency ??
13
14
  quoted?.origin?.outputCurrency;
14
- const currencyGasTopup = actual?.destination?.currencyGasTopup;
15
+ const currencyGasTopup = settledActual?.destination?.currencyGasTopup;
15
16
  return { currencyIn, currencyOut, currencyGasTopup };
16
17
  };
17
18
  exports.getRequestCurrencies = getRequestCurrencies;
@@ -1 +1 @@
1
- {"version":3,"file":"relayTransaction.js","sourceRoot":"","sources":["../../../src/utils/relayTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Execute, RelayClient } from '@relayprotocol/relay-sdk'\nimport { type RelayTransaction } from '../types/index.js'\nimport { formatSeconds } from './time.js'\n\ntype RequestRoute = NonNullable<NonNullable<RelayTransaction['data']>['route']>\ntype RouteAmount = NonNullable<\n NonNullable<NonNullable<RequestRoute['quoted']>['origin']>['inputCurrency']\n>\n\n/**\n * Resolves the input/output currency amounts to display for a request from\n * `data.route`, preferring actual over quoted values.\n *\n * - currencyIn: the token deposited on the origin side.\n * - currencyOut: the token received, preferring the destination output and\n * falling back to the origin output (e.g. same-chain swaps).\n */\nexport const getRequestCurrencies = (\n transaction?: RelayTransaction | null\n): {\n currencyIn?: RouteAmount | null\n currencyOut?: RouteAmount | null\n currencyGasTopup?: RouteAmount | null\n} => {\n const route = transaction?.data?.route\n const actual = route?.actual\n const quoted = route?.quoted\n\n const currencyIn =\n actual?.origin?.inputCurrency ?? quoted?.origin?.inputCurrency\n\n const currencyOut =\n actual?.destination?.outputCurrency ??\n quoted?.destination?.outputCurrency ??\n actual?.origin?.outputCurrency ??\n quoted?.origin?.outputCurrency\n\n const currencyGasTopup = actual?.destination?.currencyGasTopup\n\n return { currencyIn, currencyOut, currencyGasTopup }\n}\n\nexport const extractFromChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.inTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const extractToChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.outTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const calculateFillTime = (transaction?: RelayTransaction | null) => {\n let fillTime = '-'\n let seconds = 0\n if (transaction?.status !== 'pending' && transaction?.status !== 'waiting') {\n const inTxTimestamps =\n transaction?.data?.inTxs?.map((tx) => tx.timestamp as number) ?? null\n const txStartTimestamp = inTxTimestamps ? Math.min(...inTxTimestamps) : null\n const outTxTimestamps =\n transaction?.data?.outTxs\n ?.filter((tx) => tx.timestamp)\n ?.map((tx) => tx.timestamp as number) ?? null\n\n const txEndTimestamp =\n outTxTimestamps && outTxTimestamps.length > 0\n ? Math.max(...outTxTimestamps)\n : null\n\n if (txStartTimestamp && txEndTimestamp) {\n seconds = txEndTimestamp - txStartTimestamp\n // Guard against negative time (invalid timestamps or timing issues)\n if (seconds < 0) {\n fillTime = '-'\n seconds = 0\n } else if (seconds > 60) {\n fillTime = formatSeconds(seconds)\n } else {\n fillTime = `${seconds}s`\n }\n }\n }\n return { fillTime, seconds }\n}\n\nexport const extractDepositRequestId = (steps?: Execute['steps'] | null) => {\n if (!steps?.length) return null\n\n // Find the first step that has a requestId\n return steps.find((step) => step.requestId)?.requestId || null\n}\n\nexport const statusToText = {\n pending: 'Pending',\n failure: 'Failure',\n received: 'Received',\n success: 'Success',\n fallback: 'Refunded'\n}\n"]}
1
+ {"version":3,"file":"relayTransaction.js","sourceRoot":"","sources":["../../../src/utils/relayTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Execute, RelayClient } from '@relayprotocol/relay-sdk'\nimport { type RelayTransaction } from '../types/index.js'\nimport { formatSeconds } from './time.js'\n\ntype RequestRoute = NonNullable<NonNullable<RelayTransaction['data']>['route']>\ntype RouteAmount = NonNullable<\n NonNullable<NonNullable<RequestRoute['quoted']>['origin']>['inputCurrency']\n>\n\n/**\n * Resolves the input/output currency amounts to display for a request from\n * `data.route`, preferring actual over quoted values.\n *\n * - currencyIn: the token deposited on the origin side.\n * - currencyOut: the token received, preferring the destination output and\n * falling back to the origin output (e.g. same-chain swaps).\n *\n * `route.actual` is populated progressively while a request is in flight, so\n * before the request status is `success` it can hold provisional values (e.g.\n * the intermediate origin swap output). Output-side actual values are only\n * used once the request status is `success`; until then the quoted values are\n * returned so the UI never presents a provisional token/amount as received.\n */\nexport const getRequestCurrencies = (\n transaction?: RelayTransaction | null\n): {\n currencyIn?: RouteAmount | null\n currencyOut?: RouteAmount | null\n currencyGasTopup?: RouteAmount | null\n} => {\n const route = transaction?.data?.route\n const actual = route?.actual\n const quoted = route?.quoted\n\n const currencyIn =\n actual?.origin?.inputCurrency ?? quoted?.origin?.inputCurrency\n\n // Only trust output-side actual values once the request has succeeded\n const settledActual = transaction?.status === 'success' ? actual : undefined\n\n const currencyOut =\n settledActual?.destination?.outputCurrency ??\n quoted?.destination?.outputCurrency ??\n settledActual?.origin?.outputCurrency ??\n quoted?.origin?.outputCurrency\n\n const currencyGasTopup = settledActual?.destination?.currencyGasTopup\n\n return { currencyIn, currencyOut, currencyGasTopup }\n}\n\nexport const extractFromChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.inTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const extractToChain = (\n transaction?: RelayTransaction | null,\n client?: RelayClient | null\n) => {\n const chainId = transaction?.data?.outTxs?.[0]?.chainId\n return client?.chains.find((chain) => chain.id === chainId)\n}\n\nexport const calculateFillTime = (transaction?: RelayTransaction | null) => {\n let fillTime = '-'\n let seconds = 0\n if (transaction?.status !== 'pending' && transaction?.status !== 'waiting') {\n const inTxTimestamps =\n transaction?.data?.inTxs?.map((tx) => tx.timestamp as number) ?? null\n const txStartTimestamp = inTxTimestamps ? Math.min(...inTxTimestamps) : null\n const outTxTimestamps =\n transaction?.data?.outTxs\n ?.filter((tx) => tx.timestamp)\n ?.map((tx) => tx.timestamp as number) ?? null\n\n const txEndTimestamp =\n outTxTimestamps && outTxTimestamps.length > 0\n ? Math.max(...outTxTimestamps)\n : null\n\n if (txStartTimestamp && txEndTimestamp) {\n seconds = txEndTimestamp - txStartTimestamp\n // Guard against negative time (invalid timestamps or timing issues)\n if (seconds < 0) {\n fillTime = '-'\n seconds = 0\n } else if (seconds > 60) {\n fillTime = formatSeconds(seconds)\n } else {\n fillTime = `${seconds}s`\n }\n }\n }\n return { fillTime, seconds }\n}\n\nexport const extractDepositRequestId = (steps?: Execute['steps'] | null) => {\n if (!steps?.length) return null\n\n // Find the first step that has a requestId\n return steps.find((step) => step.requestId)?.requestId || null\n}\n\nexport const statusToText = {\n pending: 'Pending',\n failure: 'Failure',\n received: 'Received',\n success: 'Success',\n fallback: 'Refunded'\n}\n"]}
@@ -8,7 +8,7 @@ exports.solana = {
8
8
  exports.eclipse = {
9
9
  id: 9286185
10
10
  };
11
- exports.eclipseWallets = ['backpackeclipse'];
11
+ exports.eclipseWallets = ['nightlyeclipse', 'okxeclipse'];
12
12
  function isSolanaAddress(address) {
13
13
  return exports.solanaAddressRegex.test(address);
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../src/utils/solana.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAC7B,gHAAgH,CAAA;AACrG,QAAA,MAAM,GAAG;IACpB,EAAE,EAAE,SAAS;CACd,CAAA;AACY,QAAA,OAAO,GAAG;IACrB,EAAE,EAAE,OAAO;CACZ,CAAA;AACY,QAAA,cAAc,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAEjD,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,0BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC;AAFD,0CAEC","sourcesContent":["export const solanaAddressRegex =\n /^(?!T[1-9A-HJ-NP-Za-km-z]{33}$)(?!0x[0-9a-fA-F]{40}$)(?!0x[0-9a-fA-F]{64}$)(?!bc1)[1-9A-HJ-NP-Za-km-z]{32,44}$/\nexport const solana = {\n id: 792703809\n}\nexport const eclipse = {\n id: 9286185\n}\nexport const eclipseWallets = ['backpackeclipse']\n\nexport function isSolanaAddress(address: string): boolean {\n return solanaAddressRegex.test(address)\n}\n"]}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../src/utils/solana.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAC7B,gHAAgH,CAAA;AACrG,QAAA,MAAM,GAAG;IACpB,EAAE,EAAE,SAAS;CACd,CAAA;AACY,QAAA,OAAO,GAAG;IACrB,EAAE,EAAE,OAAO;CACZ,CAAA;AACY,QAAA,cAAc,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;AAE9D,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,0BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC;AAFD,0CAEC","sourcesContent":["export const solanaAddressRegex =\n /^(?!T[1-9A-HJ-NP-Za-km-z]{33}$)(?!0x[0-9a-fA-F]{40}$)(?!0x[0-9a-fA-F]{64}$)(?!bc1)[1-9A-HJ-NP-Za-km-z]{32,44}$/\nexport const solana = {\n id: 792703809\n}\nexport const eclipse = {\n id: 9286185\n}\nexport const eclipseWallets = ['nightlyeclipse', 'okxeclipse']\n\nexport function isSolanaAddress(address: string): boolean {\n return solanaAddressRegex.test(address)\n}\n"]}