diff --git a/packages/blue-sdk/src/vault/Vault.ts b/packages/blue-sdk/src/vault/Vault.ts index 37f367ff..968e89b0 100644 --- a/packages/blue-sdk/src/vault/Vault.ts +++ b/packages/blue-sdk/src/vault/Vault.ts @@ -8,6 +8,7 @@ import { type IVaultMarketAllocation, VaultMarketAllocation, } from "./VaultMarketAllocation.js"; +import { VaultUtils } from "./VaultUtils"; export interface Pending { value: T; @@ -293,6 +294,13 @@ export class AccrualVault extends Vault implements IAccrualVault { return MathLib.wMulDown(this.apy, MathLib.WAD - this.fee); } + /** + * Total interest paid by borrowers, increased with unrealized bad debt. + */ + get accruedInterest() { + return VaultUtils.accruedInterest(this); + } + public getAllocationProportion(marketId: MarketId) { if (this.totalAssets === 0n) return 0n; diff --git a/packages/blue-sdk/src/vault/VaultUtils.ts b/packages/blue-sdk/src/vault/VaultUtils.ts index 837d05e7..81b32759 100644 --- a/packages/blue-sdk/src/vault/VaultUtils.ts +++ b/packages/blue-sdk/src/vault/VaultUtils.ts @@ -49,4 +49,23 @@ export namespace VaultUtils { rounding, ); } + + export function accruedInterest({ + totalAssets, + totalSupply, + decimalsOffset, + }: { + totalAssets: BigIntish; + totalSupply: BigIntish; + decimalsOffset: BigIntish; + }) { + return ( + BigInt(totalAssets) - + toAssets( + totalSupply, + { totalAssets: 0n, totalSupply: 0n, decimalsOffset }, + "Down", + ) + ); + } }