From 2ce13c39b8d19a36b782b4dd2510d187a9d8471f Mon Sep 17 00:00:00 2001 From: ashwinrava <213675439+ashwinrava@users.noreply.github.com> Date: Thu, 28 Aug 2025 16:53:16 -0400 Subject: [PATCH 1/3] Migrate example app to Swap API --- apps/example/app/viem/components/Bridge.tsx | 24 ++-- apps/example/app/viem/components/Progress.tsx | 4 +- .../example/lib/hooks/useExecuteSwapQuote.tsx | 111 ++++++++++++++++++ apps/example/lib/hooks/useSwapQuote.tsx | 36 ++++++ 4 files changed, 163 insertions(+), 12 deletions(-) create mode 100644 apps/example/lib/hooks/useExecuteSwapQuote.tsx create mode 100644 apps/example/lib/hooks/useSwapQuote.tsx diff --git a/apps/example/app/viem/components/Bridge.tsx b/apps/example/app/viem/components/Bridge.tsx index 7874411..5ffcc74 100644 --- a/apps/example/app/viem/components/Bridge.tsx +++ b/apps/example/app/viem/components/Bridge.tsx @@ -7,7 +7,7 @@ import { Button, Label, Skeleton } from "@/components/ui"; import { useAvailableRoutes } from "@/lib/hooks/useAvailableRoutes"; import { useInputTokens } from "@/lib/hooks/useInputTokens"; import { useOutputTokens } from "@/lib/hooks/useOutputTokens"; -import { useQuote } from "@/lib/hooks/useQuote"; +import { useSwapQuote } from "@/lib/hooks/useSwapQuote"; import { useSupportedAcrossChains } from "@/lib/hooks/useSupportedAcrossChains"; import { getExplorerLink, isNativeToken } from "@/lib/utils"; import { TokenInfo } from "@across-protocol/app-sdk"; @@ -15,7 +15,7 @@ import { useEffect, useState } from "react"; import { formatUnits, parseUnits } from "viem"; import { useAccount, useBalance, useChains } from "wagmi"; import { useDebounceValue } from "usehooks-ts"; -import { useExecuteQuote } from "@/lib/hooks/useExecuteQuote"; +import { useExecuteSwapQuote } from "@/lib/hooks/useExecuteSwapQuote"; import { Progress } from "./Progress"; import { TokenInput } from "@/components/TokenInput"; import { ExternalLink } from "@/components/ExternalLink"; @@ -101,11 +101,15 @@ export function Bridge() { }); const quoteConfig = - route && debouncedInputAmount && fromToken + route && debouncedInputAmount && fromToken && destinationChainId && originChainId && address && toToken ? { - route, + originChainId: originChainId.toString(), + destinationChainId: destinationChainId.toString(), + inputToken: fromToken.address, + outputToken: toToken.address, + amount: parseUnits(debouncedInputAmount, fromToken?.decimals).toString(), + depositor: address, recipient: address, - inputAmount: parseUnits(debouncedInputAmount, fromToken?.decimals), } : undefined; @@ -113,16 +117,16 @@ export function Bridge() { quote, isLoading: quoteLoading, isRefetching, - } = useQuote(quoteConfig); + } = useSwapQuote(quoteConfig); const { - executeQuote, + executeSwapQuote, progress, error, isPending, depositReceipt, fillReceipt, - } = useExecuteQuote(quote); + } = useExecuteSwapQuote(quote ? { swapQuote: quote } : undefined); const inputBalance = fromTokenBalance ? parseFloat( formatUnits(fromTokenBalance?.value, fromTokenBalance?.decimals), @@ -232,12 +236,12 @@ export function Bridge() { {quote && toToken && (

{parseFloat( - formatUnits(quote.deposit.outputAmount, toToken.decimals), + formatUnits(BigInt(quote.minOutputAmount), toToken.decimals), ).toFixed(3)}

)}