Skip to content

Commit e2c517a

Browse files
authored
refactor: remove request from pool math for readability (#51)
1 parent 1e3c375 commit e2c517a

File tree

4 files changed

+134
-124
lines changed

4 files changed

+134
-124
lines changed

packages/math-utils/src/formatters/compounded-interest/calculate-compounded-interest.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@ export interface CalculateCompoundedInterestRequest {
99
lastUpdateTimestamp: number;
1010
}
1111

12-
export function calculateCompoundedInterest(
13-
request: CalculateCompoundedInterestRequest,
14-
): BigNumber {
15-
const timeDelta = valueToZDBigNumber(
16-
request.currentTimestamp - request.lastUpdateTimestamp,
17-
);
18-
const ratePerSecond = valueToZDBigNumber(request.rate).dividedBy(
19-
SECONDS_PER_YEAR,
20-
);
12+
export function calculateCompoundedInterest({
13+
rate,
14+
currentTimestamp,
15+
lastUpdateTimestamp,
16+
}: CalculateCompoundedInterestRequest): BigNumber {
17+
const timeDelta = valueToZDBigNumber(currentTimestamp - lastUpdateTimestamp);
18+
const ratePerSecond = valueToZDBigNumber(rate).dividedBy(SECONDS_PER_YEAR);
2119
return binomialApproximatedRayPow(ratePerSecond, timeDelta);
2220
}

packages/math-utils/src/formatters/incentive/calculate-incentive-apy.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@ export interface CalculateIncentiveAPYRequest {
99
tokenPriceInEth: string;
1010
}
1111

12-
export function calculateIncentiveAPY(
13-
request: CalculateIncentiveAPYRequest,
14-
): string {
12+
export function calculateIncentiveAPY({
13+
emissionPerSecond,
14+
rewardTokenPriceInEth,
15+
tokenPriceInEth,
16+
totalTokenSupply,
17+
decimals,
18+
}: CalculateIncentiveAPYRequest): string {
1519
const emissionPerSecondNormalized = normalizeBN(
16-
request.emissionPerSecond,
20+
emissionPerSecond,
1721
ETH_DECIMALS,
18-
).multipliedBy(request.rewardTokenPriceInEth);
22+
).multipliedBy(rewardTokenPriceInEth);
1923

2024
if (emissionPerSecondNormalized.eq(0)) {
2125
return '0';
@@ -26,8 +30,8 @@ export function calculateIncentiveAPY(
2630
);
2731

2832
const totalSupplyNormalized = valueToBigNumber(
29-
normalize(request.totalTokenSupply, request.decimals),
30-
).multipliedBy(request.tokenPriceInEth);
33+
normalize(totalTokenSupply, decimals),
34+
).multipliedBy(tokenPriceInEth);
3135

3236
return emissionPerYear.dividedBy(totalSupplyNormalized).toFixed();
3337
}

packages/math-utils/src/formatters/reserve/index.ts

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,22 @@ export interface ReserveData {
4848
lastUpdateTimestamp: number;
4949
}
5050

51-
export function formatReserve(
52-
request: FormatReserveRequest,
53-
): FormatReserveResponse {
51+
export function formatReserve({
52+
reserve,
53+
currentTimestamp,
54+
}: FormatReserveRequest): FormatReserveResponse {
5455
const calculateReserveDebtResult = calculateReserveDebt(
55-
request.reserve,
56-
request.currentTimestamp,
56+
reserve,
57+
currentTimestamp,
5758
);
5859

5960
const totalLiquidity = calculateTotalLiquidity(
6061
calculateReserveDebtResult.totalDebt,
61-
request.reserve.availableLiquidity,
62+
reserve.availableLiquidity,
6263
);
6364

6465
const normalizeWithReserve = (n: BigNumberValue) =>
65-
normalize(n, request.reserve.decimals);
66+
normalize(n, reserve.decimals);
6667

6768
return {
6869
totalVariableDebt: normalizeWithReserve(
@@ -72,48 +73,37 @@ export function formatReserve(
7273
calculateReserveDebtResult.totalStableDebt,
7374
),
7475
totalLiquidity: normalizeWithReserve(totalLiquidity),
75-
availableLiquidity: normalizeWithReserve(
76-
request.reserve.availableLiquidity,
77-
),
76+
availableLiquidity: normalizeWithReserve(reserve.availableLiquidity),
7877
utilizationRate: totalLiquidity.eq(0)
7978
? '0'
8079
: valueToBigNumber(calculateReserveDebtResult.totalDebt)
8180
.dividedBy(totalLiquidity)
8281
.toFixed(),
8382
totalDebt: normalizeWithReserve(calculateReserveDebtResult.totalDebt),
84-
baseLTVasCollateral: normalize(
85-
request.reserve.baseLTVasCollateral,
86-
LTV_PRECISION,
87-
),
88-
reserveFactor: normalize(request.reserve.reserveFactor, LTV_PRECISION),
89-
variableBorrowRate: normalize(
90-
request.reserve.variableBorrowRate,
91-
RAY_DECIMALS,
92-
),
93-
stableBorrowRate: normalize(request.reserve.stableBorrowRate, RAY_DECIMALS),
94-
liquidityRate: normalize(request.reserve.liquidityRate, RAY_DECIMALS),
95-
liquidityIndex: normalize(request.reserve.liquidityIndex, RAY_DECIMALS),
83+
baseLTVasCollateral: normalize(reserve.baseLTVasCollateral, LTV_PRECISION),
84+
reserveFactor: normalize(reserve.reserveFactor, LTV_PRECISION),
85+
variableBorrowRate: normalize(reserve.variableBorrowRate, RAY_DECIMALS),
86+
stableBorrowRate: normalize(reserve.stableBorrowRate, RAY_DECIMALS),
87+
liquidityRate: normalize(reserve.liquidityRate, RAY_DECIMALS),
88+
liquidityIndex: normalize(reserve.liquidityIndex, RAY_DECIMALS),
9689
reserveLiquidationThreshold: normalize(
97-
request.reserve.reserveLiquidationThreshold,
90+
reserve.reserveLiquidationThreshold,
9891
4,
9992
),
10093
// https://github.com/aave/protocol-v2/blob/baeb455fad42d3160d571bd8d3a795948b72dd85/contracts/protocol/lendingpool/LendingPoolConfigurator.sol#L284
10194
reserveLiquidationBonus: normalize(
102-
valueToBigNumber(request.reserve.reserveLiquidationBonus).minus(
95+
valueToBigNumber(reserve.reserveLiquidationBonus).minus(
10396
10 ** LTV_PRECISION,
10497
),
10598
LTV_PRECISION,
10699
),
107100
totalScaledVariableDebt: normalizeWithReserve(
108-
request.reserve.totalScaledVariableDebt,
101+
reserve.totalScaledVariableDebt,
109102
),
110103
totalPrincipalStableDebt: normalizeWithReserve(
111-
request.reserve.totalPrincipalStableDebt,
112-
),
113-
variableBorrowIndex: normalize(
114-
request.reserve.variableBorrowIndex,
115-
RAY_DECIMALS,
104+
reserve.totalPrincipalStableDebt,
116105
),
106+
variableBorrowIndex: normalize(reserve.variableBorrowIndex, RAY_DECIMALS),
117107
};
118108
}
119109

0 commit comments

Comments
 (0)