@relayprotocol/relay-kit-ui 10.0.0 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/_cjs/src/components/common/CustomAddressModal.js +18 -8
  2. package/_cjs/src/components/common/CustomAddressModal.js.map +1 -1
  3. package/_cjs/src/components/common/RefundReason.js +106 -3
  4. package/_cjs/src/components/common/RefundReason.js.map +1 -1
  5. package/_cjs/src/components/primitives/ChainIcon.js +2 -1
  6. package/_cjs/src/components/primitives/ChainIcon.js.map +1 -1
  7. package/_cjs/src/components/primitives/ChainTokenIcon.js +6 -2
  8. package/_cjs/src/components/primitives/ChainTokenIcon.js.map +1 -1
  9. package/_cjs/src/components/widgets/OnrampWidget/widget/index.js +1 -1
  10. package/_cjs/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
  11. package/_cjs/src/components/widgets/SwapWidgetRenderer.js +17 -3
  12. package/_cjs/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
  13. package/_cjs/src/components/widgets/WidgetContainer.js +1 -1
  14. package/_cjs/src/components/widgets/WidgetContainer.js.map +1 -1
  15. package/_cjs/src/constants/events.js +2 -1
  16. package/_cjs/src/constants/events.js.map +1 -1
  17. package/_cjs/src/hooks/index.js +3 -1
  18. package/_cjs/src/hooks/index.js.map +1 -1
  19. package/_cjs/src/hooks/useKnownTokenContract.js +45 -0
  20. package/_cjs/src/hooks/useKnownTokenContract.js.map +1 -0
  21. package/_cjs/src/version.js +1 -1
  22. package/_cjs/src/version.js.map +1 -1
  23. package/_cjs/tsconfig.build.tsbuildinfo +1 -1
  24. package/_esm/src/components/common/CustomAddressModal.js +24 -10
  25. package/_esm/src/components/common/CustomAddressModal.js.map +1 -1
  26. package/_esm/src/components/common/RefundReason.js +107 -4
  27. package/_esm/src/components/common/RefundReason.js.map +1 -1
  28. package/_esm/src/components/primitives/ChainIcon.js +3 -2
  29. package/_esm/src/components/primitives/ChainIcon.js.map +1 -1
  30. package/_esm/src/components/primitives/ChainTokenIcon.js +6 -3
  31. package/_esm/src/components/primitives/ChainTokenIcon.js.map +1 -1
  32. package/_esm/src/components/widgets/OnrampWidget/widget/index.js +1 -1
  33. package/_esm/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
  34. package/_esm/src/components/widgets/SwapWidgetRenderer.js +22 -5
  35. package/_esm/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
  36. package/_esm/src/components/widgets/WidgetContainer.js +1 -1
  37. package/_esm/src/components/widgets/WidgetContainer.js.map +1 -1
  38. package/_esm/src/constants/events.js +2 -1
  39. package/_esm/src/constants/events.js.map +1 -1
  40. package/_esm/src/hooks/index.js +2 -1
  41. package/_esm/src/hooks/index.js.map +1 -1
  42. package/_esm/src/hooks/useKnownTokenContract.js +52 -0
  43. package/_esm/src/hooks/useKnownTokenContract.js.map +1 -0
  44. package/_esm/src/version.js +1 -1
  45. package/_esm/src/version.js.map +1 -1
  46. package/_esm/tsconfig.build.tsbuildinfo +1 -1
  47. package/_types/src/components/common/CustomAddressModal.d.ts.map +1 -1
  48. package/_types/src/components/common/RefundReason.d.ts.map +1 -1
  49. package/_types/src/components/primitives/ChainIcon.d.ts.map +1 -1
  50. package/_types/src/components/primitives/ChainTokenIcon.d.ts.map +1 -1
  51. package/_types/src/components/widgets/OnrampWidget/widget/index.d.ts.map +1 -1
  52. package/_types/src/components/widgets/SwapWidgetRenderer.d.ts.map +1 -1
  53. package/_types/src/components/widgets/WidgetContainer.d.ts.map +1 -1
  54. package/_types/src/constants/events.d.ts +1 -0
  55. package/_types/src/constants/events.d.ts.map +1 -1
  56. package/_types/src/hooks/index.d.ts +2 -1
  57. package/_types/src/hooks/index.d.ts.map +1 -1
  58. package/_types/src/hooks/useKnownTokenContract.d.ts +35 -0
  59. package/_types/src/hooks/useKnownTokenContract.d.ts.map +1 -0
  60. package/_types/src/version.d.ts +1 -1
  61. package/_types/tsconfig.build.tsbuildinfo +1 -1
  62. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/widgets/OnrampWidget/widget/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { FC } from 'react'\nimport OnrampWidgetRenderer from './OnrampWidgetRenderer.js'\nimport { Box, Button, Flex, Text } from '../../../primitives/index.js'\nimport AmountInput from '../../../common/AmountInput.js'\nimport { useCallback, useContext, useEffect, useState } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faArrowDownLong } from '@fortawesome/free-solid-svg-icons/faArrowDownLong'\nimport { faArrowUpLong } from '@fortawesome/free-solid-svg-icons/faArrowUpLong'\nimport { faClipboard } from '@fortawesome/free-solid-svg-icons/faClipboard'\nimport { faCreditCard } from '@fortawesome/free-solid-svg-icons/faCreditCard'\nimport TokenSelector from '../../../common/TokenSelector/TokenSelector.js'\nimport { EventNames } from '../../../../constants/events.js'\nimport { TokenTrigger } from '../../../common/TokenSelector/triggers/TokenTrigger.js'\nimport type { LinkedWallet, Token } from '../../../../types/index.js'\nimport type { ChainVM, Execute, RelayChain } from '@relayprotocol/relay-sdk'\nimport { MultiWalletDropdown } from '../../../common/MultiWalletDropdown.js'\nimport { CustomAddressModal } from '../../../common/CustomAddressModal.js'\nimport { useAccount } from 'wagmi'\nimport { OnrampModal } from '../modals/OnrampModal.js'\nimport { formatBN } from '../../../../utils/numbers.js'\nimport { findSupportedWallet } from '../../../../utils/address.js'\nimport {\n ProviderOptionsContext,\n useHapticEvent\n} from '../../../../providers/RelayKitProvider.js'\n\ntype BaseOnrampWidgetProps = {\n defaultWalletAddress?: string\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm'>[]\n moonPayApiKey: string\n moonPayThemeId?: string\n moonPayThemeMode?: 'dark' | 'light'\n token?: Token\n setToken?: (token: Token) => void\n disablePasteWalletAddressOption?: boolean\n onTokenChange?: (token?: Token) => void\n onSuccess?: (data: Execute, moonpayRequestId: string) => void\n onError?: (error: string, data?: Execute, moonpayRequestId?: string) => void\n moonpayOnUrlSignatureRequested: (url: string) => Promise<string> | void\n onConnectWallet?: () => void\n onAnalyticEvent?: (eventName: string, data?: any) => void\n}\n\ntype MultiWalletDisabledProps = BaseOnrampWidgetProps & {\n multiWalletSupportEnabled?: false\n linkedWallets?: never\n onSetPrimaryWallet?: never\n onLinkNewWallet?: never\n}\n\ntype MultiWalletEnabledProps = BaseOnrampWidgetProps & {\n multiWalletSupportEnabled: true\n linkedWallets: LinkedWallet[]\n onSetPrimaryWallet?: (address: string) => void\n onLinkNewWallet: (params: {\n chain?: RelayChain\n direction: 'to' | 'from'\n }) => Promise<LinkedWallet> | void\n}\n\nexport type OnrampWidgetProps =\n | MultiWalletDisabledProps\n | MultiWalletEnabledProps\n\nconst OnrampWidget: FC<OnrampWidgetProps> = ({\n defaultWalletAddress,\n moonPayApiKey,\n moonpayOnUrlSignatureRequested,\n linkedWallets,\n multiWalletSupportEnabled,\n supportedWalletVMs,\n moonPayThemeId,\n moonPayThemeMode,\n token,\n setToken,\n disablePasteWalletAddressOption,\n onTokenChange,\n onConnectWallet,\n onLinkNewWallet,\n onSetPrimaryWallet,\n onAnalyticEvent: _onAnalyticEvent,\n onSuccess\n}) => {\n const onAnalyticEvent = useCallback(\n (eventName: string, data?: any) => {\n try {\n _onAnalyticEvent?.(eventName, data)\n } catch (e) {\n console.error('Error in onAnalyticEvent', eventName, data, e)\n }\n },\n [_onAnalyticEvent]\n )\n const [addressModalOpen, setAddressModalOpen] = useState(false)\n const [onrampModalOpen, setOnrampModalOpen] = useState(false)\n const { isConnected } = useAccount()\n const providerOptionsContext = useContext(ProviderOptionsContext)\n const haptic = useHapticEvent()\n const connectorKeyOverrides = providerOptionsContext.vmConnectorKeyOverrides\n\n return (\n <OnrampWidgetRenderer\n defaultWalletAddress={defaultWalletAddress}\n supportedWalletVMs={supportedWalletVMs}\n linkedWallets={linkedWallets}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n moonPayApiKey={moonPayApiKey}\n token={token}\n setToken={setToken}\n >\n {({\n displayCurrency,\n setDisplayCurrency,\n recipient,\n setRecipient,\n isRecipientLinked,\n isValidRecipient,\n amount,\n amountToToken,\n setInputValue,\n amountToTokenFormatted,\n token,\n fromToken,\n setToken,\n toChain,\n fromChain,\n toDisplayName,\n toChainWalletVMSupported,\n fiatCurrency,\n setFiatCurrency,\n minAmountCurrency,\n notEnoughFiat,\n ctaCopy,\n moonPayCurrencyCode,\n isPassthrough,\n usdRate\n }) => {\n //Reset recipient if no longer valid\n useEffect(() => {\n if (\n multiWalletSupportEnabled &&\n fromChain &&\n recipient &&\n linkedWallets &&\n !isValidRecipient\n ) {\n const supportedAddress = findSupportedWallet(\n fromChain,\n recipient,\n linkedWallets,\n connectorKeyOverrides\n )\n if (supportedAddress) {\n onSetPrimaryWallet?.(supportedAddress)\n }\n }\n\n if (\n multiWalletSupportEnabled &&\n toChain &&\n recipient &&\n linkedWallets &&\n !isValidRecipient\n ) {\n setRecipient(undefined)\n }\n }, [\n multiWalletSupportEnabled,\n fromChain?.id,\n toChain?.id,\n linkedWallets,\n onSetPrimaryWallet,\n isValidRecipient,\n connectorKeyOverrides\n ])\n\n const formattedAmount =\n amount === ''\n ? ''\n : amount.endsWith('.')\n ? new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n }).format(+amount) + '.'\n : new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n minimumFractionDigits: amount.includes('.0')\n ? 1\n : amount.endsWith('0') && amount.includes('.')\n ? 2\n : 0,\n maximumFractionDigits: amount.includes('.') ? 2 : 0,\n minimumSignificantDigits: 1,\n maximumSignificantDigits: amount.length\n }).format(+amount)\n\n return (\n <div\n className=\"relay-kit-reset relay:max-w-[408px] relay:min-w-[320px] relay:w-full\"\n >\n <Flex\n direction=\"column\"\n className=\"relay:gap-2 relay:w-full relay:border-widget\"\n >\n <Flex\n direction=\"column\"\n className=\"relay:w-full relay:overflow-hidden relay:px-4 relay:pt-[40px] relay:pb-[24px] relay:rounded-widget-card relay:bg-[var(--relay-colors-widget-background)] relay:border-widget-card relay:mb-[var(--relay-spacing-widget-card-section-gutter)]\"\n >\n <Text\n style=\"subtitle2\"\n color=\"subtle\"\n className=\"relay:text-center\"\n >\n Enter an amount\n </Text>\n <AmountInput\n value={\n displayCurrency\n ? amountToToken !== ''\n ? `${amountToToken} ${token.symbol}`\n : ''\n : formattedAmount\n }\n setValue={(e) => {\n //unused\n }}\n placeholder={` 0`}\n onChange={(e) => {\n const input = e.target as any\n\n setInputValue(input.value)\n if (displayCurrency) {\n setTimeout(() => {\n const numericValue = input.value.match(/[\\d.]+/g)\n const numericValueLength =\n numericValue !== null\n ? numericValue.join('').length\n : 0\n input.setSelectionRange(\n numericValueLength,\n numericValueLength\n )\n }, 0)\n }\n }}\n onKeyDown={(e) => {\n const input = e.target as HTMLInputElement\n const cursorPosition = input.selectionStart\n\n // Prevent multiple decimals\n if (\n e.key === '.' &&\n (input.value.match(/\\./g) || []).length > 0\n ) {\n e.preventDefault() // Prevent the key press if there's already a decimal\n return\n }\n\n if (e.key === 'ArrowLeft' && cursorPosition !== null) {\n const valueBeforeCursor = input.value.substring(\n 0,\n cursorPosition\n )\n const charBeforeCursor = valueBeforeCursor.charAt(\n cursorPosition - 1\n )\n if (charBeforeCursor === '$') {\n e.preventDefault()\n }\n }\n if (e.key === 'ArrowRight' && cursorPosition !== null) {\n const valueAfterCursor = input.value.substring(\n 0,\n cursorPosition + 1\n )\n const charAfterCursor =\n valueAfterCursor.charAt(cursorPosition)\n if (charAfterCursor === ' ') {\n e.preventDefault()\n }\n }\n }}\n onMouseDown={(e) => {\n const input = e.target as HTMLInputElement\n input.style.caretColor = 'transparent'\n }}\n onMouseUp={(e) => {\n const input = e.target as HTMLInputElement\n const cursorPosition = input.selectionStart // Get the current cursor position\n if (cursorPosition !== null) {\n const valueAfterCursor = input.value.substring(\n 0,\n cursorPosition + 1\n )\n const charAfterCursor =\n valueAfterCursor.charAt(cursorPosition)\n const valueBeforeCursor = input.value.substring(\n 0,\n cursorPosition\n )\n const charBeforeCursor = valueBeforeCursor.charAt(\n cursorPosition - 1\n )\n const specialCharacterRegex = /[ a-zA-Z]/\n const alphaRegex = /[a-zA-Z]/\n if (\n charAfterCursor === '$' ||\n alphaRegex.test(charAfterCursor) ||\n specialCharacterRegex.test(charBeforeCursor)\n ) {\n e.preventDefault()\n e.stopPropagation()\n input.setSelectionRange(1, 1)\n }\n }\n input.style.caretColor = 'initial'\n }}\n className=\"relay:text-center relay:whitespace-pre\"\n inputStyle={{\n fontWeight: '700',\n fontSize: 48,\n lineHeight: '58px',\n textAlign: 'center',\n textIndent:\n amount === '' || amountToToken === ''\n ? '-36px'\n : undefined,\n whiteSpace: 'pre'\n }}\n containerClassName=\"relay:mb-2 relay:w-full\"\n />\n {notEnoughFiat ? (\n <Text color=\"red\" className=\"relay:mb-[24px] relay:text-center\">\n Minimum amount is{' '}\n {displayCurrency && minAmountCurrency\n ? `${minAmountCurrency} ${token.symbol}`\n : '$20'}\n </Text>\n ) : undefined}\n <button\n className=\"relay:gap-2 relay:cursor-pointer relay:flex relay:items-center relay:justify-center relay:mb-[16px] relay:self-center\"\n onClick={() => {\n const _displayCurrency = !displayCurrency\n setDisplayCurrency(_displayCurrency)\n if (_displayCurrency) {\n let _amountToToken = 21 / usdRate\n if (+amountToToken > _amountToToken) {\n _amountToToken = +amountToToken\n }\n setInputValue(\n formatBN(_amountToToken, 5, token.decimals, false),\n _displayCurrency\n )\n }\n }}\n >\n <Text style=\"body2\" color=\"subtle\">\n {displayCurrency\n ? formattedAmount\n : `${amountToTokenFormatted} ${token.symbol}`}\n </Text>\n <Flex\n className=\"relay:text-[color:var(--relay-colors-gray8)]\"\n >\n <FontAwesomeIcon\n className=\"relay:h-[14px]\"\n icon={faArrowUpLong}\n />\n <FontAwesomeIcon\n className=\"relay:h-[14px]\"\n icon={faArrowDownLong}\n />\n </Flex>\n </button>\n <TokenSelector\n address={recipient}\n isValidAddress={isValidRecipient}\n token={token}\n onAnalyticEvent={onAnalyticEvent}\n fromChainWalletVMSupported={false}\n supportedWalletVMs={[]}\n setToken={(token) => {\n setToken(token)\n onTokenChange?.(token)\n }}\n context=\"to\"\n trigger={\n <div\n className=\"relay:w-max relay:mx-auto relay:mb-[16px]\"\n data-testid=\"onramp-token-select-button\"\n >\n <TokenTrigger token={token} />\n </div>\n }\n />\n <Flex className=\"relay:gap-2 relay:mx-auto\">\n <Button\n color=\"white\"\n corners=\"pill\"\n size=\"none\"\n className=\"relay:h-[30px] relay:px-[14px] relay:py-[4px] relay:text-[14px]\"\n onClick={() => {\n setDisplayCurrency(false)\n setInputValue('100', false)\n }}\n >\n <Text style=\"subtitle2\">$100</Text>\n </Button>\n <Button\n color=\"white\"\n corners=\"pill\"\n size=\"none\"\n className=\"relay:h-[30px] relay:px-[14px] relay:py-[4px] relay:text-[14px]\"\n onClick={() => {\n setDisplayCurrency(false)\n setInputValue('300', false)\n }}\n >\n <Text style=\"subtitle2\">$300</Text>\n </Button>\n <Button\n color=\"white\"\n corners=\"pill\"\n size=\"none\"\n className=\"relay:h-[30px] relay:px-[14px] relay:py-[4px] relay:text-[14px]\"\n onClick={() => {\n setDisplayCurrency(false)\n setInputValue('1000', false)\n }}\n >\n <Text style=\"subtitle2\">$1,000</Text>\n </Button>\n </Flex>\n </Flex>\n </Flex>\n <Flex\n direction=\"column\"\n className=\"relay:w-full relay:overflow-hidden relay:p-4 relay:rounded-widget-card relay:bg-[var(--relay-colors-widget-background)] relay:border-widget-card relay:mb-[var(--relay-spacing-widget-card-section-gutter)]\"\n >\n <Flex justify=\"between\" align=\"center\" className=\"relay:mb-2\">\n <Text color=\"subtle\" style=\"subtitle2\">\n Recipient\n </Text>\n {multiWalletSupportEnabled === true &&\n toChainWalletVMSupported ? (\n <MultiWalletDropdown\n context=\"destination\"\n selectedWalletAddress={recipient}\n onSelect={(wallet) => setRecipient(wallet.address)}\n chain={toChain}\n onLinkNewWallet={() => {\n if (\n (!linkedWallets || linkedWallets.length === 0) &&\n toChainWalletVMSupported\n ) {\n onConnectWallet?.()\n } else {\n onLinkNewWallet?.({\n chain: toChain,\n direction: 'to'\n })?.then((wallet) => {\n onSetPrimaryWallet?.(wallet.address)\n })\n }\n }}\n setAddressModalOpen={setAddressModalOpen}\n wallets={linkedWallets!}\n onAnalyticEvent={onAnalyticEvent}\n disablePasteWalletAddressOption={\n disablePasteWalletAddressOption\n }\n testId=\"onramp-wallet-select-button\"\n />\n ) : null}\n {!multiWalletSupportEnabled || !toChainWalletVMSupported ? (\n <Button\n color={\n isValidRecipient && !isRecipientLinked\n ? 'warning'\n : 'secondary'\n }\n corners=\"pill\"\n size=\"none\"\n className=\"relay:flex relay:items-center relay:px-2 relay:py-1\"\n onClick={() => {\n setAddressModalOpen(true)\n onAnalyticEvent?.(EventNames.SWAP_ADDRESS_MODAL_CLICKED)\n }}\n >\n {isValidRecipient && !isRecipientLinked ? (\n <Box className=\"relay:text-[color:var(--relay-colors-amber11)]\">\n <FontAwesomeIcon\n icon={faClipboard}\n width={16}\n height={16}\n />\n </Box>\n ) : null}\n <Text\n style=\"subtitle2\"\n className={\n isValidRecipient && !isRecipientLinked\n ? 'relay:text-[color:var(--relay-colors-amber11)]'\n : 'relay:text-[color:var(--relay-colors-anchor-color)]'\n }\n >\n {!isValidRecipient ? `Enter Address` : toDisplayName}\n </Text>\n </Button>\n ) : null}\n </Flex>\n <Flex justify=\"between\" align=\"center\">\n <Text color=\"subtle\" style=\"subtitle2\">\n Paying with\n </Text>\n <Flex\n className=\"relay:items-center relay:gap-2 relay:ml-auto relay:mr-2 relay:text-[color:var(--relay-colors-gray9)]\"\n >\n <FontAwesomeIcon style={{ width: 16 }} icon={faCreditCard} />\n <Text style=\"subtitle2\">Card</Text>\n </Flex>\n {/* Hiding this until issues are resolved with MoonPay\n <FiatCurrencyModal\n fiatCurrency={fiatCurrency}\n setFiatCurrency={setFiatCurrency}\n moonPayApiKey={moonPayApiKey}\n /> */}\n </Flex>\n </Flex>\n <Button\n cta={true}\n className=\"relay:w-full relay:justify-center\"\n disabled={notEnoughFiat}\n onClick={() => {\n haptic('medium')\n if (!recipient && toChainWalletVMSupported) {\n if (!linkedWallets || linkedWallets.length === 0) {\n onConnectWallet?.()\n } else {\n onLinkNewWallet?.({\n chain: toChain,\n direction: 'to'\n })?.then((wallet) => {\n onSetPrimaryWallet?.(wallet.address)\n })\n }\n } else if (!recipient) {\n setAddressModalOpen(true)\n } else {\n setOnrampModalOpen(true)\n }\n }}\n >\n {ctaCopy}\n </Button>\n <CustomAddressModal\n open={addressModalOpen}\n toAddress={recipient}\n toChain={toChain}\n isConnected={\n (linkedWallets && linkedWallets.length > 0) || isConnected\n ? true\n : false\n }\n linkedWallets={linkedWallets ?? []}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n onAnalyticEvent={onAnalyticEvent}\n onOpenChange={(open) => {\n setAddressModalOpen(open)\n }}\n onConfirmed={(address) => {\n setRecipient(address)\n }}\n onClear={() => {\n setRecipient(undefined)\n }}\n />\n <OnrampModal\n open={onrampModalOpen}\n onOpenChange={setOnrampModalOpen}\n onAnalyticEvent={onAnalyticEvent}\n moonpayOnUrlSignatureRequested={moonpayOnUrlSignatureRequested}\n fromToken={fromToken}\n toToken={token}\n fromChain={fromChain}\n toChain={toChain}\n amount={amount}\n amountFormatted={formattedAmount}\n amountToTokenFormatted={amountToTokenFormatted}\n fiatCurrency={fiatCurrency}\n recipient={recipient}\n onSuccess={onSuccess}\n moonPayCurrencyCode={moonPayCurrencyCode}\n isPassthrough={isPassthrough}\n usdRate={usdRate}\n moonPayThemeId={moonPayThemeId}\n moonPayThemeMode={moonPayThemeMode}\n moonPayApiKey={moonPayApiKey}\n />\n </div>\n )\n }}\n </OnrampWidgetRenderer>\n )\n}\n\nexport default OnrampWidget\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/widgets/OnrampWidget/widget/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { FC } from 'react'\nimport OnrampWidgetRenderer from './OnrampWidgetRenderer.js'\nimport { Box, Button, Flex, Text } from '../../../primitives/index.js'\nimport AmountInput from '../../../common/AmountInput.js'\nimport { useCallback, useContext, useEffect, useState } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faArrowDownLong } from '@fortawesome/free-solid-svg-icons/faArrowDownLong'\nimport { faArrowUpLong } from '@fortawesome/free-solid-svg-icons/faArrowUpLong'\nimport { faClipboard } from '@fortawesome/free-solid-svg-icons/faClipboard'\nimport { faCreditCard } from '@fortawesome/free-solid-svg-icons/faCreditCard'\nimport TokenSelector from '../../../common/TokenSelector/TokenSelector.js'\nimport { EventNames } from '../../../../constants/events.js'\nimport { TokenTrigger } from '../../../common/TokenSelector/triggers/TokenTrigger.js'\nimport type { LinkedWallet, Token } from '../../../../types/index.js'\nimport type { ChainVM, Execute, RelayChain } from '@relayprotocol/relay-sdk'\nimport { MultiWalletDropdown } from '../../../common/MultiWalletDropdown.js'\nimport { CustomAddressModal } from '../../../common/CustomAddressModal.js'\nimport { useAccount } from 'wagmi'\nimport { OnrampModal } from '../modals/OnrampModal.js'\nimport { formatBN } from '../../../../utils/numbers.js'\nimport { findSupportedWallet } from '../../../../utils/address.js'\nimport {\n ProviderOptionsContext,\n useHapticEvent\n} from '../../../../providers/RelayKitProvider.js'\n\ntype BaseOnrampWidgetProps = {\n defaultWalletAddress?: string\n supportedWalletVMs: Omit<ChainVM, 'hypevm' | 'lvm'>[]\n moonPayApiKey: string\n moonPayThemeId?: string\n moonPayThemeMode?: 'dark' | 'light'\n token?: Token\n setToken?: (token: Token) => void\n disablePasteWalletAddressOption?: boolean\n onTokenChange?: (token?: Token) => void\n onSuccess?: (data: Execute, moonpayRequestId: string) => void\n onError?: (error: string, data?: Execute, moonpayRequestId?: string) => void\n moonpayOnUrlSignatureRequested: (url: string) => Promise<string> | void\n onConnectWallet?: () => void\n onAnalyticEvent?: (eventName: string, data?: any) => void\n}\n\ntype MultiWalletDisabledProps = BaseOnrampWidgetProps & {\n multiWalletSupportEnabled?: false\n linkedWallets?: never\n onSetPrimaryWallet?: never\n onLinkNewWallet?: never\n}\n\ntype MultiWalletEnabledProps = BaseOnrampWidgetProps & {\n multiWalletSupportEnabled: true\n linkedWallets: LinkedWallet[]\n onSetPrimaryWallet?: (address: string) => void\n onLinkNewWallet: (params: {\n chain?: RelayChain\n direction: 'to' | 'from'\n }) => Promise<LinkedWallet> | void\n}\n\nexport type OnrampWidgetProps =\n | MultiWalletDisabledProps\n | MultiWalletEnabledProps\n\nconst OnrampWidget: FC<OnrampWidgetProps> = ({\n defaultWalletAddress,\n moonPayApiKey,\n moonpayOnUrlSignatureRequested,\n linkedWallets,\n multiWalletSupportEnabled,\n supportedWalletVMs,\n moonPayThemeId,\n moonPayThemeMode,\n token,\n setToken,\n disablePasteWalletAddressOption,\n onTokenChange,\n onConnectWallet,\n onLinkNewWallet,\n onSetPrimaryWallet,\n onAnalyticEvent: _onAnalyticEvent,\n onSuccess\n}) => {\n const onAnalyticEvent = useCallback(\n (eventName: string, data?: any) => {\n try {\n _onAnalyticEvent?.(eventName, data)\n } catch (e) {\n console.error('Error in onAnalyticEvent', eventName, data, e)\n }\n },\n [_onAnalyticEvent]\n )\n const [addressModalOpen, setAddressModalOpen] = useState(false)\n const [onrampModalOpen, setOnrampModalOpen] = useState(false)\n const { isConnected } = useAccount()\n const providerOptionsContext = useContext(ProviderOptionsContext)\n const haptic = useHapticEvent()\n const connectorKeyOverrides = providerOptionsContext.vmConnectorKeyOverrides\n\n return (\n <OnrampWidgetRenderer\n defaultWalletAddress={defaultWalletAddress}\n supportedWalletVMs={supportedWalletVMs}\n linkedWallets={linkedWallets}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n moonPayApiKey={moonPayApiKey}\n token={token}\n setToken={setToken}\n >\n {({\n displayCurrency,\n setDisplayCurrency,\n recipient,\n setRecipient,\n isRecipientLinked,\n isValidRecipient,\n amount,\n amountToToken,\n setInputValue,\n amountToTokenFormatted,\n token,\n fromToken,\n setToken,\n toChain,\n fromChain,\n toDisplayName,\n toChainWalletVMSupported,\n fiatCurrency,\n setFiatCurrency,\n minAmountCurrency,\n notEnoughFiat,\n ctaCopy,\n moonPayCurrencyCode,\n isPassthrough,\n usdRate\n }) => {\n //Reset recipient if no longer valid\n useEffect(() => {\n if (\n multiWalletSupportEnabled &&\n fromChain &&\n recipient &&\n linkedWallets &&\n !isValidRecipient\n ) {\n const supportedAddress = findSupportedWallet(\n fromChain,\n recipient,\n linkedWallets,\n connectorKeyOverrides\n )\n if (supportedAddress) {\n onSetPrimaryWallet?.(supportedAddress)\n }\n }\n\n if (\n multiWalletSupportEnabled &&\n toChain &&\n recipient &&\n linkedWallets &&\n !isValidRecipient\n ) {\n setRecipient(undefined)\n }\n }, [\n multiWalletSupportEnabled,\n fromChain?.id,\n toChain?.id,\n linkedWallets,\n onSetPrimaryWallet,\n isValidRecipient,\n connectorKeyOverrides\n ])\n\n const formattedAmount =\n amount === ''\n ? ''\n : amount.endsWith('.')\n ? new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n }).format(+amount) + '.'\n : new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n minimumFractionDigits: amount.includes('.0')\n ? 1\n : amount.endsWith('0') && amount.includes('.')\n ? 2\n : 0,\n maximumFractionDigits: amount.includes('.') ? 2 : 0,\n minimumSignificantDigits: 1,\n maximumSignificantDigits: amount.length\n }).format(+amount)\n\n return (\n <div\n className=\"relay-kit-reset relay:max-w-[408px] relay:min-w-[320px] relay:w-full\"\n >\n <Flex\n direction=\"column\"\n className=\"relay:gap-2 relay:w-full relay:border-widget\"\n >\n <Flex\n direction=\"column\"\n className=\"relay:w-full relay:overflow-hidden relay:px-4 relay:pt-[40px] relay:pb-[24px] relay:rounded-widget-card relay:bg-[var(--relay-colors-widget-background)] relay:border-widget-card relay:mb-[var(--relay-spacing-widget-card-section-gutter)]\"\n >\n <Text\n style=\"subtitle2\"\n color=\"subtle\"\n className=\"relay:text-center\"\n >\n Enter an amount\n </Text>\n <AmountInput\n value={\n displayCurrency\n ? amountToToken !== ''\n ? `${amountToToken} ${token.symbol}`\n : ''\n : formattedAmount\n }\n setValue={(e) => {\n //unused\n }}\n placeholder={` 0`}\n onChange={(e) => {\n const input = e.target as any\n\n setInputValue(input.value)\n if (displayCurrency) {\n setTimeout(() => {\n const numericValue = input.value.match(/[\\d.]+/g)\n const numericValueLength =\n numericValue !== null\n ? numericValue.join('').length\n : 0\n input.setSelectionRange(\n numericValueLength,\n numericValueLength\n )\n }, 0)\n }\n }}\n onKeyDown={(e) => {\n const input = e.target as HTMLInputElement\n const cursorPosition = input.selectionStart\n\n // Prevent multiple decimals\n if (\n e.key === '.' &&\n (input.value.match(/\\./g) || []).length > 0\n ) {\n e.preventDefault() // Prevent the key press if there's already a decimal\n return\n }\n\n if (e.key === 'ArrowLeft' && cursorPosition !== null) {\n const valueBeforeCursor = input.value.substring(\n 0,\n cursorPosition\n )\n const charBeforeCursor = valueBeforeCursor.charAt(\n cursorPosition - 1\n )\n if (charBeforeCursor === '$') {\n e.preventDefault()\n }\n }\n if (e.key === 'ArrowRight' && cursorPosition !== null) {\n const valueAfterCursor = input.value.substring(\n 0,\n cursorPosition + 1\n )\n const charAfterCursor =\n valueAfterCursor.charAt(cursorPosition)\n if (charAfterCursor === ' ') {\n e.preventDefault()\n }\n }\n }}\n onMouseDown={(e) => {\n const input = e.target as HTMLInputElement\n input.style.caretColor = 'transparent'\n }}\n onMouseUp={(e) => {\n const input = e.target as HTMLInputElement\n const cursorPosition = input.selectionStart // Get the current cursor position\n if (cursorPosition !== null) {\n const valueAfterCursor = input.value.substring(\n 0,\n cursorPosition + 1\n )\n const charAfterCursor =\n valueAfterCursor.charAt(cursorPosition)\n const valueBeforeCursor = input.value.substring(\n 0,\n cursorPosition\n )\n const charBeforeCursor = valueBeforeCursor.charAt(\n cursorPosition - 1\n )\n const specialCharacterRegex = /[ a-zA-Z]/\n const alphaRegex = /[a-zA-Z]/\n if (\n charAfterCursor === '$' ||\n alphaRegex.test(charAfterCursor) ||\n specialCharacterRegex.test(charBeforeCursor)\n ) {\n e.preventDefault()\n e.stopPropagation()\n input.setSelectionRange(1, 1)\n }\n }\n input.style.caretColor = 'initial'\n }}\n className=\"relay:text-center relay:whitespace-pre\"\n inputStyle={{\n fontWeight: '700',\n fontSize: 48,\n lineHeight: '58px',\n textAlign: 'center',\n textIndent:\n amount === '' || amountToToken === ''\n ? '-36px'\n : undefined,\n whiteSpace: 'pre'\n }}\n containerClassName=\"relay:mb-2 relay:w-full\"\n />\n {notEnoughFiat ? (\n <Text color=\"red\" className=\"relay:mb-[24px] relay:text-center\">\n Minimum amount is{' '}\n {displayCurrency && minAmountCurrency\n ? `${minAmountCurrency} ${token.symbol}`\n : '$20'}\n </Text>\n ) : undefined}\n <button\n className=\"relay:gap-2 relay:cursor-pointer relay:flex relay:items-center relay:justify-center relay:mb-[16px] relay:self-center\"\n onClick={() => {\n const _displayCurrency = !displayCurrency\n setDisplayCurrency(_displayCurrency)\n if (_displayCurrency) {\n let _amountToToken = 21 / usdRate\n if (+amountToToken > _amountToToken) {\n _amountToToken = +amountToToken\n }\n setInputValue(\n formatBN(_amountToToken, 5, token.decimals, false),\n _displayCurrency\n )\n }\n }}\n >\n <Text style=\"body2\" color=\"subtle\">\n {displayCurrency\n ? formattedAmount\n : `${amountToTokenFormatted} ${token.symbol}`}\n </Text>\n <Flex\n className=\"relay:text-[color:var(--relay-colors-gray8)]\"\n >\n <FontAwesomeIcon\n className=\"relay:h-[14px]\"\n icon={faArrowUpLong}\n />\n <FontAwesomeIcon\n className=\"relay:h-[14px]\"\n icon={faArrowDownLong}\n />\n </Flex>\n </button>\n <TokenSelector\n address={recipient}\n isValidAddress={isValidRecipient}\n token={token}\n onAnalyticEvent={onAnalyticEvent}\n fromChainWalletVMSupported={false}\n supportedWalletVMs={[]}\n setToken={(token) => {\n setToken(token)\n onTokenChange?.(token)\n }}\n context=\"to\"\n trigger={\n <div\n className=\"relay:w-max relay:mx-auto relay:mb-[16px]\"\n data-testid=\"onramp-token-select-button\"\n >\n <TokenTrigger token={token} />\n </div>\n }\n />\n <Flex className=\"relay:gap-2 relay:mx-auto\">\n <Button\n color=\"white\"\n corners=\"pill\"\n size=\"none\"\n className=\"relay:h-[30px] relay:px-[14px] relay:py-[4px] relay:text-[14px]\"\n onClick={() => {\n setDisplayCurrency(false)\n setInputValue('100', false)\n }}\n >\n <Text style=\"subtitle2\">$100</Text>\n </Button>\n <Button\n color=\"white\"\n corners=\"pill\"\n size=\"none\"\n className=\"relay:h-[30px] relay:px-[14px] relay:py-[4px] relay:text-[14px]\"\n onClick={() => {\n setDisplayCurrency(false)\n setInputValue('300', false)\n }}\n >\n <Text style=\"subtitle2\">$300</Text>\n </Button>\n <Button\n color=\"white\"\n corners=\"pill\"\n size=\"none\"\n className=\"relay:h-[30px] relay:px-[14px] relay:py-[4px] relay:text-[14px]\"\n onClick={() => {\n setDisplayCurrency(false)\n setInputValue('1000', false)\n }}\n >\n <Text style=\"subtitle2\">$1,000</Text>\n </Button>\n </Flex>\n </Flex>\n </Flex>\n <Flex\n direction=\"column\"\n className=\"relay:w-full relay:overflow-hidden relay:p-4 relay:rounded-widget-card relay:bg-[var(--relay-colors-widget-background)] relay:border-widget-card relay:mb-[var(--relay-spacing-widget-card-section-gutter)]\"\n >\n <Flex justify=\"between\" align=\"center\" className=\"relay:mb-2\">\n <Text color=\"subtle\" style=\"subtitle2\">\n Recipient\n </Text>\n {multiWalletSupportEnabled === true &&\n toChainWalletVMSupported ? (\n <MultiWalletDropdown\n context=\"destination\"\n selectedWalletAddress={recipient}\n onSelect={(wallet) => setRecipient(wallet.address)}\n chain={toChain}\n onLinkNewWallet={() => {\n if (\n (!linkedWallets || linkedWallets.length === 0) &&\n toChainWalletVMSupported\n ) {\n onConnectWallet?.()\n } else {\n onLinkNewWallet?.({\n chain: toChain,\n direction: 'to'\n })?.then((wallet) => {\n onSetPrimaryWallet?.(wallet.address)\n })\n }\n }}\n setAddressModalOpen={setAddressModalOpen}\n wallets={linkedWallets!}\n onAnalyticEvent={onAnalyticEvent}\n disablePasteWalletAddressOption={\n disablePasteWalletAddressOption\n }\n testId=\"onramp-wallet-select-button\"\n />\n ) : null}\n {!multiWalletSupportEnabled || !toChainWalletVMSupported ? (\n <Button\n color={\n isValidRecipient && !isRecipientLinked\n ? 'warning'\n : 'secondary'\n }\n corners=\"pill\"\n size=\"none\"\n className=\"relay:flex relay:items-center relay:px-2 relay:py-1\"\n onClick={() => {\n setAddressModalOpen(true)\n onAnalyticEvent?.(EventNames.SWAP_ADDRESS_MODAL_CLICKED)\n }}\n >\n {isValidRecipient && !isRecipientLinked ? (\n <Box className=\"relay:text-[color:var(--relay-colors-amber11)]\">\n <FontAwesomeIcon\n icon={faClipboard}\n width={16}\n height={16}\n />\n </Box>\n ) : null}\n <Text\n style=\"subtitle2\"\n className={\n isValidRecipient && !isRecipientLinked\n ? 'relay:text-[color:var(--relay-colors-amber11)]'\n : 'relay:text-[color:var(--relay-colors-anchor-color)]'\n }\n >\n {!isValidRecipient ? `Enter Address` : toDisplayName}\n </Text>\n </Button>\n ) : null}\n </Flex>\n <Flex justify=\"between\" align=\"center\">\n <Text color=\"subtle\" style=\"subtitle2\">\n Paying with\n </Text>\n <Flex\n className=\"relay:items-center relay:gap-2 relay:ml-auto relay:mr-2 relay:text-[color:var(--relay-colors-gray9)]\"\n >\n <FontAwesomeIcon style={{ width: 16 }} icon={faCreditCard} />\n <Text style=\"subtitle2\">Card</Text>\n </Flex>\n {/* Hiding this until issues are resolved with MoonPay\n <FiatCurrencyModal\n fiatCurrency={fiatCurrency}\n setFiatCurrency={setFiatCurrency}\n moonPayApiKey={moonPayApiKey}\n /> */}\n </Flex>\n </Flex>\n <Button\n cta={true}\n className=\"relay:w-full relay:justify-center\"\n disabled={notEnoughFiat}\n onClick={() => {\n haptic('medium')\n if (!recipient && toChainWalletVMSupported) {\n if (!linkedWallets || linkedWallets.length === 0) {\n onConnectWallet?.()\n } else {\n onLinkNewWallet?.({\n chain: toChain,\n direction: 'to'\n })?.then((wallet) => {\n onSetPrimaryWallet?.(wallet.address)\n })\n }\n } else if (!recipient) {\n setAddressModalOpen(true)\n } else {\n setOnrampModalOpen(true)\n }\n }}\n >\n {ctaCopy}\n </Button>\n <CustomAddressModal\n open={addressModalOpen}\n toToken={token}\n toAddress={recipient}\n toChain={toChain}\n isConnected={\n (linkedWallets && linkedWallets.length > 0) || isConnected\n ? true\n : false\n }\n linkedWallets={linkedWallets ?? []}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n onAnalyticEvent={onAnalyticEvent}\n onOpenChange={(open) => {\n setAddressModalOpen(open)\n }}\n onConfirmed={(address) => {\n setRecipient(address)\n }}\n onClear={() => {\n setRecipient(undefined)\n }}\n />\n <OnrampModal\n open={onrampModalOpen}\n onOpenChange={setOnrampModalOpen}\n onAnalyticEvent={onAnalyticEvent}\n moonpayOnUrlSignatureRequested={moonpayOnUrlSignatureRequested}\n fromToken={fromToken}\n toToken={token}\n fromChain={fromChain}\n toChain={toChain}\n amount={amount}\n amountFormatted={formattedAmount}\n amountToTokenFormatted={amountToTokenFormatted}\n fiatCurrency={fiatCurrency}\n recipient={recipient}\n onSuccess={onSuccess}\n moonPayCurrencyCode={moonPayCurrencyCode}\n isPassthrough={isPassthrough}\n usdRate={usdRate}\n moonPayThemeId={moonPayThemeId}\n moonPayThemeMode={moonPayThemeMode}\n moonPayApiKey={moonPayApiKey}\n />\n </div>\n )\n }}\n </OnrampWidgetRenderer>\n )\n}\n\nexport default OnrampWidget\n"]}
@@ -157,8 +157,18 @@ const SwapWidgetRenderer = ({ transactionModalOpen, setTransactionModalOpen, dep
157
157
  : undefined) !== undefined;
158
158
  const isValidFromAddress = (0, address_js_1.isValidAddress)(fromChain?.vmType, address ?? '', fromChain?.id, linkedWallet?.connector, connectorKeyOverrides);
159
159
  const fromAddressWithFallback = (0, address_js_1.addressWithFallback)(fromChain?.vmType, address, fromChain?.id, linkedWallet?.connector, connectorKeyOverrides);
160
- const isValidToAddress = (0, address_js_1.isValidAddress)(toChain?.vmType, recipient ?? '', toChain?.id);
161
- const toAddressWithFallback = (0, address_js_1.addressWithFallback)(toChain?.vmType, recipient, toChain?.id);
160
+ const recipientIsDestinationToken = Boolean(toChain &&
161
+ toToken &&
162
+ toToken.chainId === toChain.id &&
163
+ (0, address_js_1.addressesEqual)(toChain.vmType ?? 'evm', recipient, toToken.address));
164
+ const { isKnownTokenContract: recipientMatchesKnownToken } = (0, index_js_1.useKnownTokenContract)(toChain, customToAddress, customToAddress !== undefined && !recipientIsDestinationToken);
165
+ const recipientIsKnownTokenContract = recipientMatchesKnownToken;
166
+ const isValidToAddress = !recipientIsDestinationToken &&
167
+ !recipientIsKnownTokenContract &&
168
+ (0, address_js_1.isValidAddress)(toChain?.vmType, recipient ?? '', toChain?.id);
169
+ const toAddressWithFallback = (0, address_js_1.addressWithFallback)(toChain?.vmType, recipientIsDestinationToken || recipientIsKnownTokenContract
170
+ ? undefined
171
+ : recipient, toChain?.id);
162
172
  const { displayName: toDisplayName } = (0, index_js_1.useDisplayName)(recipient, toChain?.vmType, toChain?.id);
163
173
  const [currentSlippageTolerance, setCurrentSlippageTolerance] = (0, react_1.useState)(slippageTolerance);
164
174
  (0, react_1.useEffect)(() => {
@@ -465,6 +475,9 @@ const SwapWidgetRenderer = ({ transactionModalOpen, setTransactionModalOpen, dep
465
475
  if (!wallet && !walletClient.data) {
466
476
  throw new Error('Missing a wallet');
467
477
  }
478
+ if (recipientMatchesKnownToken) {
479
+ throw new Error('Recipient address is a token contract, not a wallet');
480
+ }
468
481
  setSteps(quote?.steps);
469
482
  setQuoteInProgress(quote);
470
483
  setTransactionModalOpen(true);
@@ -590,7 +603,8 @@ const SwapWidgetRenderer = ({ transactionModalOpen, setTransactionModalOpen, dep
590
603
  setQuoteInProgress,
591
604
  invalidateBalanceQueries,
592
605
  linkedWallet,
593
- abortController
606
+ abortController,
607
+ recipientMatchesKnownToken
594
608
  ]);
595
609
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({
596
610
  quote,
@@ -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 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 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 =\n isChainVmTypeSupported(toChain?.vmType, supportedWalletVMs)\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 isDuneBalance: fromBalanceIsDune,\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 isDuneBalance: toBalanceIsDune,\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 const invalidatePeriodically = (invalidateFn: () => void) => {\n let maxRefreshes = 4\n let refreshCount = 0\n const timer = setInterval(() => {\n if (maxRefreshes === refreshCount) {\n clearInterval(timer)\n return\n }\n refreshCount++\n invalidateFn()\n }, 3000)\n }\n\n queryClient.invalidateQueries({ queryKey: ['useDuneBalances'] })\n\n // Dune balances are sometimes stale, because of this we need to aggressively fetch them\n // for a predetermined period to make sure we get back a fresh response\n if (fromBalanceIsDune) {\n invalidatePeriodically(() => {\n queryClient.invalidateQueries({ queryKey: fromBalanceQueryKey })\n })\n } else {\n queryClient.invalidateQueries({ queryKey: fromBalanceQueryKey })\n }\n if (toBalanceIsDune) {\n invalidatePeriodically(() => {\n queryClient.invalidateQueries({ queryKey: toBalanceQueryKey })\n })\n } else {\n queryClient.invalidateQueries({ queryKey: toBalanceQueryKey })\n }\n }, [\n queryClient,\n fromBalanceQueryKey,\n toBalanceQueryKey,\n toBalanceIsDune,\n fromBalanceIsDune,\n address\n ])\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 const isValidToAddress = isValidAddress(\n toChain?.vmType,\n recipient ?? '',\n toChain?.id\n )\n\n const toAddressWithFallback = addressWithFallback(\n toChain?.vmType,\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 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 ])\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'>[]\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 =\n isChainVmTypeSupported(toChain?.vmType, supportedWalletVMs)\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 isDuneBalance: fromBalanceIsDune,\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 isDuneBalance: toBalanceIsDune,\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 const invalidatePeriodically = (invalidateFn: () => void) => {\n let maxRefreshes = 4\n let refreshCount = 0\n const timer = setInterval(() => {\n if (maxRefreshes === refreshCount) {\n clearInterval(timer)\n return\n }\n refreshCount++\n invalidateFn()\n }, 3000)\n }\n\n queryClient.invalidateQueries({ queryKey: ['useDuneBalances'] })\n\n // Dune balances are sometimes stale, because of this we need to aggressively fetch them\n // for a predetermined period to make sure we get back a fresh response\n if (fromBalanceIsDune) {\n invalidatePeriodically(() => {\n queryClient.invalidateQueries({ queryKey: fromBalanceQueryKey })\n })\n } else {\n queryClient.invalidateQueries({ queryKey: fromBalanceQueryKey })\n }\n if (toBalanceIsDune) {\n invalidatePeriodically(() => {\n queryClient.invalidateQueries({ queryKey: toBalanceQueryKey })\n })\n } else {\n queryClient.invalidateQueries({ queryKey: toBalanceQueryKey })\n }\n }, [\n queryClient,\n fromBalanceQueryKey,\n toBalanceQueryKey,\n toBalanceIsDune,\n fromBalanceIsDune,\n address\n ])\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"]}
@@ -15,7 +15,7 @@ const WidgetContainer = ({ steps, setSteps, quoteInProgress, setQuoteInProgress,
15
15
  }, fromChain: fromChain, toChain: toChain, fromToken: fromToken, toToken: toToken, slippageTolerance: slippageTolerance, address: address, onAnalyticEvent: onAnalyticEvent, onSuccess: onSwapSuccess, onSwapValidating: onSwapValidating, wallet: wallet, linkedWallets: linkedWallets, multiWalletSupportEnabled: multiWalletSupportEnabled, invalidateQuoteQuery: invalidateQuoteQuery }), (0, jsx_runtime_1.jsx)(DepositAddressModal_js_1.DepositAddressModal, { open: depositAddressModalOpen, onOpenChange: (open) => {
16
16
  setDepositAddressModalOpen(open);
17
17
  onDepositAddressModalOpenChange(open);
18
- }, fromChain: fromChain, fromToken: fromToken, toToken: toToken, debouncedInputAmountValue: debouncedInputAmountValue, debouncedOutputAmountValue: debouncedOutputAmountValue, address: address, recipient: recipient, onAnalyticEvent: onAnalyticEvent, onSuccess: onSwapSuccess, invalidateBalanceQueries: invalidateBalanceQueries })] })) : null, (0, jsx_runtime_1.jsx)(CustomAddressModal_js_1.CustomAddressModal, { open: addressModalOpen, toAddress: customToAddress, toChain: toChain, isConnected: wallet !== undefined || isConnected ? true : false, linkedWallets: linkedWallets ?? [], multiWalletSupportEnabled: multiWalletSupportEnabled, wallet: wallet, onAnalyticEvent: onAnalyticEvent, onOpenChange: (open) => {
18
+ }, fromChain: fromChain, fromToken: fromToken, toToken: toToken, debouncedInputAmountValue: debouncedInputAmountValue, debouncedOutputAmountValue: debouncedOutputAmountValue, address: address, recipient: recipient, onAnalyticEvent: onAnalyticEvent, onSuccess: onSwapSuccess, invalidateBalanceQueries: invalidateBalanceQueries })] })) : null, (0, jsx_runtime_1.jsx)(CustomAddressModal_js_1.CustomAddressModal, { open: addressModalOpen, toToken: toToken, toAddress: customToAddress, toChain: toChain, isConnected: wallet !== undefined || isConnected ? true : false, linkedWallets: linkedWallets ?? [], multiWalletSupportEnabled: multiWalletSupportEnabled, wallet: wallet, onAnalyticEvent: onAnalyticEvent, onOpenChange: (open) => {
19
19
  setAddressModalOpen(open);
20
20
  }, onConfirmed: (address) => {
21
21
  setCustomToAddress(address);
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetContainer.js","sourceRoot":"","sources":["../../../../src/components/widgets/WidgetContainer.tsx"],"names":[],"mappings":";;;AACA,2EAAoE;AACpE,wFAAiF;AACjF,8FAAuF;AACvF,mDAAiD;AAOjD,iCAAkC;AA8ClC,MAAM,eAAe,GAA6B,CAAC,EACjD,KAAK,EACL,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EACP,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,OAAO,EACP,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,MAAM,EACN,aAAa,EACb,yBAAyB,EACzB,SAAS,EACT,YAAY,EACZ,4BAA4B,EAC5B,+BAA+B,EAC/B,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EACnB,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,IAAA,qBAAU,GAAE,CAAA;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAA;IAEpC,OAAO,CACL,iCAAK,SAAS,EAAC,iBAAiB,aAC7B,QAAQ,EAAE,EACV,SAAS,CAAC,CAAC,CAAC,CACX,6DACE,uBAAC,sCAAgB,IACf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,oBAAoB,EAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;4BACrB,uBAAuB,CAAC,IAAI,CAAC,CAAA;4BAC7B,4BAA4B,CAAC,IAAI,CAAC,CAAA;wBACpC,CAAC,EACD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,aAAa,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,oBAAoB,GAC1C,EACF,uBAAC,4CAAmB,IAClB,IAAI,EAAE,uBAAuB,EAC7B,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;4BACrB,0BAA0B,CAAC,IAAI,CAAC,CAAA;4BAChC,+BAA+B,CAAC,IAAI,CAAC,CAAA;wBACvC,CAAC,EACD,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,yBAAyB,EAAE,yBAAyB,EACpD,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,aAAa,EACxB,wBAAwB,EAAE,wBAAwB,GAClD,IACD,CACJ,CAAC,CAAC,CAAC,IAAI,EAER,uBAAC,0CAAkB,IACjB,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAC/D,aAAa,EAAE,aAAa,IAAI,EAAE,EAClC,yBAAyB,EAAE,yBAAyB,EACpD,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrB,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAC3B,CAAC,EACD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;oBACvB,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBAC7B,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACZ,kBAAkB,CAAC,SAAS,CAAC,CAAA;gBAC/B,CAAC,GACD,IACE,CACP,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,eAAe,CAAA","sourcesContent":["import { type FC, type ReactNode } from 'react'\nimport { CustomAddressModal } from '../common/CustomAddressModal.js'\nimport { TransactionModal } from '../common/TransactionModal/TransactionModal.js'\nimport { DepositAddressModal } from '../common/TransactionModal/DepositAddressModal.js'\nimport { useMounted } from '../../hooks/index.js'\nimport type { ChildrenProps } from './SwapWidgetRenderer.js'\nimport type {\n RelayChain,\n AdaptedWallet,\n Execute\n} from '@relayprotocol/relay-sdk'\nimport { useAccount } from 'wagmi'\nimport type { LinkedWallet } from '../../types/index.js'\n\nexport type WidgetContainerProps = {\n steps: Execute['steps'] | null\n transactionModalOpen: boolean\n depositAddressModalOpen: boolean\n addressModalOpen: boolean\n toChain?: RelayChain\n fromChain?: RelayChain\n wallet?: AdaptedWallet\n linkedWallets?: LinkedWallet[]\n multiWalletSupportEnabled?: boolean\n setTransactionModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n setDepositAddressModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n setAddressModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n children: () => ReactNode\n onTransactionModalOpenChange: (open: boolean) => void\n onDepositAddressModalOpenChange: (open: boolean) => void\n onAnalyticEvent?: (eventName: string, data?: any) => void\n onSwapSuccess?: (data: Execute) => void\n onSwapValidating?: (data: Execute) => void\n invalidateBalanceQueries: () => void\n invalidateQuoteQuery: () => void\n} & Pick<\n ChildrenProps,\n | 'fromToken'\n | 'toToken'\n | 'amountInputValue'\n | 'amountOutputValue'\n | 'debouncedInputAmountValue'\n | 'debouncedOutputAmountValue'\n | 'recipient'\n | 'customToAddress'\n | 'tradeType'\n | 'address'\n | 'setCustomToAddress'\n | 'timeEstimate'\n | 'slippageTolerance'\n | 'setSteps'\n | 'swapError'\n | 'setSwapError'\n | 'quoteInProgress'\n | 'setQuoteInProgress'\n>\n\nconst WidgetContainer: FC<WidgetContainerProps> = ({\n steps,\n setSteps,\n quoteInProgress,\n setQuoteInProgress,\n transactionModalOpen,\n setTransactionModalOpen,\n depositAddressModalOpen,\n setDepositAddressModalOpen,\n addressModalOpen,\n setAddressModalOpen,\n children,\n fromChain,\n fromToken,\n toToken,\n debouncedInputAmountValue,\n debouncedOutputAmountValue,\n customToAddress,\n address,\n slippageTolerance,\n timeEstimate,\n recipient,\n toChain,\n wallet,\n linkedWallets,\n multiWalletSupportEnabled,\n swapError,\n setSwapError,\n onTransactionModalOpenChange,\n onDepositAddressModalOpenChange,\n onSwapSuccess,\n onSwapValidating,\n onAnalyticEvent,\n invalidateBalanceQueries,\n invalidateQuoteQuery,\n setCustomToAddress\n}) => {\n const isMounted = useMounted()\n const { isConnected } = useAccount()\n\n return (\n <div className=\"relay-kit-reset\">\n {children()}\n {isMounted ? (\n <>\n <TransactionModal\n steps={steps}\n setSteps={setSteps}\n quote={quoteInProgress}\n setQuote={setQuoteInProgress}\n swapError={swapError}\n setSwapError={setSwapError}\n open={transactionModalOpen}\n onOpenChange={(open) => {\n setTransactionModalOpen(open)\n onTransactionModalOpenChange(open)\n }}\n fromChain={fromChain}\n toChain={toChain}\n fromToken={fromToken}\n toToken={toToken}\n slippageTolerance={slippageTolerance}\n address={address}\n onAnalyticEvent={onAnalyticEvent}\n onSuccess={onSwapSuccess}\n onSwapValidating={onSwapValidating}\n wallet={wallet}\n linkedWallets={linkedWallets}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n invalidateQuoteQuery={invalidateQuoteQuery}\n />\n <DepositAddressModal\n open={depositAddressModalOpen}\n onOpenChange={(open) => {\n setDepositAddressModalOpen(open)\n onDepositAddressModalOpenChange(open)\n }}\n fromChain={fromChain}\n fromToken={fromToken}\n toToken={toToken}\n debouncedInputAmountValue={debouncedInputAmountValue}\n debouncedOutputAmountValue={debouncedOutputAmountValue}\n address={address}\n recipient={recipient}\n onAnalyticEvent={onAnalyticEvent}\n onSuccess={onSwapSuccess}\n invalidateBalanceQueries={invalidateBalanceQueries}\n />\n </>\n ) : null}\n\n <CustomAddressModal\n open={addressModalOpen}\n toAddress={customToAddress}\n toChain={toChain}\n isConnected={wallet !== undefined || isConnected ? true : false}\n linkedWallets={linkedWallets ?? []}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n wallet={wallet}\n onAnalyticEvent={onAnalyticEvent}\n onOpenChange={(open) => {\n setAddressModalOpen(open)\n }}\n onConfirmed={(address) => {\n setCustomToAddress(address)\n }}\n onClear={() => {\n setCustomToAddress(undefined)\n }}\n />\n </div>\n )\n}\n\nexport default WidgetContainer\n"]}
1
+ {"version":3,"file":"WidgetContainer.js","sourceRoot":"","sources":["../../../../src/components/widgets/WidgetContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type FC, type ReactNode } from 'react'\nimport { CustomAddressModal } from '../common/CustomAddressModal.js'\nimport { TransactionModal } from '../common/TransactionModal/TransactionModal.js'\nimport { DepositAddressModal } from '../common/TransactionModal/DepositAddressModal.js'\nimport { useMounted } from '../../hooks/index.js'\nimport type { ChildrenProps } from './SwapWidgetRenderer.js'\nimport type {\n RelayChain,\n AdaptedWallet,\n Execute\n} from '@relayprotocol/relay-sdk'\nimport { useAccount } from 'wagmi'\nimport type { LinkedWallet } from '../../types/index.js'\n\nexport type WidgetContainerProps = {\n steps: Execute['steps'] | null\n transactionModalOpen: boolean\n depositAddressModalOpen: boolean\n addressModalOpen: boolean\n toChain?: RelayChain\n fromChain?: RelayChain\n wallet?: AdaptedWallet\n linkedWallets?: LinkedWallet[]\n multiWalletSupportEnabled?: boolean\n setTransactionModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n setDepositAddressModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n setAddressModalOpen: React.Dispatch<React.SetStateAction<boolean>>\n children: () => ReactNode\n onTransactionModalOpenChange: (open: boolean) => void\n onDepositAddressModalOpenChange: (open: boolean) => void\n onAnalyticEvent?: (eventName: string, data?: any) => void\n onSwapSuccess?: (data: Execute) => void\n onSwapValidating?: (data: Execute) => void\n invalidateBalanceQueries: () => void\n invalidateQuoteQuery: () => void\n} & Pick<\n ChildrenProps,\n | 'fromToken'\n | 'toToken'\n | 'amountInputValue'\n | 'amountOutputValue'\n | 'debouncedInputAmountValue'\n | 'debouncedOutputAmountValue'\n | 'recipient'\n | 'customToAddress'\n | 'tradeType'\n | 'address'\n | 'setCustomToAddress'\n | 'timeEstimate'\n | 'slippageTolerance'\n | 'setSteps'\n | 'swapError'\n | 'setSwapError'\n | 'quoteInProgress'\n | 'setQuoteInProgress'\n>\n\nconst WidgetContainer: FC<WidgetContainerProps> = ({\n steps,\n setSteps,\n quoteInProgress,\n setQuoteInProgress,\n transactionModalOpen,\n setTransactionModalOpen,\n depositAddressModalOpen,\n setDepositAddressModalOpen,\n addressModalOpen,\n setAddressModalOpen,\n children,\n fromChain,\n fromToken,\n toToken,\n debouncedInputAmountValue,\n debouncedOutputAmountValue,\n customToAddress,\n address,\n slippageTolerance,\n timeEstimate,\n recipient,\n toChain,\n wallet,\n linkedWallets,\n multiWalletSupportEnabled,\n swapError,\n setSwapError,\n onTransactionModalOpenChange,\n onDepositAddressModalOpenChange,\n onSwapSuccess,\n onSwapValidating,\n onAnalyticEvent,\n invalidateBalanceQueries,\n invalidateQuoteQuery,\n setCustomToAddress\n}) => {\n const isMounted = useMounted()\n const { isConnected } = useAccount()\n\n return (\n <div className=\"relay-kit-reset\">\n {children()}\n {isMounted ? (\n <>\n <TransactionModal\n steps={steps}\n setSteps={setSteps}\n quote={quoteInProgress}\n setQuote={setQuoteInProgress}\n swapError={swapError}\n setSwapError={setSwapError}\n open={transactionModalOpen}\n onOpenChange={(open) => {\n setTransactionModalOpen(open)\n onTransactionModalOpenChange(open)\n }}\n fromChain={fromChain}\n toChain={toChain}\n fromToken={fromToken}\n toToken={toToken}\n slippageTolerance={slippageTolerance}\n address={address}\n onAnalyticEvent={onAnalyticEvent}\n onSuccess={onSwapSuccess}\n onSwapValidating={onSwapValidating}\n wallet={wallet}\n linkedWallets={linkedWallets}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n invalidateQuoteQuery={invalidateQuoteQuery}\n />\n <DepositAddressModal\n open={depositAddressModalOpen}\n onOpenChange={(open) => {\n setDepositAddressModalOpen(open)\n onDepositAddressModalOpenChange(open)\n }}\n fromChain={fromChain}\n fromToken={fromToken}\n toToken={toToken}\n debouncedInputAmountValue={debouncedInputAmountValue}\n debouncedOutputAmountValue={debouncedOutputAmountValue}\n address={address}\n recipient={recipient}\n onAnalyticEvent={onAnalyticEvent}\n onSuccess={onSwapSuccess}\n invalidateBalanceQueries={invalidateBalanceQueries}\n />\n </>\n ) : null}\n\n <CustomAddressModal\n open={addressModalOpen}\n toToken={toToken}\n toAddress={customToAddress}\n toChain={toChain}\n isConnected={wallet !== undefined || isConnected ? true : false}\n linkedWallets={linkedWallets ?? []}\n multiWalletSupportEnabled={multiWalletSupportEnabled}\n wallet={wallet}\n onAnalyticEvent={onAnalyticEvent}\n onOpenChange={(open) => {\n setAddressModalOpen(open)\n }}\n onConfirmed={(address) => {\n setCustomToAddress(address)\n }}\n onClear={() => {\n setCustomToAddress(undefined)\n }}\n />\n </div>\n )\n}\n\nexport default WidgetContainer\n"]}