ghost-dao-interface/src/hooks/uniswapv2/UniswapV2Pair.js
Uncle Fatso 7be03aaa9f
fix LP dex link
Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
2026-03-18 15:15:39 +03:00

67 lines
2.3 KiB
JavaScript

import { useReadContract, useReadContracts } from "wagmi";
import { DecimalBigNumber } from "../../helpers/DecimalBigNumber";
import { abi as UniswapV2Pair } from "../../abi/UniswapV2Pair.json";
import { abi as Erc20Abi } from "../../abi/ERC20.json";
import { getTokenAddress } from "../helpers";
export const useUniswapV2PairReserves = (chainId, rawContractAddress) => {
const contractAddress = getTokenAddress(chainId, rawContractAddress);
const { data: pairReserves, refetch: pairReservesRefetch } = useReadContract({
abi: UniswapV2Pair,
address: contractAddress,
functionName: "getReserves",
scopeKey: `getReserves-${contractAddress}-${chainId}`,
chainId: chainId,
});
const { data: tokenAddresses } = useReadContracts({
contracts: [
{
abi: UniswapV2Pair,
address: contractAddress,
functionName: "token0",
scopeKey: `token0-${contractAddress}-${chainId}`,
chainId: chainId,
},
{
abi: UniswapV2Pair,
address: contractAddress,
functionName: "token1",
scopeKey: `token1-${contractAddress}-${chainId}`,
chainId: chainId,
}
]
});
const { data: tokenDecimals } = useReadContracts({
contracts: tokenAddresses?.map((tokenAddress) => ({
abi: Erc20Abi,
address: tokenAddress?.result ? tokenAddress.result : "",
functionName: "decimals",
scopeKey: `decimals-${tokenAddress}-${chainId}`,
chainId: chainId,
}))
})
return {
reserves: {
reserve0: new DecimalBigNumber(
pairReserves ? pairReserves[0] : 0n,
tokenDecimals?.at(0).result ? tokenDecimals.at(0).result : 18
),
reserve1: new DecimalBigNumber(
pairReserves ? pairReserves[1] : 0n,
tokenDecimals?.at(1).result ? tokenDecimals.at(1).result : 18
),
},
tokens: {
token0: tokenAddresses?.at(0).result ? tokenAddresses.at(0).result : "",
token1: tokenAddresses?.at(1).result ? tokenAddresses.at(1).result : "",
},
refetch: pairReservesRefetch,
};
}