diff --git a/packages/math-utils/src/formatters/gho/index.test.ts b/packages/math-utils/src/formatters/gho/index.test.ts index 0271c3a5..ce9e1766 100644 --- a/packages/math-utils/src/formatters/gho/index.test.ts +++ b/packages/math-utils/src/formatters/gho/index.test.ts @@ -36,8 +36,8 @@ describe('formatGhoData', () => { expect(result.userGhoDiscountPercent).toEqual(0.1); expect(result.userGhoAvailableToBorrowAtDiscount).toEqual(10000); expect(result.userDiscountTokenBalance).toEqual(100); - expect(result.userGhoBorrowBalance).toEqual(1.1000000063419584); - expect(result.userDiscountedGhoInterest).toEqual(0.9000000570776255); + expect(result.userGhoBorrowBalance).toEqual(1.9000000570776256); + expect(result.userDiscountedGhoInterest).toEqual(0.1000000063419584); }); it('calculates the amount of GHO available to borrow at discount', () => { @@ -53,8 +53,8 @@ describe('formatGhoData', () => { expect(result.userGhoDiscountPercent).toEqual(0.1); expect(result.userGhoAvailableToBorrowAtDiscount).toEqual(0); expect(result.userDiscountTokenBalance).toEqual(0.1); - expect(result.userGhoBorrowBalance).toEqual(1.1000000063419584); - expect(result.userDiscountedGhoInterest).toEqual(0.9000000570776255); + expect(result.userGhoBorrowBalance).toEqual(1.9000000570776256); + expect(result.userDiscountedGhoInterest).toEqual(0.1000000063419584); }); it('properly formats user summary with GHO discount', () => { diff --git a/packages/math-utils/src/formatters/gho/index.ts b/packages/math-utils/src/formatters/gho/index.ts index 0cfce761..caba2b79 100644 --- a/packages/math-utils/src/formatters/gho/index.ts +++ b/packages/math-utils/src/formatters/gho/index.ts @@ -122,30 +122,30 @@ export function formatGhoUserData({ userGhoAvailableToBorrowAtDiscount = 0; } - const userBalancePreDiscount = getCompoundedBalance({ + const balance = getCompoundedBalance({ principalBalance: ghoUserData.userGhoScaledBorrowBalance, reserveIndex: ghoReserveData.ghoCurrentBorrowIndex, reserveRate: ghoReserveData.ghoBaseVariableBorrowRate, lastUpdateTimestamp: Number(ghoReserveData.ghoReserveLastUpdateTimestamp), currentTimestamp, }); - const accruedInterest = userBalancePreDiscount.minus( + const balanceIncrease = balance.minus( rayMul( ghoUserData.userGhoScaledBorrowBalance, ghoUserData.userPreviousGhoBorrowIndex, ), ); - const discount = accruedInterest.multipliedBy( - 1 - Number(normalize(ghoUserData.userGhoDiscountPercent, 4)), - ); - const userBorrowBalance = userBalancePreDiscount.minus(discount); + const discountedAmount = balanceIncrease + .multipliedBy(ghoUserData.userGhoDiscountPercent) + .dividedBy(10000); // discount is in basis points + const userBorrowBalance = balance.minus(discountedAmount); return { userGhoDiscountPercent: Number( normalize(ghoUserData.userGhoDiscountPercent, 4), ), userDiscountTokenBalance: formattedUserDiscountTokenBalance, userGhoBorrowBalance: Number(normalize(userBorrowBalance, 18)), - userDiscountedGhoInterest: Number(normalize(discount, 18)), + userDiscountedGhoInterest: Number(normalize(discountedAmount, 18)), userGhoAvailableToBorrowAtDiscount, }; }