A live Trove position. Every numeric field except liquidationPrice and healthFactor comes straight from a contract getter, correct by construction. The two derived fields are thin transforms of those authoritative values (see docs/05-math-and-hints.md §4), proven against computeCR.

interface Trove {
    collateral: bigint;
    entireDebt: bigint;
    exists: boolean;
    healthFactor: number;
    icr: bigint;
    interestOwed: bigint;
    interestRate: number;
    isLiquidatable: boolean;
    liquidationPrice: bigint;
    nominalICR: bigint;
    principal: bigint;
    status: TroveStatus;
}

Properties

collateral: bigint

Entire collateral incl. pending redistribution, getEntireDebtAndColl.coll (BTC wei).

entireDebt: bigint

Live entire debt = principal + interest from getEntireDebtAndColl (the value ICR uses).

exists: boolean

True only for an active position with debt.

healthFactor: number

Derived: icr / MCR as a number (1.0 at MCR).

icr: bigint

getCurrentICR(address, price), 1e18 fixed point.

interestOwed: bigint

Interest accrued to NOW, getEntireDebtAndColl.interest (NOT getTroveInterestOwed, which is the stale stored value; C3).

interestRate: number

The fixed rate locked at open, in basis points, getTroveInterestRate.

isLiquidatable: boolean

Normal-mode condition icr < MCR. Recovery-Mode nuances are Phase 6, see getSystemState().isRecoveryMode.

liquidationPrice: bigint

Derived: BTC/USD price at which ICR hits MCR = (MCR × entireDebt) / collateral.

nominalICR: bigint

getNominalICR(address).

principal: bigint

Principal component of the debt (draw + fee + 200 gas reserve, + any pending), excl. interest, getEntireDebtAndColl.principal.

status: TroveStatus

getTroveStatus.