Skip to content

Commit fe151ca

Browse files
committed
refactor: add calculateFutureLeverage
1 parent aa96cae commit fe151ca

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

src/lendMarkets/LendMarketTemplate.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
_getUsdRate,
2222
DIGas,
2323
smartNumber,
24+
calculateFutureLeverage,
2425
} from "../utils.js";
2526
import {IDict, TGas, TAmount, IReward, IQuoteOdos, IOneWayMarket, IPartialFrac} from "../interfaces.js";
2627
import { _getExpectedOdos, _getQuoteOdos, _assembleTxOdos, _getUserCollateral, _getUserCollateralForce, _getMarketsData } from "../external-api.js";
@@ -1755,10 +1756,8 @@ export class LendMarketTemplate {
17551756
]);
17561757

17571758
const total_deposit_from_user = userCollateral.total_deposit_from_user_precise;
1758-
const collateralBN = BN(collateral);
1759-
const currentCollateralBN = BN(currentCollateral);
17601759

1761-
return currentCollateralBN.plus(collateralBN).div(BN(total_deposit_from_user).plus(collateralBN)).toString();
1760+
return calculateFutureLeverage(currentCollateral, total_deposit_from_user, collateral, 'add');
17621761
}
17631762

17641763
// ---------------- REMOVE COLLATERAL ----------------
@@ -1835,10 +1834,8 @@ export class LendMarketTemplate {
18351834
]);
18361835

18371836
const total_deposit_from_user = userCollateral.total_deposit_from_user_precise;
1838-
const collateralBN = BN(collateral);
1839-
const currentCollateralBN = BN(currentCollateral);
18401837

1841-
return currentCollateralBN.minus(collateralBN).div(BN(total_deposit_from_user).minus(collateralBN)).toString();
1838+
return calculateFutureLeverage(currentCollateral, total_deposit_from_user, collateral, 'remove');
18421839
}
18431840

18441841
// ---------------- REPAY ----------------

src/mintMarkets/MintMarketTemplate.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
MAX_ACTIVE_BAND,
2020
_mulBy1_3,
2121
DIGas,
22+
calculateFutureLeverage,
2223
} from "../utils.js";
2324
import {IDict, ILlamma, TGas} from "../interfaces.js";
2425
import {_getUserCollateralCrvUsd, _getUserCollateralCrvUsdFull} from "../external-api.js";
@@ -1010,10 +1011,8 @@ export class MintMarketTemplate {
10101011
]);
10111012

10121013
const total_deposit_from_user = userCollateral.total_deposit_from_user_precise ?? userCollateral.total_deposit_precise;
1013-
const collateralBN = BN(collateral);
1014-
const currentCollateralBN = BN(currentCollateral);
10151014

1016-
return currentCollateralBN.plus(collateralBN).div(BN(total_deposit_from_user).plus(collateralBN)).toString();
1015+
return calculateFutureLeverage(currentCollateral, total_deposit_from_user, collateral, 'add');
10171016
}
10181017

10191018
// ---------------- REMOVE COLLATERAL ----------------
@@ -1093,10 +1092,8 @@ export class MintMarketTemplate {
10931092
]);
10941093

10951094
const total_deposit_from_user = userCollateral.total_deposit_from_user_precise ?? userCollateral.total_deposit_precise;
1096-
const collateralBN = BN(collateral);
1097-
const currentCollateralBN = BN(currentCollateral);
10981095

1099-
return currentCollateralBN.minus(collateralBN).div(BN(total_deposit_from_user).minus(collateralBN)).toString();
1096+
return calculateFutureLeverage(currentCollateral, total_deposit_from_user, collateral, 'remove');
11001097
}
11011098

11021099
// ---------------- REPAY ----------------

src/utils.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,4 +498,21 @@ export const getLsdApy = memoize(async(name: 'wstETH' | 'sfrxETH'): Promise<{
498498
{
499499
promise: true,
500500
maxAge: 60 * 1000, // 1m
501-
});
501+
});
502+
503+
export const calculateFutureLeverage = (
504+
currentCollateral: number | string,
505+
totalDepositFromUser: number | string,
506+
collateral: number | string,
507+
operation: 'add' | 'remove'
508+
): string => {
509+
const collateralBN = BN(collateral);
510+
const currentCollateralBN = BN(currentCollateral);
511+
const totalDepositBN = BN(totalDepositFromUser);
512+
513+
if (operation === 'add') {
514+
return currentCollateralBN.plus(collateralBN).div(totalDepositBN.plus(collateralBN)).toString();
515+
} else {
516+
return currentCollateralBN.minus(collateralBN).div(totalDepositBN.minus(collateralBN)).toString();
517+
}
518+
};

0 commit comments

Comments
 (0)