TroveManager
Write Methods
function collectInterests() external
Mints accumulated interest to the fee receiver. Reverts if no interest is payable.
function fetchPrice() public returns (uint256)
Fetches the latest collateral price from the price feed contract.
Return Values:
price
uint256
Current price of collateral from the price feed
function getEntireSystemBalances() external returns (uint256, uint256, uint256)
Returns a snapshot of the system's total collateral, debt, and current price in one call.
Return Values:
totalCollateral
uint256
Sum of active + defaulted collateral
totalDebt
uint256
Sum of active + defaulted debt (with interest)
price
uint256
Current collateral price from oracle
function claimCollateral(uint256 _troveId, address _receiver, bool _useNative) external
Claims remaining collateral from a closed trove. Only callable by trove owner.
Input Parameters:
_troveId
uint256
ID of the trove
_receiver
address
Address to receive collateral
_useNative
bool
Whether to send native ETH
Return Values:
None
-
Function does not return a value
function collectFrontEndInterest(address frontEndId) external {
Allows front-end operators to collect accrued interest.
Input Parameters:
frontEndId
address
Front-end operator address
Return Values:
None
-
Function does not return a value
View Methods
function loadPrice() public view returns (uint256)
Returns the most recent price without updating it (gas-efficient).
Return Values:
price
uint256
Last recorded price of collateral (cached)
function getWeekAndDay() public view returns (uint256, uint256)
Calculates the current week and day based on the systemβs start time.
Return Values:
week
uint256
Current week since system start
day
uint256
Current day within the week (0β6)
function getTotalMints(uint256 week) external view returns (uint32[7] memory)
Returns the volume of debt minted per day in a specific week.
Input Parameters:
week
uint256
Week number to query
Return Values:
mints
uint32[7]
Array of daily mint amounts for the week
function getTroveOwnersCount() external view returns (uint256)
Returns the length of the TroveIds
array.
Return Values:
count
uint256
Total number of active troves
function getTroveFromTroveOwnersArray(uint256 arrayIndex) external view returns (uint256)
Returns a trove ID from the active troves array.
Input Parameters:
arrayIndex
uint256
Index in the TroveIds
array
Return Values:
troveId
uint256
ID of the trove at the given index
function getAllTrovesByOwner(address account) external view returns (Trove[] memory)
Fetches all trove data (collateral, debt, status, etc.) for a given owner.
Input Parameters:
account
address
Owner of the troves
Return Values:
troves
Trove[]
Array of all troves owned by account
function getTrove(uint256 _troveId) public view returns (Trove memory)
Returns the complete data structure for a specific trove.
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
trove
Trove
Struct containing:
- debt
(uint256)
- coll
(uint256)
- stake
(uint256)
- status
(Status enum)
- arrayIndex
(uint128)
- activeInterestIndex
(uint256)
- frontEndId
(address)
- referrerId
(address)
function getTroveStatus(uint256 _troveId) external view returns (uint256)
Returns the status of a trove (e.g., active
, closedByLiquidation
).
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
status
uint256
Trove status (0β4, matching Status
enum)
function getTroveStake(uint256 _troveId) external view returns (uint256)
Returns the stake (collateral-weighted value) of a trove.
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
stake
uint256
Stake amount for the trove
function getTroveCollAndDebt(uint256 _troveId) public view returns (uint256 coll, uint256 debt)
Returns trove collateral and debt (view).
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
coll
uint256
Total collateral in the trove
debt
uint256
Total debt in the trove
function getEntireDebtAndColl(uint256 _troveId) public view
returns (
uint256 debt,
uint256 coll,
uint256 pendingDebtReward,
uint256 pendingCollateralReward
)
Returns the full state of a trove, including pending rewards.
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
debt
uint256
Total debt (including pending rewards)
coll
uint256
Total collateral (including pending rewards)
pendingDebtReward
uint256
Pending debt redistribution reward
pendingCollateralReward
uint256
Pending collateral redistribution reward
function getEntireSystemColl() public view returns (uint256)
Returns the total collateral locked in the system.
Return Values:
totalCollateral
uint256
Sum of active + defaulted collateral
function getEntireSystemDebt() public view returns (uint256)
Returns the total debt in the system, including pending interest.
Return Values:
totalDebt
uint256
Sum of active + defaulted debt (with accrued interest)
function getNominalICR(uint256 _troveId) public view returns (uint256)
Returns nominal collateral ratio (view).
Input Parameters:
_troveId
uint256
ID of the trove
_price
uint256 (only for getCurrentICR
)
Current price of collateral
Return Values:
ICR
uint256
Collateral ratio (nominal or current)
function getCurrentICR(uint256 _troveId, uint256 _price) public view returns (uint256)
Input Parameters:
_troveId
uint256
ID of the trove
_price
uint256 (only for getCurrentICR
)
Current price of collateral
Return Values:
ICR
uint256
Collateral ratio (nominal or current)
function getTotalActiveCollateral() public view returns (uint256)
Sum of collateral in all non-liquidated/non-redeemed troves.
Return Values:
activeCollateral
uint256
Total collateral in active troves (excluding defaulted)
function getTotalActiveDebt() public view returns (uint256)
Calculates active debt with compounded interest since last update.
Return Values:
activeDebt
uint256
Total debt in active troves (including accrued interest)
function getPendingCollAndDebtRewards(
uint256 _troveId
) public view returns (uint256, uint256)
Computes unclaimed rewards from liquidations affecting the trove.
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
pendingCollateral
uint256
Pending collateral from redistributions
pendingDebt
uint256
Pending debt from redistributions
function getTroveNFT() view external returns (ITroveNFT)
Returns the address of the TroveNFT contract (used for ownership checks).
Return Values:
troveNFT
ITroveNFT
Interface of the TroveNFT contract
function hasPendingRewards(uint256 _troveId) public view returns (bool)
Checks if a trove has unclaimed redistribution rewards.
Input Parameters:
_troveId
uint256
ID of the trove
Return Values:
hasRewards
bool
true
if trove has pending rewards
function getBorrowingRate() public view returns (uint256)
Returns the borrowing fee rate (e.g., 0.5% as 5000000000000000
).
Return Values:
rate
uint256
Current borrowing rate (based on baseRate
)
function getBorrowingRateWithDecay() public view returns (uint256)
Estimates the borrowing rate if no new fees are charged.
Return Values:
rate
uint256
Borrowing rate after decay (simulated)
function getBorrowingFee(uint256 _debt) external view returns (uint256)
Calculates the fee to borrow _debt
.
Input Parameters:
_debt
uint256
Debt amount to calculate fee for
Return Values:
fee
uint256
Borrowing fee for _debt
at current rate
function getBorrowingFeeWithDecay(uint256 _debt) external view returns (uint256)
Estimates the borrowing fee after base rate decay.
Input Parameters:
_debt
uint256
Debt amount to calculate fee for
Return Values:
fee
uint256
Fee for _debt
at decayed rate
function calcDecayedBaseRate() external view returns (uint256)
Simulates the decay of baseRate
over time.
Return Values:
decayedRate
uint256
Base rate after decay
function claimableReward(address account) external view returns (uint256)
Aggregates pending rewards (debt + minting) for an account.
Input Parameters:
receiver
address
Address to receive rewards
Return Values:
amount
uint256
Total rewards claimed
function getCompositeDebt(uint256 _debt) external view returns (uint256)
Input Parameters:
_debt
uint256
Base debt amount
Return Values:
compositeDebt
uint256
Debt + gas compensation
netDebt
uint256
Debt - gas compensation
function getNetDebt(uint256 _debt) external view returns (uint256)
Input Parameters:
_debt
uint256
Base debt amount
Return Values:
compositeDebt
uint256
Debt + gas compensation
netDebt
uint256
Debt - gas compensation
function getCollGasCompensation(uint256 _entireColl) external view returns (uint256)
Input Parameters:
_entireColl
uint256
Total collateral in trove
Return Values:
compensation
uint256
Collateral reserved for gas
Structs and Enums
struct VolumeData {
uint32 amount;
uint32 week;
uint32 day;
}
struct EmissionId {
uint16 debt;
uint16 minting;
}
struct Trove {
uint256 debt;
uint256 coll;
uint256 stake;
Status status;
uint128 arrayIndex;
uint256 activeInterestIndex;
address frontEndId;
address referrerId;
}
struct RewardSnapshot {
uint256 collateral;
uint256 debt;
}
enum TroveManagerOperation {
open,
close,
adjust,
liquidate,
redeemCollateral
}
enum Status {
nonExistent,
active,
closedByOwner,
closedByLiquidation,
closedByRedemption
}
Events
Note: on the Oasis Sapphire blockchain all events are disabled for privacy preservation purposes
event TroveUpdated(
address indexed _borrower,
uint256 indexed _troveId,
uint256 _debt,
uint256 _coll,
uint256 _stake,
TroveManagerOperation _operation
)
event BaseRateUpdated(uint256 _baseRate)
event LastFeeOpTimeUpdated(uint256 _lastFeeOpTime)
event TotalStakesUpdated(uint256 _newTotalStakes)
event SystemSnapshotsUpdated(
uint256 _totalStakesSnapshot,
uint256 _totalCollateralSnapshot
)
event LTermsUpdated(uint256 _L_collateral, uint256 _L_debt)
event TroveSnapshotsUpdated(uint256 _L_collateral, uint256 _L_debt)
event TroveIndexUpdated(uint256 _troveId, uint256 _newIndex)
event CollateralSent(address _to, uint256 _amount)
event RewardClaimed(
address indexed account,
address indexed recipient,
uint256 claimed
)
event FrontEndInterestCollected(address indexed frontEndId, uint256 amount)
Last updated