From bb98a8aea7a8c9d7fdeea8ed71480666b26c05fc Mon Sep 17 00:00:00 2001 From: Uncle Fatso Date: Wed, 7 May 2025 16:14:16 +0300 Subject: [PATCH] fix for the estimated output amount of LP tokens during addLiquidity Signed-off-by: Uncle Fatso --- package.json | 2 +- src/containers/Dex/PoolContainer.jsx | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index eed3b00..ad351e7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ghost-dao-interface", "private": true, - "version": "0.0.23", + "version": "0.0.24", "type": "module", "scripts": { "dev": "vite", diff --git a/src/containers/Dex/PoolContainer.jsx b/src/containers/Dex/PoolContainer.jsx index a39db0b..f6fd991 100644 --- a/src/containers/Dex/PoolContainer.jsx +++ b/src/containers/Dex/PoolContainer.jsx @@ -60,14 +60,11 @@ const PoolContainer = ({ } = useTotalSupply(chainId, pairAddress); const { reserves: pairReserves, + tokens: tokenAddresses, refetch: pairReservesRefetch, } = useUniswapV2PairReserves( chainId, pairAddress, - balanceTop._decimals, - balanceBottom._decimals, - tokenNameTop, - tokenNameBottom, ); const onSwap = () => { @@ -110,19 +107,27 @@ const PoolContainer = ({ } 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 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 amountToAddB = new DecimalBigNumber(value1._value.toBigInt(), balanceBottom._decimals); if ( - pairReserves.reserve0.gt(zero) && - pairReserves.reserve1.gt(zero) && + pairReserves0.gt(zero) && + pairReserves1.gt(zero) && lpTotalSupply.gt(new DecimalBigNumber(0n, 0)) ) { - const lpTokensFromA = (amountToAddA.mul(lpTotalSupply).div(pairReserves.reserve0)); - const lpTokensFromB = (amountToAddB.mul(lpTotalSupply).div(pairReserves.reserve1)); + const lpTokensFromA = (amountToAddA.mul(lpTotalSupply).div(pairReserves0)); + const lpTokensFromB = (amountToAddB.mul(lpTotalSupply).div(pairReserves1)); const lpTokensToMint = lpTokensFromA.gt(lpTokensFromB) ? lpTokensFromB : lpTokensFromA; return lpTokensToMint; } else {