@relayprotocol/relay-kit-ui 11.0.2 → 11.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/src/components/common/TokenSelector/PaymentMethod.js.map +1 -1
- package/_cjs/src/components/common/TokenSelector/TokenSelector.js.map +1 -1
- package/_cjs/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.js.map +1 -1
- package/_cjs/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
- package/_cjs/src/components/widgets/SwapWidget/index.js +0 -2
- package/_cjs/src/components/widgets/SwapWidget/index.js.map +1 -1
- package/_cjs/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
- package/_cjs/src/components/widgets/WidgetErrorWell.js +0 -1
- package/_cjs/src/components/widgets/WidgetErrorWell.js.map +1 -1
- package/_cjs/src/constants/depositAddresses.js +2 -1
- package/_cjs/src/constants/depositAddresses.js.map +1 -1
- package/_cjs/src/utils/address.js +4 -0
- package/_cjs/src/utils/address.js.map +1 -1
- package/_cjs/src/utils/xrp.js +46 -0
- package/_cjs/src/utils/xrp.js.map +1 -0
- package/_cjs/src/version.js +1 -1
- package/_cjs/src/version.js.map +1 -1
- package/_cjs/tsconfig.build.tsbuildinfo +1 -1
- package/_esm/src/components/common/TokenSelector/PaymentMethod.js.map +1 -1
- package/_esm/src/components/common/TokenSelector/TokenSelector.js.map +1 -1
- package/_esm/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.js.map +1 -1
- package/_esm/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
- package/_esm/src/components/widgets/SwapWidget/index.js +1 -3
- package/_esm/src/components/widgets/SwapWidget/index.js.map +1 -1
- package/_esm/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
- package/_esm/src/components/widgets/WidgetErrorWell.js +1 -2
- package/_esm/src/components/widgets/WidgetErrorWell.js.map +1 -1
- package/_esm/src/constants/depositAddresses.js +2 -1
- package/_esm/src/constants/depositAddresses.js.map +1 -1
- package/_esm/src/utils/address.js +4 -0
- package/_esm/src/utils/address.js.map +1 -1
- package/_esm/src/utils/xrp.js +55 -0
- package/_esm/src/utils/xrp.js.map +1 -0
- package/_esm/src/version.js +1 -1
- package/_esm/src/version.js.map +1 -1
- package/_esm/tsconfig.build.tsbuildinfo +1 -1
- package/_types/src/components/common/TokenSelector/PaymentMethod.d.ts +1 -1
- package/_types/src/components/common/TokenSelector/PaymentMethod.d.ts.map +1 -1
- package/_types/src/components/common/TokenSelector/TokenSelector.d.ts +1 -1
- package/_types/src/components/common/TokenSelector/TokenSelector.d.ts.map +1 -1
- package/_types/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.d.ts +1 -1
- package/_types/src/components/widgets/OnrampWidget/widget/OnrampWidgetRenderer.d.ts.map +1 -1
- package/_types/src/components/widgets/OnrampWidget/widget/index.d.ts +1 -1
- package/_types/src/components/widgets/OnrampWidget/widget/index.d.ts.map +1 -1
- package/_types/src/components/widgets/SwapWidget/index.d.ts +1 -1
- package/_types/src/components/widgets/SwapWidget/index.d.ts.map +1 -1
- package/_types/src/components/widgets/SwapWidgetRenderer.d.ts +2 -2
- package/_types/src/components/widgets/SwapWidgetRenderer.d.ts.map +1 -1
- package/_types/src/components/widgets/WidgetErrorWell.d.ts.map +1 -1
- package/_types/src/constants/depositAddresses.d.ts.map +1 -1
- package/_types/src/utils/address.d.ts +1 -1
- package/_types/src/utils/address.d.ts.map +1 -1
- package/_types/src/utils/xrp.d.ts +12 -0
- package/_types/src/utils/xrp.d.ts.map +1 -0
- package/_types/src/version.d.ts +1 -1
- package/_types/tsconfig.build.tsbuildinfo +1 -1
- 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"]}
|
|
@@ -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;
|
|
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"]}
|
|
@@ -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":";;;AAAA,wDAIiC;AACjC,+BAAgC;AAChC,oDAAsD;AACtD,kDAK2B;AAG3B,uCAAyC;AACzC,qCAAuC;AACvC,6CAA+C;
|
|
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"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isXrpAddress = exports.xrp = void 0;
|
|
4
|
+
const sha2_js_1 = require("@noble/hashes/sha2.js");
|
|
5
|
+
exports.xrp = {
|
|
6
|
+
id: 537724
|
|
7
|
+
};
|
|
8
|
+
const XRP_BASE58_ALPHABET = 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz';
|
|
9
|
+
function decodeXrpBase58(address) {
|
|
10
|
+
const bytes = [];
|
|
11
|
+
for (const char of address) {
|
|
12
|
+
let carry = XRP_BASE58_ALPHABET.indexOf(char);
|
|
13
|
+
if (carry === -1) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
17
|
+
carry += bytes[i] * 58;
|
|
18
|
+
bytes[i] = carry & 0xff;
|
|
19
|
+
carry >>= 8;
|
|
20
|
+
}
|
|
21
|
+
while (carry > 0) {
|
|
22
|
+
bytes.push(carry & 0xff);
|
|
23
|
+
carry >>= 8;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
for (const char of address) {
|
|
27
|
+
if (char !== XRP_BASE58_ALPHABET[0]) {
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
bytes.push(0);
|
|
31
|
+
}
|
|
32
|
+
return new Uint8Array(bytes.reverse());
|
|
33
|
+
}
|
|
34
|
+
function isXrpAddress(address) {
|
|
35
|
+
if (address.length < 25 || address.length > 35) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const decoded = decodeXrpBase58(address);
|
|
39
|
+
if (!decoded || decoded.length !== 25 || decoded[0] !== 0x00) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const expectedChecksum = (0, sha2_js_1.sha256)((0, sha2_js_1.sha256)(decoded.subarray(0, 21))).subarray(0, 4);
|
|
43
|
+
return decoded.subarray(21).every((byte, i) => byte === expectedChecksum[i]);
|
|
44
|
+
}
|
|
45
|
+
exports.isXrpAddress = isXrpAddress;
|
|
46
|
+
//# sourceMappingURL=xrp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xrp.js","sourceRoot":"","sources":["../../../src/utils/xrp.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAEjC,QAAA,GAAG,GAAG;IACjB,EAAE,EAAE,MAAM;CACX,CAAA;AAID,MAAM,mBAAmB,GACvB,4DAA4D,CAAA;AAE9D,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YACtB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;YACvB,KAAK,KAAK,CAAC,CAAA;QACb,CAAC;QACD,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;YACxB,KAAK,KAAK,CAAC,CAAA;QACb,CAAC;IACH,CAAC;IAGD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,MAAK;QACP,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;AACxC,CAAC;AASD,SAAgB,YAAY,CAAC,OAAe;IAE1C,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IAGxC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAA,gBAAM,EAAC,IAAA,gBAAM,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CACvE,CAAC,EACD,CAAC,CACF,CAAA;IAED,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC;AAnBD,oCAmBC","sourcesContent":["import { sha256 } from '@noble/hashes/sha2.js'\n\nexport const xrp = {\n id: 537724\n}\n\n// XRPL's own base58 ordering. Same 58 characters as Bitcoin's alphabet, so a\n// Bitcoin ordering looks right but indexes to the wrong bytes.\nconst XRP_BASE58_ALPHABET =\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n\nfunction decodeXrpBase58(address: string): Uint8Array | undefined {\n const bytes: number[] = []\n\n for (const char of address) {\n let carry = XRP_BASE58_ALPHABET.indexOf(char)\n if (carry === -1) {\n return undefined\n }\n\n for (let i = 0; i < bytes.length; i++) {\n carry += bytes[i] * 58\n bytes[i] = carry & 0xff\n carry >>= 8\n }\n while (carry > 0) {\n bytes.push(carry & 0xff)\n carry >>= 8\n }\n }\n\n // Each leading alphabet-zero character represents one leading zero byte\n for (const char of address) {\n if (char !== XRP_BASE58_ALPHABET[0]) {\n break\n }\n bytes.push(0)\n }\n\n return new Uint8Array(bytes.reverse())\n}\n\n/**\n * Classic `r...` addresses only. X-addresses have a non-zero version byte and\n * are rejected, since the destination tag they encode can't be forwarded.\n *\n * Does not trim: callers store the string they validated as the recipient, so\n * accepting padded input would forward the padding to the quote.\n */\nexport function isXrpAddress(address: string): boolean {\n // Bounds the decode; every 25 byte base58check payload lands in this range\n if (address.length < 25 || address.length > 35) {\n return false\n }\n\n const decoded = decodeXrpBase58(address)\n // 1 version byte + 20 byte account id + 4 byte checksum. Version 0x00 can\n // only come from a leading `r`, so this also pins the prefix.\n if (!decoded || decoded.length !== 25 || decoded[0] !== 0x00) {\n return false\n }\n\n const expectedChecksum = sha256(sha256(decoded.subarray(0, 21))).subarray(\n 0,\n 4\n )\n\n return decoded.subarray(21).every((byte, i) => byte === expectedChecksum[i])\n}\n"]}
|
package/_cjs/src/version.js
CHANGED
package/_cjs/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["export const UI_VERSION = '11.0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["export const UI_VERSION = '11.0.3';\n"]}
|