{"version":3,"file":"static/chunks/pages/swap-84c8f58981848611.js","mappings":"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","sources":["webpack://_N_E/?d217","webpack://_N_E/./components/Modal/TokenSelectModal.tsx","webpack://_N_E/./hooks/globalState/useWarningTokens.ts","webpack://_N_E/./utils/routing/types.ts","webpack://_N_E/./utils/routing/utils.ts","webpack://_N_E/./components/Button/SwapBtn/utils.ts","webpack://_N_E/./components/Button/SwapBtn/SwapBtnComponent.tsx","webpack://_N_E/./components/Button/SwapBtn/SwapBtn.tsx","webpack://_N_E/./components/Button/SwapBtn/index.tsx","webpack://_N_E/./helper/fetchHelper/getAutomanClient.ts","webpack://_N_E/./helper/fetchHelper/getQuote.ts","webpack://_N_E/./helper/fetchHelper/index.ts","webpack://_N_E/./views/Swap/index.tsx","webpack://_N_E/./pages/swap.tsx","webpack://_N_E/./views/Swap/style.ts","webpack://_N_E/<anon>"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/swap\",\n function () {\n return require(\"private-next-pages/swap.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/swap\"])\n });\n }\n ","import { ITokenSelectContentProps, TokenSelectContent } from \"@aperture/uikit\";\n\nexport const TokenSelectModal: React.FC<ITokenSelectContentProps> = ({\n commonTokens,\n selectedToken = null,\n selectToken,\n selectUnknownToken,\n handleUnknownAddress,\n customClose,\n onClose,\n}) => {\n return (\n <TokenSelectContent\n commonTokens={commonTokens}\n selectedToken={selectedToken}\n selectToken={selectToken}\n selectUnknownToken={selectUnknownToken}\n handleUnknownAddress={handleUnknownAddress}\n customClose={customClose}\n onClose={onClose}\n />\n );\n};\n","import { useAllChainStateStore } from \"@/components/GlobalStore\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { getPublicClient } from \"@/helper/getPublicClient\";\nimport { viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Token } from \"@uniswap/sdk-core\";\nimport { Address } from \"viem\";\nimport { useEventCallback } from \"../useEventCallback\";\nimport { useFetchUserTokensBalance } from \"../useFetchUserTokensBalance\";\n\nexport type TMutateWarningTokens = (\n chainId: number,\n warningTokens: Token | Token[]\n) => Promise<void>;\n\nexport const useMutateWarningTokens = () => {\n const { networkId } = useNetwork();\n const { mutate: tokenBalanceMutate } = useFetchUserTokensBalance();\n const { updateTokenMap } = useAllChainStateStore();\n\n const mutateWarningTokens: TMutateWarningTokens = useEventCallback(\n async (chainId, token) => {\n const tokens = Array.isArray(token) ? token : [token];\n\n updateTokenMap({\n chainId: chainId,\n tokens,\n });\n\n if (chainId === networkId) {\n await tokenBalanceMutate();\n }\n }\n );\n\n const mutateWarningTokensByAddress = useEventCallback(\n async (chainId: number, tokenAddress: Address | Address[]) => {\n const addresses = Array.isArray(tokenAddress)\n ? tokenAddress\n : [tokenAddress];\n\n const tokens = await viem.getBulkTokens(\n addresses,\n chainId,\n getPublicClient(chainId),\n undefined,\n true\n );\n\n return mutateWarningTokens(chainId, tokens);\n }\n );\n\n return {\n mutateWarningTokens,\n mutateWarningTokensByAddress,\n };\n};\n","import { viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { MixedRouteSDK, Protocol, Trade } from \"@uniswap/router-sdk\";\nimport {\n ChainId,\n Currency,\n CurrencyAmount,\n Percent,\n TradeType,\n} from \"@uniswap/sdk-core\";\nimport {\n DutchOrderInfo,\n DutchOrderInfoJSON,\n DutchOrderTrade as IDutchOrderTrade,\n} from \"@uniswap/uniswapx-sdk\";\nimport { Route as V2Route } from \"@uniswap/v2-sdk\";\nimport { Route as V3Route } from \"@uniswap/v3-sdk\";\n\nexport enum TradeState {\n LOADING,\n INVALID,\n STALE,\n NO_ROUTE_FOUND,\n VALID,\n}\n\nexport enum QuoteMethod {\n ROUTING_API = \"ROUTING_API\",\n CLIENT_SIDE = \"CLIENT_SIDE\",\n CLIENT_SIDE_FALLBACK = \"CLIENT_SIDE_FALLBACK\", // If client-side was used after the routing-api call failed.\n}\n\n// This is excluded from `RouterPreference` enum because it's only used\n// internally for token -> USDC trades to get a USD value.\nexport const INTERNAL_ROUTER_PREFERENCE_PRICE = \"price\" as const;\n\nexport enum RouterPreference {\n X = \"uniswapx\",\n API = \"api\",\n CLIENT = \"client\",\n}\n\nexport interface GetQuoteArgs {\n tokenInAddress: string;\n tokenInChainId: ChainId;\n tokenInDecimals: number;\n tokenInSymbol?: string;\n tokenOutAddress: string;\n tokenOutChainId: ChainId;\n tokenOutDecimals: number;\n tokenOutSymbol?: string;\n amount: string;\n account?: string;\n routerPreference: RouterPreference | typeof INTERNAL_ROUTER_PREFERENCE_PRICE;\n tradeType: TradeType;\n needsWrapIfUniswapX: boolean;\n uniswapXEnabled: boolean;\n uniswapXForceSyntheticQuotes: boolean;\n uniswapXEthOutputEnabled: boolean;\n forceUniswapXOn: boolean;\n userDisabledUniswapX: boolean;\n isRoutingAPIPrice?: boolean;\n}\n\nexport interface ClassicQuoteData {\n quoteId?: string;\n requestId?: string;\n blockNumber: string;\n amount: string;\n amountDecimals: string;\n gasPriceWei: string;\n gasUseEstimate: string;\n gasUseEstimateQuote: string;\n gasUseEstimateQuoteDecimals: string;\n gasUseEstimateUSD: string;\n methodParameters?: { calldata: string; value: string };\n quote: string;\n quoteDecimals: string;\n quoteGasAdjusted: string;\n quoteGasAdjustedDecimals: string;\n route: Array<(viem.V3PoolInRoute | viem.V2PoolInRoute)[]>;\n routeString: string;\n}\n\ntype URADutchOrderQuoteResponse = {\n routing: URAQuoteType.DUTCH_LIMIT;\n quote: {\n auctionPeriodSecs: number;\n deadlineBufferSecs: number;\n orderInfo: DutchOrderInfoJSON;\n quoteId?: string;\n requestId?: string;\n slippageTolerance: string;\n };\n allQuotes: Array<URAQuoteResponse>;\n};\ntype URAClassicQuoteResponse = {\n routing: URAQuoteType.CLASSIC;\n quote: ClassicQuoteData;\n allQuotes: Array<URAQuoteResponse>;\n};\nexport type URAQuoteResponse =\n | URAClassicQuoteResponse\n | URADutchOrderQuoteResponse;\n\nexport function isClassicQuoteResponse(\n data: URAQuoteResponse\n): data is URAClassicQuoteResponse {\n return data.routing === URAQuoteType.CLASSIC;\n}\n\nexport enum TradeFillType {\n Classic = \"classic\", // Uniswap V1, V2, and V3 trades with on-chain routes\n UniswapX = \"uniswap_x\", // off-chain trades, no routes\n}\n\nexport type ApproveInfo =\n | { needsApprove: true; approveGasEstimateUSD: number }\n | { needsApprove: false };\nexport type WrapInfo =\n | { needsWrap: true; wrapGasEstimateUSD: number }\n | { needsWrap: false };\n\nexport class ClassicTrade extends Trade<Currency, Currency, TradeType> {\n public readonly fillType = TradeFillType.Classic;\n approveInfo: ApproveInfo;\n gasUseEstimateUSD?: number; // gas estimate for swaps\n blockNumber: string | null | undefined;\n isUniswapXBetter: boolean | undefined;\n requestId: string | undefined;\n quoteMethod: QuoteMethod;\n\n constructor({\n gasUseEstimateUSD,\n blockNumber,\n isUniswapXBetter,\n requestId,\n quoteMethod,\n approveInfo,\n ...routes\n }: {\n gasUseEstimateUSD?: number;\n totalGasUseEstimateUSD?: number;\n blockNumber?: string | null;\n isUniswapXBetter?: boolean;\n requestId?: string;\n quoteMethod: QuoteMethod;\n approveInfo: ApproveInfo;\n v2Routes: {\n routev2: V2Route<Currency, Currency>;\n inputAmount: CurrencyAmount<Currency>;\n outputAmount: CurrencyAmount<Currency>;\n }[];\n v3Routes: {\n routev3: V3Route<Currency, Currency>;\n inputAmount: CurrencyAmount<Currency>;\n outputAmount: CurrencyAmount<Currency>;\n }[];\n tradeType: TradeType;\n mixedRoutes?: {\n mixedRoute: MixedRouteSDK<Currency, Currency>;\n inputAmount: CurrencyAmount<Currency>;\n outputAmount: CurrencyAmount<Currency>;\n }[];\n }) {\n super(routes);\n this.blockNumber = blockNumber;\n this.gasUseEstimateUSD = gasUseEstimateUSD;\n this.isUniswapXBetter = isUniswapXBetter;\n this.requestId = requestId;\n this.quoteMethod = quoteMethod;\n this.approveInfo = approveInfo;\n }\n\n // gas estimate for maybe approve + swap\n public get totalGasUseEstimateUSD(): number | undefined {\n if (this.approveInfo.needsApprove && this.gasUseEstimateUSD) {\n return this.approveInfo.approveGasEstimateUSD + this.gasUseEstimateUSD;\n }\n\n return this.gasUseEstimateUSD;\n }\n}\n\nexport class DutchOrderTrade extends IDutchOrderTrade<\n Currency,\n Currency,\n TradeType\n> {\n public readonly fillType = TradeFillType.UniswapX;\n quoteId?: string;\n requestId?: string;\n wrapInfo: WrapInfo;\n approveInfo: ApproveInfo;\n // The gas estimate of the reference classic trade, if there is one.\n classicGasUseEstimateUSD?: number;\n auctionPeriodSecs: number;\n deadlineBufferSecs: number;\n slippageTolerance: Percent;\n\n constructor({\n currencyIn,\n currenciesOut,\n orderInfo,\n tradeType,\n quoteId,\n requestId,\n wrapInfo,\n approveInfo,\n classicGasUseEstimateUSD,\n auctionPeriodSecs,\n deadlineBufferSecs,\n slippageTolerance,\n }: {\n currencyIn: Currency;\n currenciesOut: Currency[];\n orderInfo: DutchOrderInfo;\n tradeType: TradeType;\n quoteId?: string;\n requestId?: string;\n approveInfo: ApproveInfo;\n wrapInfo: WrapInfo;\n classicGasUseEstimateUSD?: number;\n auctionPeriodSecs: number;\n deadlineBufferSecs: number;\n slippageTolerance: Percent;\n }) {\n super({ currencyIn, currenciesOut, orderInfo, tradeType });\n this.quoteId = quoteId;\n this.requestId = requestId;\n this.approveInfo = approveInfo;\n this.wrapInfo = wrapInfo;\n this.classicGasUseEstimateUSD = classicGasUseEstimateUSD;\n this.auctionPeriodSecs = auctionPeriodSecs;\n this.deadlineBufferSecs = deadlineBufferSecs;\n this.slippageTolerance = slippageTolerance;\n }\n\n public get totalGasUseEstimateUSD(): number {\n if (this.wrapInfo.needsWrap && this.approveInfo.needsApprove) {\n return (\n this.wrapInfo.wrapGasEstimateUSD +\n this.approveInfo.approveGasEstimateUSD\n );\n }\n\n if (this.wrapInfo.needsWrap) return this.wrapInfo.wrapGasEstimateUSD;\n if (this.approveInfo.needsApprove)\n return this.approveInfo.approveGasEstimateUSD;\n\n return 0;\n }\n}\n\nexport type InterfaceTrade = ClassicTrade | DutchOrderTrade;\n\nexport enum QuoteState {\n SUCCESS = \"Success\",\n NOT_FOUND = \"Not found\",\n}\n\nexport type QuoteResult =\n | {\n state: QuoteState.NOT_FOUND;\n data?: undefined;\n }\n | {\n state: QuoteState.SUCCESS;\n data: URAQuoteResponse;\n };\n\nexport type TradeResult =\n | {\n state: QuoteState.NOT_FOUND;\n trade?: undefined;\n }\n | {\n state: QuoteState.SUCCESS;\n trade: InterfaceTrade;\n };\n\nexport enum PoolType {\n V2Pool = \"v2-pool\",\n V3Pool = \"v3-pool\",\n}\n\n// swap router API special cases these strings to represent native currencies\n// all chains except for bnb chain and polygon\n// have \"ETH\" as native currency symbol\nexport enum SwapRouterNativeAssets {\n MATIC = \"MATIC\",\n BNB = \"BNB\",\n AVAX = \"AVAX\",\n ETH = \"ETH\",\n}\n\nexport enum URAQuoteType {\n CLASSIC = \"CLASSIC\",\n DUTCH_LIMIT = \"DUTCH_LIMIT\",\n}\n\ntype ClassicAPIConfig = {\n protocols: Protocol[];\n};\n\ntype UniswapXConfig = {\n swapper?: string;\n exclusivityOverrideBps?: number;\n auctionPeriodSecs?: number;\n};\n\nexport type RoutingConfig = (UniswapXConfig | ClassicAPIConfig)[];\n","import { getLogger, viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { MixedRouteSDK } from \"@uniswap/router-sdk\";\nimport { Currency, CurrencyAmount, Token } from \"@uniswap/sdk-core\";\nimport { Pair, Route as V2Route } from \"@uniswap/v2-sdk\";\nimport { FeeAmount, Pool, Route as V3Route } from \"@uniswap/v3-sdk\";\nimport { ClassicQuoteData, PoolType } from \"./types\";\n\nexport interface RouteResult {\n routev3: V3Route<Currency, Currency> | null;\n routev2: V2Route<Currency, Currency> | null;\n mixedRoute: MixedRouteSDK<Currency, Currency> | null;\n inputAmount: CurrencyAmount<Currency>;\n outputAmount: CurrencyAmount<Currency>;\n}\n\n/**\n * Transforms a Routing API quote into an array of routes that can be used to\n * create a `Trade`.\n */\nexport function computeRoutes(\n currencyIn: Currency,\n currencyOut: Currency,\n routes: ClassicQuoteData[\"route\"]\n): RouteResult[] | undefined {\n if (routes.length === 0) return [];\n\n const tokenIn = routes[0]?.[0]?.tokenIn;\n const tokenOut = routes[0]?.[routes[0]?.length - 1]?.tokenOut;\n if (!tokenIn || !tokenOut)\n throw new Error(\"Expected both tokenIn and tokenOut to be present\");\n\n try {\n return routes.map((route) => {\n if (route.length === 0) {\n throw new Error(\"Expected route to have at least one pair or pool\");\n }\n const rawAmountIn = route[0].amountIn;\n const rawAmountOut = route[route.length - 1].amountOut;\n\n if (!rawAmountIn || !rawAmountOut) {\n throw new Error(\"Expected both amountIn and amountOut to be present\");\n }\n\n const isOnlyV2 = isVersionedRoute<viem.V2PoolInRoute>(\n PoolType.V2Pool,\n route\n );\n const isOnlyV3 = isVersionedRoute<viem.V3PoolInRoute>(\n PoolType.V3Pool,\n route\n );\n\n return {\n routev3: isOnlyV3\n ? new V3Route(route.map(parsePool), currencyIn, currencyOut)\n : null,\n routev2: isOnlyV2\n ? new V2Route(route.map(parsePair), currencyIn, currencyOut)\n : null,\n mixedRoute:\n !isOnlyV3 && !isOnlyV2\n ? new MixedRouteSDK(\n route.map(parsePoolOrPair),\n currencyIn,\n currencyOut\n )\n : null,\n inputAmount: CurrencyAmount.fromRawAmount(currencyIn, rawAmountIn),\n outputAmount: CurrencyAmount.fromRawAmount(currencyOut, rawAmountOut),\n };\n });\n } catch (e) {\n getLogger().error(\"ComputeRoutes.Error\", {\n errorMessage: (e as Error).message,\n currencyIn,\n currencyOut,\n routes,\n });\n return;\n }\n}\n\nconst parsePoolOrPair = (\n pool: viem.V3PoolInRoute | viem.V2PoolInRoute\n): Pair | Pool => {\n return (pool.type === PoolType.V3Pool ? parsePool(pool) : parsePair(pool)) as\n | Pair\n | Pool;\n};\n\nfunction isVersionedRoute<T extends viem.V2PoolInRoute | viem.V3PoolInRoute>(\n type: T[\"type\"],\n route: (viem.V3PoolInRoute | viem.V2PoolInRoute)[]\n): route is T[] {\n return route.every((pool) => pool.type === type);\n}\n\nfunction parseToken({\n address,\n chainId,\n decimals,\n symbol,\n}: ClassicQuoteData[\"route\"][0][0][\"tokenIn\"]): Token {\n return new Token(chainId, address, parseInt(decimals.toString()), symbol);\n}\n\nfunction parsePool({\n fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n tokenIn,\n tokenOut,\n}: viem.V3PoolInRoute): Pool {\n return new Pool(\n parseToken(tokenIn),\n parseToken(tokenOut),\n parseInt(fee) as FeeAmount,\n sqrtRatioX96,\n liquidity,\n parseInt(tickCurrent)\n );\n}\n\nconst parsePair = ({ reserve0, reserve1 }: viem.V2PoolInRoute): Pair =>\n new Pair(\n CurrencyAmount.fromRawAmount(parseToken(reserve0.token), reserve0.quotient),\n CurrencyAmount.fromRawAmount(parseToken(reserve1.token), reserve1.quotient)\n );\n","import { MixedQuoteResponse } from \"@/helper/fetchHelper\";\nimport { ClassicTrade, QuoteMethod } from \"@/utils/routing/types\";\nimport { RouteResult, computeRoutes } from \"@/utils/routing/utils\";\nimport { IToken } from \"@aperture/types\";\nimport { getAMMInfo, viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Percent, TradeType } from \"@pancakeswap/sdk\";\nimport { SwapRouter as PCSRouter } from \"@pancakeswap/smart-router\";\nimport { V4Trade } from \"@pancakeswap/smart-router/dist/evm/v4-router\";\nimport { SwapOptions, SwapRouter } from \"@uniswap/router-sdk\";\nimport { Token } from \"@uniswap/sdk-core\";\nimport { Address } from \"viem\";\n\nexport const getUniswapCallData = ({\n payToken,\n receiveToken,\n quoteResponse,\n typeField,\n networkId,\n swapOptions,\n}: {\n payToken: IToken;\n receiveToken: IToken;\n quoteResponse: MixedQuoteResponse;\n typeField: \"pay\" | \"receive\";\n networkId: number;\n swapOptions: SwapOptions;\n}) => {\n const currencyIn = payToken.native\n ? viem.getNativeCurrency(networkId)\n : new Token(\n networkId,\n payToken.address,\n payToken.decimals,\n payToken.ticker,\n payToken.name\n );\n const currencyOut = receiveToken.native\n ? viem.getNativeCurrency(networkId)\n : new Token(\n networkId,\n receiveToken.address,\n receiveToken.decimals,\n receiveToken.ticker,\n receiveToken.name\n );\n const routes = computeRoutes(currencyIn, currencyOut, quoteResponse.route);\n const classicTrade = new ClassicTrade({\n v2Routes:\n routes\n ?.filter(\n (\n r\n ): r is RouteResult & {\n routev2: NonNullable<RouteResult[\"routev2\"]>;\n } => r.routev2 !== null\n )\n .map(({ routev2, inputAmount, outputAmount }) => ({\n routev2,\n inputAmount,\n outputAmount,\n })) ?? [],\n v3Routes:\n routes\n ?.filter(\n (\n r\n ): r is RouteResult & {\n routev3: NonNullable<RouteResult[\"routev3\"]>;\n } => r.routev3 !== null\n )\n .map(({ routev3, inputAmount, outputAmount }) => ({\n routev3,\n inputAmount,\n outputAmount,\n })) ?? [],\n mixedRoutes:\n routes\n ?.filter(\n (\n r\n ): r is RouteResult & {\n mixedRoute: NonNullable<RouteResult[\"mixedRoute\"]>;\n } => r.mixedRoute !== null\n )\n .map(({ mixedRoute, inputAmount, outputAmount }) => ({\n mixedRoute,\n inputAmount,\n outputAmount,\n })) ?? [],\n tradeType: typeField === \"pay\" ? 0 : 1,\n gasUseEstimateUSD: Number(quoteResponse.gasUseEstimateUSD),\n approveInfo: { needsApprove: false },\n blockNumber: quoteResponse.blockNumber,\n quoteMethod: QuoteMethod.ROUTING_API,\n requestId: quoteResponse.quoteId,\n });\n const { calldata, value } = SwapRouter.swapCallParameters(\n classicTrade,\n swapOptions\n );\n return {\n calldata,\n value,\n to: getAMMInfo(networkId, \"UNISWAP_V3\").swapRouter,\n };\n};\n\nexport const getPanCakeSwapCallData = ({\n trade,\n swapOptions,\n networkId,\n}: {\n trade: V4Trade<TradeType>;\n swapOptions: SwapOptions;\n networkId: number;\n}) => {\n const { calldata, value } = PCSRouter.swapCallParameters(\n {\n tradeType: trade.tradeType,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n routes: trade.routes,\n gasEstimate: trade.gasUseEstimate,\n },\n {\n slippageTolerance: new Percent(\n swapOptions.slippageTolerance.numerator.toString(),\n swapOptions.slippageTolerance.denominator.toString()\n ),\n recipient: swapOptions.recipient as Address,\n deadlineOrPreviousBlockhash:\n swapOptions.deadlineOrPreviousBlockhash?.toString(),\n fee: swapOptions.fee\n ? {\n fee: new Percent(\n swapOptions.fee.fee.numerator.toString(),\n swapOptions.fee.fee.denominator.toString()\n ),\n recipient: swapOptions.fee.recipient as Address,\n }\n : undefined,\n // Note that `inputTokenPermit` is not specified since we currently don't support input ERC20 token permit; we always check on-chain approval for the input token.\n }\n );\n return {\n calldata,\n value,\n to: getAMMInfo(networkId, \"PANCAKESWAP_V3\").swapRouter,\n };\n};\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { MixedQuoteResponse } from \"@/helper/fetchHelper\";\nimport { estimateGas } from \"@/helper/transactionHelper\";\nimport { useEventCallback } from \"@/hooks/useEventCallback\";\nimport { getTokenBalance } from \"@/hooks/useFetchUserTokensBalance\";\nimport { useSendTransactionWithGas } from \"@/hooks/wagmi/useSendTransactionWithGas\";\nimport { FEE_RECIPIENT, calculateGasMargin } from \"@/utils/helper\";\nimport { numberToPercent } from \"@/utils/routing/utils/slippage\";\nimport { getApertureFeeForSwap } from \"@/views/Swap\";\nimport { IToken } from \"@aperture/types\";\nimport {\n Button,\n E_AMM,\n ITransactionSettingsForm,\n Spinner,\n} from \"@aperture/uikit\";\nimport { getLogger } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport { Dispatch, SetStateAction, useEffect, useMemo, useState } from \"react\";\nimport {\n EstimateGasExecutionError,\n Hex,\n TransactionExecutionError,\n} from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { getPanCakeSwapCallData, getUniswapCallData } from \"./utils\";\n\nexport interface SwapBtnProps {\n typeField: \"pay\" | \"receive\" | null;\n payToken: IToken | null;\n receiveToken: IToken | null;\n payAmount: string | null;\n receiveAmount: string | null;\n isWrap?: boolean;\n isUnwrap?: boolean;\n quoteResponse?: MixedQuoteResponse;\n isRouteSyncing: boolean;\n wrapTxn?: any;\n isTxnLoading: boolean;\n isEstimating: boolean;\n transactionSettings: ITransactionSettingsForm;\n setTxnLoading: (isLoading: boolean) => void;\n swapTxnApproved: (hash: string) => void;\n setGasEstimated: Dispatch<SetStateAction<bigint>>;\n setIsEstimating: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const SwapBtnComponent: React.FC<SwapBtnProps> = ({\n typeField,\n payToken,\n receiveToken,\n payAmount,\n receiveAmount,\n isWrap,\n isUnwrap,\n quoteResponse,\n isRouteSyncing,\n wrapTxn,\n isTxnLoading,\n isEstimating: isGasLoading,\n transactionSettings,\n setTxnLoading,\n swapTxnApproved,\n setGasEstimated,\n setIsEstimating: setIsGasLoading,\n}) => {\n const { isConnected, address: walletAddress } = useAccount();\n const { networkId, publicClient, amm, network } = useNetwork();\n const { addSnackbar } = useSnackbarV2();\n const [tx, setTx] = useState<any>(undefined);\n const [gasError, setGasError] = useState(\"\");\n const isWrapTokenPair = isWrap || isUnwrap;\n\n const generateTx = useEventCallback(() => {\n setGasError(\"\");\n if (!payToken || !receiveToken) {\n setTx(undefined);\n } else {\n try {\n const swapFee = getApertureFeeForSwap(\n payToken?.ticker,\n receiveToken?.ticker\n );\n const swapOptions = {\n // Pancake will fail to swap to native currency without the recipient\n recipient: walletAddress,\n slippageTolerance: numberToPercent(transactionSettings.slippage),\n deadlineOrPreviousBlockhash: bigDecimal.add(\n bigDecimal.divide(Date.now(), 1000, 0),\n bigDecimal.multiply(\n !!transactionSettings.deadline\n ? transactionSettings.deadline\n : 30,\n 60\n )\n ),\n fee:\n swapFee > 0\n ? {\n fee: numberToPercent(swapFee),\n recipient: FEE_RECIPIENT[amm.name][network],\n }\n : undefined,\n };\n\n const { calldata, value, to } = quoteResponse.trade\n ? getPanCakeSwapCallData({\n trade: quoteResponse.trade,\n swapOptions,\n networkId,\n })\n : getUniswapCallData({\n payToken,\n receiveToken,\n quoteResponse,\n typeField: typeField ?? \"pay\",\n networkId,\n swapOptions,\n });\n\n if (!calldata || !value) {\n setGasEstimated(undefined);\n setIsGasLoading(false);\n return;\n }\n\n const baseTx = {\n data: calldata as Hex,\n value: BigInt(value),\n to,\n };\n\n const logData = {\n payToken: payToken?.ticker,\n receiveToken: receiveToken?.ticker,\n payAmount: payAmount,\n };\n\n setIsGasLoading(true);\n estimateGas(\n {\n from: walletAddress,\n ...baseTx,\n },\n networkId,\n publicClient\n )\n .then(({ l2GasAmount, totalGasCost }) => {\n setGasEstimated(totalGasCost);\n setTx({\n ...baseTx,\n gas: calculateGasMargin(l2GasAmount),\n });\n setIsGasLoading(false);\n\n getLogger().debug(\"Swap.EstimateGas.Success\", logData);\n })\n .catch((gasError) => {\n const error = gasError as EstimateGasExecutionError;\n setGasEstimated(undefined);\n setIsGasLoading(false);\n setGasError(error.details);\n\n (async function () {\n getLogger().error(\"Swap.EstimateGas.Error\", {\n error: JSON.stringify(error.message),\n detail: error.details,\n from: walletAddress,\n ...logData,\n receiveAmount: receiveAmount,\n swapOptions: swapOptions,\n blockNumber: await publicClient.getBlockNumber(),\n payTokenBalance: await getTokenBalance(\n publicClient,\n walletAddress,\n {\n address: payToken.address,\n decimals: payToken.decimals,\n }\n ),\n });\n })().catch(() => {});\n });\n } catch (error) {\n getLogger().error(\"Swap.GenerateTx: \", {\n error: JSON.stringify((error as Error).message),\n });\n setTx(undefined);\n }\n }\n });\n\n const beforeGenerateTxError = useMemo(() => {\n if (amm.name === E_AMM.Aerodrome || amm.name === E_AMM.Velodrome) {\n return \"Not supported. Please use Uniswap\";\n }\n if (!isConnected) {\n return \"Connect Wallet\";\n }\n if (!payToken || !receiveToken) {\n return \"Select a token\";\n }\n if (\n bigDecimal.compareTo(payAmount ?? 0, 0) <= 0 &&\n bigDecimal.compareTo(receiveAmount ?? 0, 0) <= 0\n ) {\n return \"Enter an amount\";\n }\n if (bigDecimal.compareTo(payAmount ?? 0, payToken.amount) > 0) {\n return `Insufficient ${payToken.ticker} balance`;\n }\n\n if (!isRouteSyncing && !isWrapTokenPair && !quoteResponse) {\n return \"Failed to get quote\";\n }\n\n return \"\";\n }, [\n amm.name,\n isConnected,\n isRouteSyncing,\n isWrapTokenPair,\n payAmount,\n payToken,\n quoteResponse,\n receiveAmount,\n receiveToken,\n ]);\n\n useEffect(() => {\n if (quoteResponse && !isRouteSyncing) {\n generateTx();\n }\n }, [generateTx, isRouteSyncing, quoteResponse]);\n\n const { ready, sendTransactionAsync, isPending } =\n useSendTransactionWithGas(tx);\n\n const handleSwap = () => {\n sendTransactionAsync()\n .then((hash) => {\n swapTxnApproved(hash);\n })\n .catch((error: any) => {\n const isUserRejected = (\n error as TransactionExecutionError\n ).message.includes(\"User rejected the request\");\n addSnackbar({\n info: `Your swap token request has failed. \n ${!isUserRejected ? \"Try adjusting slippage to a higher value\" : \"\"}`,\n status: \"failed\",\n });\n });\n };\n\n useEffect(() => {\n setTxnLoading(isPending);\n }, [isPending]);\n\n const error = beforeGenerateTxError || gasError;\n\n useEffect(() => {\n // reset gas estimation if tx is reset\n if (!tx) {\n setGasEstimated(undefined);\n }\n }, [setGasEstimated, tx]);\n\n if (error) {\n if (tx) {\n setTx(undefined);\n }\n } else if (isWrapTokenPair && tx !== wrapTxn) {\n setTx(wrapTxn);\n }\n\n return (\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"lg\"\n width=\"100%\"\n onClick={handleSwap}\n disabled={\n !ready || !!error || isRouteSyncing || isTxnLoading || isGasLoading\n }\n >\n {error ? (\n error\n ) : isRouteSyncing || isTxnLoading || isGasLoading ? (\n <>\n <Spinner /> Loading\n </>\n ) : isWrap ? (\n \"Wrap\"\n ) : isUnwrap ? (\n \"Unwrap\"\n ) : (\n \"Swap\"\n )}\n </Button>\n );\n};\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { getChainInfo } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { memo, useState } from \"react\";\nimport { useAccount } from \"wagmi\";\nimport { ApproveTokenBtn } from \"../ApprovalBtn\";\nimport { SwapBtnComponent, SwapBtnProps } from \"./SwapBtnComponent\";\n\nconst ApproveAndSwapBtn: React.FC<SwapBtnProps> = (props) => {\n const { payToken, payAmount, receiveToken } = props;\n const { isConnected } = useAccount();\n const [approved, setApproved] = useState<boolean>(false);\n const { ammEnum, networkId } = useNetwork();\n const contractAddress = getChainInfo(networkId).amms[ammEnum]?.swapRouter;\n const isNative = payToken?.native;\n const isWrap =\n payToken?.native && receiveToken?.address === payToken?.address;\n const isUnwrap =\n receiveToken?.native && receiveToken?.address === payToken?.address;\n\n if (\n ammEnum !== \"SLIPSTREAM\" && // not support swap on slipstream\n isConnected &&\n payToken &&\n payAmount &&\n !approved &&\n !isWrap &&\n !isUnwrap\n ) {\n return (\n <ApproveTokenBtn\n variant=\"contained\"\n color=\"secondary\"\n token={payToken}\n contractAddress={contractAddress}\n amount={payAmount ?? \"0\"}\n approveOnChange={(approve: boolean) => {\n setApproved(approve);\n }}\n useNative={isNative}\n />\n );\n }\n return <SwapBtnComponent {...props} isWrap={isWrap} isUnwrap={isUnwrap} />;\n};\n\nexport const SwapBtn = memo(ApproveAndSwapBtn);\n","import { SwapBtn } from \"./SwapBtn\";\n\nexport { SwapBtn };\nexport default SwapBtn;\n","import { getAutomanAPI } from \"@/utils/helper\";\nimport { AutomanClient } from \"@aperture_finance/uniswap-v3-automation-sdk\";\n\nlet client: AutomanClient;\n\nexport const getAutomanClient = () => {\n if (!client) {\n client = new AutomanClient(getAutomanAPI());\n }\n return client;\n};\n","import { getApertureFeeForSwap } from \"@/views/Swap\";\nimport { IToken } from \"@aperture/types\";\nimport { AmmEnum } from \"@aperture/uikit\";\nimport {\n ApertureSupportedChainId,\n viem,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Currency, CurrencyAmount, TradeType } from \"@pancakeswap/sdk\";\n\nimport { getPublicClient } from \"@/helper/getPublicClient\";\nimport { V4Router } from \"@pancakeswap/smart-router\";\nimport { Token } from \"@uniswap/sdk-core\";\nimport bigDecimal from \"js-big-decimal\";\nimport { parseUnits } from \"viem\";\n\nexport async function getTrade(\n chainId: ApertureSupportedChainId,\n currencyIn: Currency,\n currencyOut: Currency,\n type: \"exactIn\" | \"exactOut\",\n rawAmount: bigint\n) {\n const client = getPublicClient(chainId);\n const v3Pools = await V4Router.getV3CandidatePools({\n // @ts-ignore: passing viem v2 client as a viem v1 client.\n clientProvider: () => client,\n currencyA: currencyIn,\n currencyB: currencyOut,\n });\n const pools = [...v3Pools];\n\n const trade = await V4Router.getBestTrade(\n CurrencyAmount.fromRawAmount(\n type === \"exactIn\" ? currencyIn : currencyOut,\n rawAmount.toString()\n ),\n type === \"exactIn\" ? currencyOut : currencyIn,\n type === \"exactIn\" ? TradeType.EXACT_INPUT : TradeType.EXACT_OUTPUT,\n {\n gasPriceWei: () => client.getGasPrice(),\n candidatePools: pools,\n }\n );\n\n return trade;\n}\n\ntype QuoteProps = {\n chainId: ApertureSupportedChainId;\n payToken: IToken;\n receiveToken: IToken;\n amount: string;\n type: \"exactIn\" | \"exactOut\";\n amm?: AmmEnum;\n};\n\nexport type MixedQuoteResponse = Partial<viem.RoutingApiQuoteResponse> & {\n trade?: V4Router.V4Trade<TradeType>;\n};\n\nexport const getQuoteV2 = async (\n props: QuoteProps\n): Promise<MixedQuoteResponse> => {\n const { chainId, payToken, receiveToken, amount, type, amm } = props;\n const tokenDecimals =\n type === \"exactIn\" ? payToken.decimals : receiveToken.decimals;\n const rateAfterFee =\n 1 - getApertureFeeForSwap(payToken.ticker, receiveToken.ticker);\n const rawAmount = parseUnits(\n type === \"exactOut\"\n ? bigDecimal.divide(amount, rateAfterFee, tokenDecimals)\n : bigDecimal.round(amount, tokenDecimals, bigDecimal.RoundingModes.DOWN),\n tokenDecimals\n );\n\n if (amm === \"PANCAKESWAP_V3\") {\n const currencyIn = payToken.native\n ? viem.getNativeCurrency(chainId)\n : new Token(\n chainId,\n payToken.address,\n payToken.decimals,\n payToken.ticker,\n payToken.name\n );\n const currencyOut = receiveToken.native\n ? viem.getNativeCurrency(chainId)\n : new Token(\n chainId,\n receiveToken.address,\n receiveToken.decimals,\n receiveToken.ticker,\n receiveToken.name\n );\n const trade = await getTrade(\n chainId,\n currencyIn as Currency,\n currencyOut as Currency,\n type,\n rawAmount\n );\n return {\n trade,\n quoteDecimals:\n type === \"exactIn\"\n ? trade.outputAmount.toExact()\n : trade.inputAmount.toExact(),\n gasUseEstimateUSD: bigDecimal.multiply(\n (type === \"exactIn\" ? receiveToken : payToken).price,\n trade.gasUseEstimateQuote.toFixed()\n ),\n amount:\n type === \"exactIn\"\n ? trade.inputAmount.toFixed()\n : trade.outputAmount.toFixed(),\n quote:\n type === \"exactIn\"\n ? trade.outputAmount.toFixed()\n : trade.inputAmount.toFixed(),\n };\n } else {\n return await viem.fetchQuoteFromRoutingApi(\n chainId,\n payToken.address,\n receiveToken.address,\n rawAmount,\n type\n );\n }\n};\n","export * from \"./getAllChainInfo\";\nexport * from \"./getAutomanClient\";\nexport * from \"./getQuote\";\n","import { SwapBtn } from \"@/components/Button/SwapBtn\";\nimport { TokenSelectModal } from \"@/components/Modal/TokenSelectModal\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { getExplorerURL } from \"@/config/chain\";\nimport { getQuoteV2 } from \"@/helper/fetchHelper\";\nimport { useMutateWarningTokens } from \"@/hooks/globalState/useWarningTokens\";\nimport { fetchUnknownToken, useFetchTokenMap } from \"@/hooks/useFetchTokenMap\";\nimport { useFetchUserTokensBalance } from \"@/hooks/useFetchUserTokensBalance\";\nimport { useWaitForTransaction } from \"@/hooks/useWaitForTransaction\";\nimport {\n DEFAULT_APERTURE_SWAP_FEE,\n DEFAULT_SLIPPAGE,\n DEFAULT_SWAP_WARNING_THRESHOLD,\n isTokensEquivalent,\n isWrappedTokenPair,\n} from \"@/utils/helper\";\nimport { getNetworkName } from \"@/utils/networkHelper\";\nimport { IToken } from \"@aperture/types\";\nimport {\n ConnectionType,\n ExchangeRate,\n ITransactionSettingsForm,\n SwapInput,\n TokenWarningContent,\n getChainInfo,\n useResize,\n} from \"@aperture/uikit\";\nimport { E_ModalKey, Modal, useModal } from \"@aperture/uikitv2\";\nimport { getLogger, viem } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { FeeAmount } from \"@aperture_finance/uniswap-v3-sdk\";\nimport { PoolType } from \"@pancakeswap/smart-router\";\nimport { Token } from \"@uniswap/sdk-core\";\nimport { useRequest } from \"ahooks\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useEffect, useMemo, useState, useTransition } from \"react\";\nimport { Address, TransactionRequest, formatUnits } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport {\n ButtonWrapper,\n DivideDiv,\n DivideY,\n ExchangeWrapper,\n SwapButton,\n SwapButtonIcon,\n SwapContainer,\n SwapInputWrapper,\n} from \"./style\";\n\nconst STABLE_COINS_FOR_FEE = [\n \"USDC\",\n \"USDC.e\",\n \"USDbC\",\n \"USDT\",\n \"DAI\",\n \"BUSD\",\n \"GUSD\",\n \"LUSD\",\n \"MUSD\",\n \"PYUSD\",\n \"sUSD\",\n \"wUSDM\",\n];\n\nfunction getPercentage(amountIn: string, amount: string) {\n return bigDecimal.compareTo(amount, 0) > 0\n ? bigDecimal.divide(amountIn, amount, 2)\n : \"0\";\n}\n\n// Refer to aperture fee rule https://www.notion.so/aperture-finance/Aperture-Revenue-Model-d14eeeff88034a3a95bd900b9670f0d8\nexport function getApertureFeeForSwap(tokenIn: string, tokenOut: string) {\n const isStableCoin =\n STABLE_COINS_FOR_FEE.includes(tokenIn) &&\n STABLE_COINS_FOR_FEE.includes(tokenOut);\n\n return !isStableCoin ? DEFAULT_APERTURE_SWAP_FEE : 0;\n}\n\ninterface ITokenWarning {\n token: IToken;\n isPayToken: boolean;\n}\n\nconst SwapToken: React.FC<{\n settingsForm: ITransactionSettingsForm;\n wrapperGap?: number;\n}> = ({ settingsForm, wrapperGap = 10 }) => {\n const { ammEnum, networkId, publicClient, isChainSupported } = useNetwork();\n const { address: walletAddress, isConnected, connector } = useAccount();\n const { addSnackbar } = useSnackbarV2();\n const { state, setModalState } = useModal();\n const { isOpen } = state[E_ModalKey.TOKEN_SELECT_MODAL];\n const [isPayToken, setIsPayToken] = useState<boolean>();\n const { isOpen: isTokenWarningOpen } = state[E_ModalKey.TOKEN_WARNING_MODAL];\n const [tokenWarning, setTokenWarning] = useState<ITokenWarning>();\n\n const { data: tokenMap } = useFetchTokenMap();\n const { mutate: tokenBalanceMutate } = useFetchUserTokensBalance();\n const { mutateWarningTokens } = useMutateWarningTokens();\n const [, startTransition] = useTransition();\n const [typeField, setTypeField] = useState<\"pay\" | \"receive\" | null>(null);\n const [isBalanceMutating, setIsBalanceMutating] = useState(false);\n const [isRouteSyncing, setIsRouteSyncing] = useState(false);\n const [payToken, setPayToken] = useState<IToken | null>(null);\n const [receiveToken, setReceiveToken] = useState<IToken | null>(null);\n const [payAmount, setPayAmount] = useState<string | null>(null);\n const [receiveAmount, setReceiveAmount] = useState<string | null>(null);\n\n const [wrapTxn, setWrapTxn] = useState<TransactionRequest | undefined>(\n undefined\n );\n const [swapTxnHash, setSwapTxnHash] = useState<string>(undefined);\n const [isSwapTxnLoading, setIsSwapTxnLoading] = useState(false);\n const {\n data: waitSwapTxnData,\n isLoading: isWaitSwapTxnLoading,\n isSuccess: isWaitSwapTxnSuccess,\n } = useWaitForTransaction({ hash: swapTxnHash as Address });\n const [gasEstimated, setGasEstimated] = useState<bigint>(undefined);\n const nativeCurrency = viem.getNativeCurrency(networkId);\n const [isEstimating, setIsEstimating] = useState(false);\n\n const { updateHeight } = useResize();\n const isWrap =\n payToken?.native && receiveToken?.address === payToken?.address;\n const isUnwrap =\n receiveToken?.native && receiveToken?.address === payToken?.address;\n\n const resetSwapInput = () => {\n startTransition(() => {\n setPayToken(null);\n setReceiveToken(null);\n setPayAmount(null);\n setReceiveAmount(null);\n setTypeField(null);\n setSwapTxnHash(undefined);\n });\n };\n\n useEffect(() => {\n resetSwapInput();\n }, [networkId, isChainSupported]);\n\n useEffect(() => {\n if (payToken && tokenMap?.[`${payToken.address}-${payToken.native}`])\n setPayToken(tokenMap[`${payToken.address}-${payToken.native}`]);\n if (\n receiveToken &&\n tokenMap?.[`${receiveToken.address}-${receiveToken.native}`]\n )\n setReceiveToken(\n tokenMap[`${receiveToken.address}-${receiveToken.native}`]\n );\n }, [tokenMap]);\n\n const commonTokens = useMemo(\n () =>\n Object.values(tokenMap ?? {}).sort((a, b) =>\n bigDecimal.compareTo(b.amount, a.amount)\n ),\n [tokenMap]\n );\n // TODO: replace with real popular tokens data here\n const mockPopularTokens = useMemo(() => {\n return !!tokenMap\n ? Object.values(tokenMap).filter((token) => {\n const ticker = token.ticker?.toLowerCase();\n return ticker === \"eth\" || ticker === \"usdc\";\n })\n : [];\n }, [tokenMap]);\n\n const {\n run: runQuote,\n loading: isQuoteLoading,\n data: quoteResponse,\n cancel: cancelQuote,\n } = useRequest(\n async (\n payToken: IToken,\n receiveToken: IToken,\n amount: string,\n type: \"exactIn\" | \"exactOut\"\n ) => {\n const isWrappedTokens =\n payToken && receiveToken && isWrappedTokenPair(payToken, receiveToken);\n const isValidTokenPair =\n payToken && receiveToken && !isTokensEquivalent(payToken, receiveToken);\n if (isWrappedTokens && bigDecimal.compareTo(amount, 0) > 0) {\n if (!isRouteSyncing) setIsRouteSyncing(true);\n if (type === \"exactIn\") setReceiveAmount(amount);\n else setPayAmount(amount);\n\n if (payToken.native)\n setWrapTxn(\n viem.getWrapETHTx(\n networkId,\n BigInt(\n bigDecimal.multiply(amount, Math.pow(10, payToken.decimals))\n )\n )\n );\n else\n setWrapTxn(\n viem.getUnwrapETHTx(\n networkId,\n BigInt(\n bigDecimal.multiply(amount, Math.pow(10, receiveToken.decimals))\n )\n )\n );\n setIsRouteSyncing(false);\n return undefined;\n } else if (isValidTokenPair && bigDecimal.compareTo(amount, 0) > 0) {\n if (!isRouteSyncing) setIsRouteSyncing(true);\n try {\n const quote = await getQuoteV2({\n chainId: networkId,\n payToken,\n receiveToken,\n amount,\n type,\n amm: ammEnum,\n });\n\n if (type === \"exactIn\") {\n const rateAfterFee =\n 1 - getApertureFeeForSwap(payToken.ticker, receiveToken.ticker);\n setReceiveAmount(\n bigDecimal.round(\n bigDecimal.multiply(quote?.quoteDecimals, rateAfterFee),\n receiveToken.decimals\n )\n );\n } else setPayAmount(quote?.quoteDecimals);\n return quote;\n } catch (error) {\n console.log(\"Failed to get quote\", error);\n\n const isError =\n (error as Error).message !== \"Request failed with status code 404\";\n const context = {\n chainId: networkId,\n payToken: payToken.ticker,\n payTokenAddr: payToken.address,\n receiveToken: receiveToken.ticker,\n receiveTokenAddr: receiveToken.address,\n pairKey: [payToken.address, receiveToken.address].sort().join(\"-\"),\n amount,\n type,\n amm: ammEnum,\n error: (error as Error)?.message,\n };\n\n isError\n ? getLogger().error(\"[Swap] Failed to getQuoteV2\", context)\n : getLogger().warn(\"[Swap] Failed to getQuoteV2\", context);\n\n updateHeight(\"100vh\");\n if (type === \"exactIn\") setReceiveAmount(\"\");\n else setPayAmount(\"\");\n return undefined;\n } finally {\n setIsRouteSyncing(false);\n }\n } else {\n if (type === \"exactIn\") setReceiveAmount(\"\");\n else setPayAmount(\"\");\n setIsRouteSyncing(false);\n return undefined;\n }\n },\n {\n manual: true,\n debounceWait: 500,\n pollingInterval: 30_000,\n }\n );\n\n useEffect(() => {\n if (typeField === \"receive\") {\n runQuote(payToken, receiveToken, receiveAmount, \"exactOut\");\n }\n }, [runQuote, receiveAmount, typeField, payToken, receiveToken, ammEnum]);\n\n useEffect(() => {\n if (typeField === \"pay\") {\n runQuote(payToken, receiveToken, payAmount, \"exactIn\");\n }\n }, [runQuote, payAmount, typeField, payToken, receiveToken, ammEnum]);\n\n useEffect(() => {\n if (!quoteResponse) {\n cancelQuote();\n }\n }, [quoteResponse]);\n\n const priceImpact = useMemo(() => {\n if (\n payToken &&\n receiveToken &&\n payAmount &&\n receiveAmount &&\n !isRouteSyncing\n ) {\n const pay =\n !!payToken.price && payToken.price !== \"-\"\n ? bigDecimal.multiply(payToken.price, payAmount)\n : \"\";\n const receive =\n !!receiveToken.price && receiveToken.price !== \"-\"\n ? bigDecimal.multiply(receiveToken.price, receiveAmount)\n : \"\";\n return pay && receive && bigDecimal.compareTo(pay, 0) > 0\n ? bigDecimal.multiply(\n bigDecimal.divide(bigDecimal.subtract(receive, pay), pay, 6),\n 100\n )\n : undefined;\n }\n }, [payToken, receiveToken, payAmount, receiveAmount, isRouteSyncing]);\n\n const networkFee = useMemo(() => {\n const gas = gasEstimated\n ? formatUnits(gasEstimated, nativeCurrency.decimals)\n : undefined;\n return {\n gasUSD:\n isConnected && gasEstimated\n ? bigDecimal.multiply(\n gas,\n tokenMap?.[`${nativeCurrency.wrapped.address}-true`].price\n )\n : quoteResponse?.gasUseEstimateUSD,\n gasAmount: gas,\n symbol: nativeCurrency.symbol,\n };\n }, [isConnected, gasEstimated, tokenMap, quoteResponse, nativeCurrency]);\n\n const handleSelectToken = async (token: IToken, isPayToken: boolean) => {\n setIsRouteSyncing(true);\n if (\n (isPayToken && isTokensEquivalent(token, receiveToken)) ||\n (!isPayToken && isTokensEquivalent(token, payToken))\n ) {\n /* Do switch:\n If select pay token and the selected token is same as receive token;\n If select receive token and the selected token is same as pay token;*/\n handleSwitch();\n } else isPayToken ? setPayToken(token) : setReceiveToken(token);\n toggleSelectTokenModal(false);\n };\n\n const handleSwitch = () => {\n const storedPayInfo = { token: payToken, amount: payAmount };\n const storedReceiveInfo = { token: receiveToken, amount: receiveAmount };\n startTransition(() => {\n if (!isRouteSyncing) setIsRouteSyncing(true);\n setPayToken(storedReceiveInfo.token);\n setReceiveToken(storedPayInfo.token);\n if (typeField === \"pay\") {\n setPayAmount(\"\");\n setTypeField(\"receive\");\n setReceiveAmount(storedPayInfo.amount);\n } else if (typeField === \"receive\") {\n setReceiveAmount(\"\");\n setTypeField(\"pay\");\n setPayAmount(storedReceiveInfo.amount);\n } else {\n setPayAmount(\"\");\n setReceiveAmount(\"\");\n }\n });\n };\n\n const handleUnknownAddress = async (tokenAddress: string) => {\n return await fetchUnknownToken(\n tokenAddress,\n networkId,\n publicClient,\n isConnected,\n walletAddress\n );\n };\n\n const toggleSelectTokenModal = (open: boolean) => {\n setModalState(E_ModalKey.TOKEN_SELECT_MODAL, open);\n };\n const toggleTokenWarningModal = (open: boolean) => {\n setModalState(E_ModalKey.TOKEN_WARNING_MODAL, open);\n };\n\n const swapFee =\n payToken && receiveToken && !(isWrap || isUnwrap)\n ? getApertureFeeForSwap(payToken.ticker, receiveToken.ticker)\n : 0;\n\n useEffect(() => {\n if (swapTxnHash) {\n addSnackbar({\n info: \"Your swap token request has been sent.\",\n status: \"completed\",\n transaction: {\n hash: swapTxnHash as Address,\n successMsg: `Your ${payToken.ticker}-${receiveToken.ticker} swap transaction succeeded.`,\n failureMsg: `Your ${payToken.ticker}-${receiveToken.ticker} swap transaction has failed.`,\n },\n });\n const feeAmount =\n !!payToken.price && payToken.price !== \"-\"\n ? bigDecimal.multiply(payToken.price, payAmount)\n : \"-\";\n const swapFeeUSD =\n feeAmount !== \"-\" ? bigDecimal.multiply(swapFee, feeAmount) : \"-\";\n const context = {\n txHash: swapTxnHash,\n chainId: networkId,\n amm: ammEnum,\n payToken: payToken.ticker,\n receiveToken: receiveToken.ticker,\n payAmount,\n receiveAmount,\n swapFee,\n swapFeeUSD: Number(swapFeeUSD),\n };\n getLogger().info(\"Swap Token Request Sent Success\", context);\n }\n }, [swapTxnHash]);\n\n useEffect(() => {\n const mutateTokenBalance = async () => {\n setIsBalanceMutating(true);\n cancelQuote();\n resetSwapInput();\n await tokenBalanceMutate();\n setIsBalanceMutating(false);\n };\n\n if (isWaitSwapTxnSuccess && waitSwapTxnData) {\n mutateTokenBalance();\n }\n }, [isWaitSwapTxnSuccess]);\n\n const convertedRoute = useMemo(() => {\n if (ammEnum === \"UNISWAP_V3\") {\n const route = (quoteResponse as viem.RoutingApiQuoteResponse)?.route;\n return route\n ? Object.values(route).map((poolInRoute) => ({\n percentage: getPercentage(\n poolInRoute[0].amountIn,\n typeField === \"pay\" ? quoteResponse.amount : quoteResponse.quote\n ),\n swaps: Object.values(poolInRoute).map((swap) => {\n return {\n sellToken: tokenMap?.[`${swap.tokenIn.address}-${false}`],\n buyToken: tokenMap?.[`${swap.tokenOut.address}-${false}`],\n feeTier:\n swap.type === \"v3-pool\"\n ? (Number(swap.fee) as FeeAmount)\n : FeeAmount.MEDIUM,\n };\n }),\n }))\n : [];\n } else {\n const routes = quoteResponse?.trade?.routes || [];\n return routes.map((route) => ({\n percentage: (route.percent / 100).toString(),\n swaps: route.pools.map((pool, idx) => ({\n sellToken: tokenMap?.[`${route.path[idx].wrapped.address}-${false}`],\n buyToken:\n tokenMap?.[`${route.path[idx + 1].wrapped.address}-${false}`],\n feeTier:\n pool.type === PoolType.V3\n ? (Number(pool.fee) as FeeAmount)\n : FeeAmount.PCS_V3_MEDIUM,\n })),\n }));\n }\n }, [ammEnum, quoteResponse, tokenMap, typeField]);\n\n return (\n <>\n <SwapContainer>\n <SwapInputWrapper gap={wrapperGap}>\n <SwapInput\n title=\"\"\n token={payToken}\n price={payToken?.price ?? \"\"}\n value={payAmount}\n showMax={true}\n showAddToken={false}\n noBorder={true}\n showBalance={isConnected}\n openTokenSelectModal={() => {\n setIsPayToken(true);\n toggleSelectTokenModal(true);\n }}\n onValueChange={(value) => {\n setIsRouteSyncing(true);\n if (typeField !== \"pay\") setTypeField(\"pay\");\n setPayAmount(value);\n }}\n loading={typeField === \"receive\" && isQuoteLoading}\n disabled={\n isBalanceMutating || isSwapTxnLoading || isWaitSwapTxnLoading\n }\n decimalScale={payToken?.decimals}\n />\n <DivideDiv>\n <DivideY />\n <SwapButton\n onClick={handleSwitch}\n disabled={\n isBalanceMutating || isSwapTxnLoading || isWaitSwapTxnLoading\n }\n >\n <SwapButtonIcon\n disabled={\n isBalanceMutating || isSwapTxnLoading || isWaitSwapTxnLoading\n }\n />\n </SwapButton>\n </DivideDiv>\n <SwapInput\n title=\"\"\n token={receiveToken}\n price={receiveToken?.price ?? \"\"}\n value={receiveAmount}\n showMax={false}\n noBorder={true}\n showAddToken={\n // Show button to add token to metamask wallet\n (connector?.id as ConnectionType) === ConnectionType.METAMASK\n }\n showBalance={isConnected}\n openTokenSelectModal={() => {\n setIsPayToken(false);\n toggleSelectTokenModal(true);\n }}\n onValueChange={(value) => {\n setIsRouteSyncing(true);\n if (typeField !== \"receive\") setTypeField(\"receive\");\n setReceiveAmount(value);\n }}\n openAddTokenPopup={async () => {\n window.ethereum.request({\n method: \"wallet_watchAsset\",\n params: {\n type: \"ERC20\",\n options: {\n address: receiveToken.address,\n symbol: receiveToken.ticker,\n decimals: receiveToken.decimals,\n //@ts-ignore\n image: receiveToken.Icon.props.src,\n },\n },\n });\n }}\n loading={typeField === \"pay\" && isQuoteLoading}\n disabled={\n isBalanceMutating || isSwapTxnLoading || isWaitSwapTxnLoading\n }\n priceImpact={priceImpact}\n decimalScale={receiveToken?.decimals}\n />\n </SwapInputWrapper>\n {payToken && receiveToken && (isQuoteLoading || !!quoteResponse) && (\n <ExchangeWrapper>\n <ExchangeRate\n isLoading={isRouteSyncing || isQuoteLoading}\n sellToken={{\n ticker: payToken.ticker,\n price: payToken.price ?? \"\",\n exchangeRate:\n bigDecimal.compareTo(payAmount, 0) !== 0\n ? bigDecimal.divide(receiveAmount, payAmount, 18)\n : \"\",\n }}\n buyToken={{\n ticker: receiveToken.ticker,\n price: receiveToken.price ?? \"\",\n exchangeRate:\n bigDecimal.compareTo(receiveAmount, 0) !== 0\n ? bigDecimal.divide(payAmount, receiveAmount, 18)\n : \"\",\n }}\n networkFee={!isEstimating ? networkFee : undefined}\n priceImpact={priceImpact}\n minOutput={\n typeField === \"pay\"\n ? bigDecimal.multiply(\n receiveAmount,\n bigDecimal.subtract(\n 1,\n settingsForm?.slippage ?? DEFAULT_SLIPPAGE\n )\n )\n : undefined\n }\n maxInput={\n typeField === \"receive\"\n ? bigDecimal.multiply(\n payAmount,\n bigDecimal.add(\n 1,\n settingsForm?.slippage ?? DEFAULT_SLIPPAGE\n )\n )\n : undefined\n }\n expectedOutput={receiveAmount}\n swapFeeInfo={{\n apertureFee:\n swapFee === 0 ? DEFAULT_APERTURE_SWAP_FEE : swapFee,\n amount:\n !!payToken.price && payToken.price !== \"-\"\n ? bigDecimal.multiply(payToken.price, payAmount)\n : \"-\",\n apertureFeeActive: swapFee > 0,\n }}\n priceRoutes={convertedRoute}\n priceImpactWarning={\n !!priceImpact &&\n Math.abs(Number(priceImpact)) > DEFAULT_SWAP_WARNING_THRESHOLD\n ? priceImpact\n : undefined\n }\n amm={ammEnum}\n networkName={getChainInfo(getNetworkName(networkId)).name}\n />\n </ExchangeWrapper>\n )}\n <ButtonWrapper>\n <SwapBtn\n key={payToken?.address}\n typeField={typeField}\n payToken={payToken}\n receiveToken={receiveToken}\n payAmount={payAmount}\n receiveAmount={receiveAmount}\n quoteResponse={quoteResponse}\n isRouteSyncing={isRouteSyncing}\n wrapTxn={wrapTxn}\n isTxnLoading={\n isBalanceMutating || isSwapTxnLoading || isWaitSwapTxnLoading\n }\n isEstimating={isEstimating}\n transactionSettings={settingsForm}\n setTxnLoading={setIsSwapTxnLoading}\n swapTxnApproved={(swapTxnHash) => setSwapTxnHash(swapTxnHash)}\n setGasEstimated={setGasEstimated}\n setIsEstimating={setIsEstimating}\n />\n </ButtonWrapper>\n </SwapContainer>\n <Modal\n isModalOpen={isOpen}\n onClose={() => toggleSelectTokenModal(false)}\n padding={20}\n >\n <TokenSelectModal\n {...{\n popularTokens: mockPopularTokens,\n commonTokens: commonTokens,\n selectedToken: isPayToken ? payToken : receiveToken,\n selectToken: (token: IToken) =>\n handleSelectToken(token, isPayToken),\n selectUnknownToken: (token: IToken) => {\n setTokenWarning({\n token,\n isPayToken,\n });\n toggleTokenWarningModal(true);\n },\n handleUnknownAddress,\n }}\n />\n </Modal>\n <Modal\n isModalOpen={isTokenWarningOpen}\n onClose={() => toggleTokenWarningModal(false)}\n padding={20}\n closeIcon={false}\n >\n <TokenWarningContent\n {...{\n amm: ammEnum,\n token: tokenWarning?.token,\n exploreURL: getExplorerURL(networkId),\n confirmClick: (token: IToken) => {\n handleSelectToken(token, tokenWarning?.isPayToken);\n // Add new warning token with the useLocalStorageState in the web app\n mutateWarningTokens(\n networkId,\n new Token(\n networkId,\n token.address,\n token.decimals,\n token.ticker,\n token.name\n )\n );\n toggleTokenWarningModal(false);\n },\n cancelClick: () => toggleTokenWarningModal(false),\n }}\n />\n </Modal>\n </>\n );\n};\n\nexport default SwapToken;\n","import { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { DEFAULT_SLIPPAGE, WARNING_SLIPPAGE } from \"@/utils/helper\";\nimport SwapToken from \"@/views/Swap\";\nimport { Container, Header } from \"@/views/Swap/style\";\nimport { IconDiv, PageContainer } from \"@/views/style\";\nimport {\n Headline1,\n ITransactionSettingsForm,\n MainCard,\n TransactionSettings,\n} from \"@aperture/uikit\";\nimport { useLocalStorageState } from \"ahooks\";\nimport styled from \"styled-components\";\nimport { useAccount } from \"wagmi\";\n\nconst StyledPageContainer = styled(PageContainer)`\n max-width: 1080px;\n min-height: calc(100vh - 223px);\n margin-top: 0px;\n padding-top: 73px;\n justify-content: center;\n`;\nconst SwapCard = styled(MainCard)`\n position: relative;\n max-width: 480px;\n background: ${({ theme }) => theme.colors.global.background.BG1};\n border-radius: 16px;\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line1};\n`;\nconst HeadTitle = styled.div`\n position: absolute;\n left: 24px;\n top: 0;\n transform: translateY(-50%);\n`;\nconst TitleText = styled(Headline1)`\n font-family: \"Dunbar Tall\";\n font-weight: 500;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\nconst UNITitle = styled.div`\n font-family: \"Roboto Flex\";\n font-weight: 400;\n font-size: 14px;\n line-height: 16px;\n color: ${({ theme }) => theme.colors.global.text.T2};\n`;\nconst HeadlineWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n align-items: center;\n width: 100%;\n`;\nconst Santa = styled.img`\n position: absolute;\n left: calc(25% - 90px);\n bottom: 101px;\n`;\nconst Lights = styled.img`\n position: absolute;\n right: 0px;\n bottom: 62px;\n`;\nconst Hat = styled.img`\n position: absolute;\n top: -42px;\n right: -50px;\n`;\n\nexport default function Swap() {\n const { amm, networkId } = useNetwork();\n const { address } = useAccount();\n const [transactionSettings, setTransactionSettings] =\n useLocalStorageState<ITransactionSettingsForm>(\n `swap-transaction-settings-${networkId}-${address}`,\n { defaultValue: { slippage: DEFAULT_SLIPPAGE, deadline: \"\" } }\n );\n\n return (\n <StyledPageContainer>\n <SwapCard>\n <HeadTitle>\n <TitleText>SWAP</TitleText>\n </HeadTitle>\n <Container>\n <Header>\n <HeadlineWrapper>\n {amm && (\n <IconDiv width={100} height={16}>\n <amm.Icon width={16} height={16} />\n <UNITitle>{amm.name}</UNITitle>\n </IconDiv>\n )}\n <TransactionSettings\n defaultSlippage={DEFAULT_SLIPPAGE}\n settingsForm={transactionSettings}\n warningSlippage={WARNING_SLIPPAGE}\n onFormChange={(form: any) => setTransactionSettings(form)}\n buttonSize={\"small\"}\n isBorderless={true}\n />\n </HeadlineWrapper>\n </Header>\n <SwapToken wrapperGap={30} settingsForm={transactionSettings} />\n </Container>\n </SwapCard>\n </StyledPageContainer>\n );\n}\n","import { AccessoryIcons } from \"@aperture/assetkit\";\nimport { Headline5 } from \"@aperture/uikit\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n box-sizing: border-box;\n gap: ${({ theme }) => theme.spacing[\"3xl\"]};\n`;\n\nexport const Subtitle = styled(Headline5)`\n color: ${({ theme }) => theme.colors.grey.darkGrey2};\n margin-bottom: 16px;\n span:first-child {\n margin-right: 4px;\n }\n`;\n\nexport const Header = styled.div`\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const HeadlineWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: ${({ theme }) => theme.spacing.xl};\n`;\n\nexport const SwapContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n border-radius: ${({ theme }) => theme.radii.md};\n gap: ${({ theme }) => theme.spacing[\"2xl\"]};\n position: relative;\n overflow: auto;\n`;\n\nexport const SwapInputWrapper = styled.div<{ gap?: number }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n gap: ${({ gap }) => gap || 0}px;\n position: relative;\n`;\n\nexport const ExchangeWrapper = styled.div`\n width: 100%;\n`;\n\nexport const SwapButton = styled.button<{ disabled: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n cursor: ${({ disabled }) => (disabled ? \"default\" : \"pointer\")};\n border-radius: ${({ theme }) => theme.radii.round};\n background: ${({ theme }) => theme.colors.global.primary};\n border: 0;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateY(-50%) translateX(-50%);\n`;\n\nexport const SwapButtonIcon = styled(AccessoryIcons.ExchangeIcon2)<{\n disabled: boolean;\n}>`\n transform: rotate(0deg);\n transition: transform ${({ theme }) => theme.transitions.default} ease;\n fill: ${({ theme }) => theme.colors.global.textAlt.T1};\n`;\n\nexport const ButtonWrapper = styled.div`\n display: flex;\n width: 100%;\n\n > div {\n width: 100%;\n }\n`;\n\nexport const DivideDiv = styled.div`\n position: relative;\n height: 100%;\n width: 100%;\n padding: 2px 0;\n`;\n\nexport const DivideY = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.global.line.Line1};\n`;\n"],"names":["window","__NEXT_P","push","__webpack_require__","TokenSelectModal","commonTokens","selectedToken","selectToken","selectUnknownToken","handleUnknownAddress","customClose","onClose","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","TokenSelectContent","useMutateWarningTokens","networkId","useNetwork","mutate","tokenBalanceMutate","useFetchUserTokensBalance","updateTokenMap","useAllChainStateStore","mutateWarningTokens","useEventCallback","chainId","token","tokens","Array","isArray","mutateWarningTokensByAddress","tokenAddress","addresses","viem","getPublicClient","undefined","TradeState","QuoteMethod","RouterPreference","TradeFillType","QuoteState","PoolType","SwapRouterNativeAssets","URAQuoteType","LOADING","INVALID","STALE","NO_ROUTE_FOUND","VALID","ROUTING_API","CLIENT_SIDE","CLIENT_SIDE_FALLBACK","X","API","CLIENT","Classic","UniswapX","ClassicTrade","Trade","totalGasUseEstimateUSD","approveInfo","needsApprove","gasUseEstimateUSD","approveGasEstimateUSD","constructor","blockNumber","isUniswapXBetter","requestId","quoteMethod","routes","fillType","SUCCESS","NOT_FOUND","V2Pool","V3Pool","MATIC","BNB","AVAX","ETH","CLASSIC","DUTCH_LIMIT","parsePoolOrPair","pool","type","parsePool","parsePair","isVersionedRoute","route","every","parseToken","address","decimals","symbol","Token","parseInt","toString","fee","sqrtRatioX96","liquidity","tickCurrent","tokenIn","tokenOut","Pool","reserve0","reserve1","Pair","CurrencyAmount","quotient","getUniswapCallData","payToken","receiveToken","quoteResponse","typeField","swapOptions","currencyIn","native","ticker","name","currencyOut","computeRoutes","length","_routes__","_routes__1","map","rawAmountIn","amountIn","rawAmountOut","amountOut","isOnlyV2","isOnlyV3","routev3","V3Route","routev2","V2Route","mixedRoute","MixedRouteSDK","inputAmount","outputAmount","e","getLogger","error","errorMessage","message","classicTrade","v2Routes","filter","r","v3Routes","mixedRoutes","tradeType","Number","quoteId","calldata","value","SwapRouter","to","getAMMInfo","swapRouter","getPanCakeSwapCallData","trade","PCSRouter","gasEstimate","gasUseEstimate","slippageTolerance","Percent","numerator","denominator","recipient","deadlineOrPreviousBlockhash","SwapBtnComponent","payAmount","receiveAmount","isWrap","isUnwrap","isRouteSyncing","wrapTxn","isTxnLoading","isEstimating","isGasLoading","transactionSettings","setTxnLoading","swapTxnApproved","setGasEstimated","setIsEstimating","setIsGasLoading","isConnected","walletAddress","useAccount","publicClient","amm","network","addSnackbar","useSnackbarV2","tx","setTx","useState","gasError","setGasError","isWrapTokenPair","generateTx","swapFee","getApertureFeeForSwap","numberToPercent","slippage","bigDecimal","Date","now","deadline","FEE_RECIPIENT","baseTx","data","BigInt","logData","estimateGas","from","then","l2GasAmount","totalGasCost","gas","calculateGasMargin","debug","catch","details","JSON","stringify","detail","getBlockNumber","payTokenBalance","getTokenBalance","beforeGenerateTxError","useMemo","E_AMM","amount","concat","useEffect","ready","sendTransactionAsync","isPending","useSendTransactionWithGas","handleSwap","hash","isUserRejected","includes","info","status","jsx_runtime","Button","variant","color","size","width","onClick","disabled","jsxs","Fragment","Spinner","ApproveAndSwapBtn","getChainInfo","props","approved","setApproved","ammEnum","contractAddress","amms","isNative","ApproveTokenBtn","approveOnChange","approve","useNative","SwapBtn","memo","getTrade","rawAmount","client","v3Pools","V4Router","clientProvider","currencyA","currencyB","pools","TradeType","gasPriceWei","getGasPrice","candidatePools","getQuoteV2","tokenDecimals","rateAfterFee","parseUnits","quoteDecimals","toExact","price","gasUseEstimateQuote","toFixed","quote","STABLE_COINS_FOR_FEE","isStableCoin","DEFAULT_APERTURE_SWAP_FEE","SwapToken","settingsForm","wrapperGap","isChainSupported","connector","state","setModalState","useModal","isOpen","E_ModalKey","isPayToken","setIsPayToken","isTokenWarningOpen","tokenWarning","setTokenWarning","tokenMap","useFetchTokenMap","startTransition","useTransition","setTypeField","isBalanceMutating","setIsBalanceMutating","setIsRouteSyncing","setPayToken","setReceiveToken","setPayAmount","setReceiveAmount","setWrapTxn","swapTxnHash","setSwapTxnHash","isSwapTxnLoading","setIsSwapTxnLoading","waitSwapTxnData","isLoading","isWaitSwapTxnLoading","isSuccess","isWaitSwapTxnSuccess","useWaitForTransaction","gasEstimated","nativeCurrency","updateHeight","useResize","resetSwapInput","Object","values","sort","a","b","mockPopularTokens","toLowerCase","run","runQuote","loading","isQuoteLoading","cancel","cancelQuote","useRequest","isWrappedTokens","isWrappedTokenPair","isValidTokenPair","isTokensEquivalent","Math","pow","console","log","isError","context","payTokenAddr","receiveTokenAddr","pairKey","join","warn","manual","debounceWait","pollingInterval","priceImpact","pay","receive","networkFee","formatUnits","gasUSD","wrapped","gasAmount","handleSelectToken","handleSwitch","toggleSelectTokenModal","storedPayInfo","storedReceiveInfo","fetchUnknownToken","open","toggleTokenWarningModal","transaction","successMsg","failureMsg","feeAmount","swapFeeUSD","txHash","mutateTokenBalance","convertedRoute","percentage","poolInRoute","swaps","sellToken","swap","buyToken","feeTier","FeeAmount","percent","idx","path","SwapContainer","SwapInputWrapper","gap","SwapInput","title","showMax","showAddToken","noBorder","showBalance","openTokenSelectModal","onValueChange","decimalScale","DivideDiv","DivideY","SwapButton","SwapButtonIcon","id","ConnectionType","openAddTokenPopup","ethereum","request","method","params","options","image","Icon","src","ExchangeWrapper","ExchangeRate","exchangeRate","minOutput","DEFAULT_SLIPPAGE","maxInput","expectedOutput","swapFeeInfo","apertureFee","apertureFeeActive","priceRoutes","priceImpactWarning","abs","DEFAULT_SWAP_WARNING_THRESHOLD","networkName","getNetworkName","ButtonWrapper","Modal","isModalOpen","padding","popularTokens","closeIcon","TokenWarningContent","exploreURL","getExplorerURL","confirmClick","cancelClick","StyledPageContainer","styled","PageContainer","SwapCard","MainCard","theme","colors","global","background","BG1","line","Line1","HeadTitle","TitleText","Headline1","text","T1","UNITitle","T2","HeadlineWrapper","Swap","setTransactionSettings","useLocalStorageState","defaultValue","Container","Header","IconDiv","height","TransactionSettings","defaultSlippage","warningSlippage","WARNING_SLIPPAGE","onFormChange","form","buttonSize","isBorderless","spacing","Headline5","grey","darkGrey2","xl","radii","md","round","primary","AccessoryIcons","withConfig","transitions","default","textAlt"],"sourceRoot":""}