One eligible Trove, as the walk found it.

interface EligibleTrove {
    collateral: bigint;
    entireDebt: bigint;
    interestOwed: bigint;
    interestRateBps: bigint;
    netDebt: bigint;
    owner: `0x${string}`;
    principal: bigint;
}

Properties

collateral: bigint

Collateral with pending redistribution folded in, as getEntireDebtAndColl returns it (MK-103).

entireDebt: bigint

Live entire debt, principal plus accrued interest.

interestOwed: bigint

Interest owed with live accrual and pending interest, the second debt component (MK-103).

interestRateBps: bigint

getTroveInterestRate(owner), in basis points. This Trove's rate, not a global and not the redeemer's (MK-088).

A Trove's rate is frozen at open (BorrowerOperations.sol:668-672) and at refinance (:1075) from the governable interestRateManager.interestRate(), so two Troves in one system carry different rates whenever governance has moved it between their opens.

netDebt: bigint

Entire debt minus the 200 MUSD gas reserve.

owner: `0x${string}`
principal: bigint

The stored principal, which is the base the protocol accrues interest on (MK-088).

_redeemCollateralFromTrove sizes its lot against _getTotalDebt(_borrower) read at EXECUTION (TroveManager.sol:1218-1221), and the growth between this read and that block is calculateInterestOwed(trove.principal, trove.interestRate, ...) (:1236-1241). Both arguments belong to THIS Trove, so both are carried here.