fix for the estimated output amount of LP tokens during addLiquidity

Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
Uncle Fatso 2025-05-07 16:14:16 +03:00
parent ab8ca19a69
commit bb98a8aea7
Signed by: f4ts0
GPG Key ID: 565F4F2860226EBB
2 changed files with 15 additions and 10 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "ghost-dao-interface", "name": "ghost-dao-interface",
"private": true, "private": true,
"version": "0.0.23", "version": "0.0.24",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@ -60,14 +60,11 @@ const PoolContainer = ({
} = useTotalSupply(chainId, pairAddress); } = useTotalSupply(chainId, pairAddress);
const { const {
reserves: pairReserves, reserves: pairReserves,
tokens: tokenAddresses,
refetch: pairReservesRefetch, refetch: pairReservesRefetch,
} = useUniswapV2PairReserves( } = useUniswapV2PairReserves(
chainId, chainId,
pairAddress, pairAddress,
balanceTop._decimals,
balanceBottom._decimals,
tokenNameTop,
tokenNameBottom,
); );
const onSwap = () => { const onSwap = () => {
@ -110,19 +107,27 @@ const PoolContainer = ({
} }
const estimatedAmountOut = useMemo(() => { const estimatedAmountOut = useMemo(() => {
const pairReserves0 = addressTop.toUpperCase() === tokenAddresses.token0.toUpperCase()
? pairReserves.reserve0
: pairReserves.reserve1;
const pairReserves1 = addressBottom.toUpperCase() === tokenAddresses.token1.toUpperCase()
? pairReserves.reserve1
: pairReserves.reserve0;
const zero = new DecimalBigNumber(0n, 0); const zero = new DecimalBigNumber(0n, 0);
const value0 = new DecimalBigNumber(amountTop, balanceTop._decimals) const value0 = new DecimalBigNumber(amountTop, balanceTop._decimals)
const value1 = new DecimalBigNumber(amountBottom, balanceBottom._decimals) const value1 = new DecimalBigNumber(amountBottom, balanceBottom._decimals);
const amountToAddA = new DecimalBigNumber(value0._value.toBigInt(), balanceTop._decimals); const amountToAddA = new DecimalBigNumber(value0._value.toBigInt(), balanceTop._decimals);
const amountToAddB = new DecimalBigNumber(value1._value.toBigInt(), balanceBottom._decimals); const amountToAddB = new DecimalBigNumber(value1._value.toBigInt(), balanceBottom._decimals);
if ( if (
pairReserves.reserve0.gt(zero) && pairReserves0.gt(zero) &&
pairReserves.reserve1.gt(zero) && pairReserves1.gt(zero) &&
lpTotalSupply.gt(new DecimalBigNumber(0n, 0)) lpTotalSupply.gt(new DecimalBigNumber(0n, 0))
) { ) {
const lpTokensFromA = (amountToAddA.mul(lpTotalSupply).div(pairReserves.reserve0)); const lpTokensFromA = (amountToAddA.mul(lpTotalSupply).div(pairReserves0));
const lpTokensFromB = (amountToAddB.mul(lpTotalSupply).div(pairReserves.reserve1)); const lpTokensFromB = (amountToAddB.mul(lpTotalSupply).div(pairReserves1));
const lpTokensToMint = lpTokensFromA.gt(lpTokensFromB) ? lpTokensFromB : lpTokensFromA; const lpTokensToMint = lpTokensFromA.gt(lpTokensFromB) ? lpTokensFromB : lpTokensFromA;
return lpTokensToMint; return lpTokensToMint;
} else { } else {