diff --git a/src/models/lending/reserve.ts b/src/models/lending/reserve.ts index 8be543a..05035b0 100644 --- a/src/models/lending/reserve.ts +++ b/src/models/lending/reserve.ts @@ -184,5 +184,6 @@ export const collateralToLiquidity = (collateralAmount: BN | number, reserve?: L export const liquidityToCollateral = (liquidityAmount: BN | number, reserve?: LendingReserve) => { const amount = typeof liquidityAmount === 'number' ? liquidityAmount : liquidityAmount.toNumber(); + console.log('Exchange rate:', collateralExchangeRate(reserve)); return Math.floor(amount * collateralExchangeRate(reserve)); }; diff --git a/src/views/marginTrading/newPosition/leverage.ts b/src/views/marginTrading/newPosition/leverage.ts index 1fd34b9..de3eb68 100644 --- a/src/views/marginTrading/newPosition/leverage.ts +++ b/src/views/marginTrading/newPosition/leverage.ts @@ -2,7 +2,6 @@ import { useEffect } from 'react'; import { LABELS } from '../../../constants'; import { useEnrichedPools } from '../../../contexts/market'; import { useUserDeposits } from '../../../hooks'; -import { collateralToLiquidity, liquidityToCollateral } from '../../../models'; import { usePoolForBasket } from '../../../utils/pools'; import { Position } from './interfaces'; @@ -39,10 +38,11 @@ export function useLeverage({ return; } + // If there is more of A than B + const exchangeRate = enriched[0].liquidityB / enriched[0].liquidityA; const amountDesiredToPurchase = parseFloat(newPosition.asset.value); const leverageDesired = newPosition.leverage; - - const amountAvailableInOysterForMargin = collateralToLiquidity(collateralDeposit.info.amount, desiredType.info); + const amountAvailableInOysterForMargin = collateralDeposit.info.amount * exchangeRate; const amountToDepositOnMargin = amountDesiredToPurchase / leverageDesired; if (amountToDepositOnMargin > amountAvailableInOysterForMargin) { @@ -55,7 +55,7 @@ export function useLeverage({ const supplyRatio = liqA / liqB; // change in liquidity is amount desired (in units of B) converted to collateral units(A) - const chgLiqA = liquidityToCollateral(amountDesiredToPurchase, desiredType.info); + const chgLiqA = amountDesiredToPurchase / exchangeRate; const newLiqA = liqA - chgLiqA; const newLiqB = liqB + amountDesiredToPurchase; const newSupplyRatio = newLiqA / newLiqB;