Quoter
Quoter Class Reference
The Quoter provides price quoting functionality for both Uniswap V3 and V2 swaps. It enables simulation of exact input/output swaps without executing transactions, with proper decimal handling for amounts.
ReadQuoter
export class ReadQuoter {
constructor(
quoteV2Address: Address,
univ2RouterAddress: Address,
drift: Drift<ReadAdapter> = createDrift()
)
Methods:
quoteExactInputV3 - Get price quote for exact input swap (Uniswap V3)
async quoteExactInputV3(
params: FunctionArgs<QuoterV2ABI, "quoteExactInputSingle">["params"]
): Promise<FunctionReturn<QuoterV2ABI, "quoteExactInputSingle">>
quoteExactOutputV3 - Get price quote for exact output swap (Uniswap V3)
async quoteExactOutputV3(
params: FunctionArgs<QuoterV2ABI, "quoteExactOutputSingle">["params"]
): Promise<FunctionReturn<QuoterV2ABI, "quoteExactOutputSingle">>
quoteExactInputV2 - Get price quote for exact input swap (Uniswap V2)
async quoteExactInputV2(
params: FunctionArgs<UniswapV2Router02ABI, "getAmountsOut">
): Promise<FunctionReturn<UniswapV2Router02ABI, "getAmountsOut">>
quoteExactOutputV2 - Get price quote for exact output swap (Uniswap V2)
async quoteExactOutputV2(
params: FunctionArgs<UniswapV2Router02ABI, "getAmountsIn">
): Promise<FunctionReturn<UniswapV2Router02ABI, "getAmountsIn">>
Contract ABIs
export type QuoterV2ABI = typeof quoterV2Abi;
export type UniswapV2Router02ABI = typeof uniswapV2Router02Abi;
Example Usage
const quoter = new ReadQuoter("0xQuoterV2Address", "0xUniV2RouterAddress");
// V3 Exact Input Quote
const v3InputQuote = await quoter.quoteExactInputV3({
tokenIn: "0x...",
tokenOut: "0x...",
amountIn: 1000000n,
fee: 3000,
sqrtPriceLimitX96: 0n,
});
// V2 Exact Output Quote
const v2OutputQuote = await quoter.quoteExactOutputV2({
amountOut: 500000n,
path: ["0x...", "0x..."],
to: "0x...",
deadline: Math.floor(Date.now() / 1000) + 300,
});
Last updated