TermRepoServicer.sol

This contract belongs to the Term Servicer group of contracts and is specific to a Term Repo deployment. This contract maintains records, collects and disburse repurchase payments.

TermRepoServicer

This contract maintains records, collects and disburse repurchase payments

This contract belongs to the Term Servicer group of contracts and is specific to a Term Repo deployment

YEAR_SECONDS

uint256 YEAR_SECONDS

ADMIN_ROLE

bytes32 ADMIN_ROLE

AUCTION_LOCKER

bytes32 AUCTION_LOCKER

AUCTIONEER

bytes32 AUCTIONEER

COLLATERAL_MANAGER

bytes32 COLLATERAL_MANAGER

DEVOPS_ROLE

bytes32 DEVOPS_ROLE

SPECIALIST_ROLE

bytes32 SPECIALIST_ROLE

ROLLOVER_MANAGER

bytes32 ROLLOVER_MANAGER

ROLLOVER_TARGET_AUCTIONEER_ROLE

bytes32 ROLLOVER_TARGET_AUCTIONEER_ROLE

INITIALIZER_ROLE

bytes32 INITIALIZER_ROLE

termRepoId

bytes32 termRepoId

totalOutstandingRepurchaseExposure

uint256 totalOutstandingRepurchaseExposure

totalRepurchaseCollected

uint256 totalRepurchaseCollected

maturityTimestamp

uint256 maturityTimestamp

endOfRepurchaseWindow

uint256 endOfRepurchaseWindow

redemptionTimestamp

uint256 redemptionTimestamp

block timestamp at which term repo tokens can be redeemed

servicingFee

uint256 servicingFee

percentage share of bid amounts charged to bidder

shortfallHaircutMantissa

uint256 shortfallHaircutMantissa

proportion of redemption value for redemption

purchaseToken

address purchaseToken

termRepoCollateralManager

contract ITermRepoCollateralManager termRepoCollateralManager

termRepoRolloverManager

contract ITermRepoRolloverManager termRepoRolloverManager

termRepoLocker

contract ITermRepoLocker termRepoLocker

termRepoToken

contract ITermRepoToken termRepoToken

termController

contract ITermController termController

emitter

contract ITermEventEmitter emitter

repurchaseExposureLedger

mapping(address => uint256) repurchaseExposureLedger

termContractPaired

bool termContractPaired

notTermContractPaired

modifier notTermContractPaired()

constructor

constructor() public

initialize

function initialize(string termRepoId_, uint256 maturityTimestamp_, uint256 repurchaseWindow_, uint256 redemptionBuffer_, uint256 servicingFee_, address purchaseToken_, contract ITermController termController_, contract ITermEventEmitter emitter_, address termInitializer_) external

pairTermContracts

function pairTermContracts(address termRepoLocker_, address termRepoCollateralManager_, address termRepoToken_, address termAuctionOfferLocker_, address termAuction_, address rolloverManager_, address devopsMultisig_, address adminWallet_, string version_) external

submitRepurchasePayment

function submitRepurchasePayment(uint256 amount) external

The max repurchase amount is the repurchase balance less any amounts earmarked for rollover

Parameters

burnCollapseExposure

function burnCollapseExposure(uint256 amountToBurn) external

Parameters

getBorrowerRepurchaseObligation

function getBorrowerRepurchaseObligation(address borrower) external view returns (uint256)

Parameters

Return Values

mintOpenExposure

function mintOpenExposure(uint256 amount, uint256[] collateralAmounts) external

This method allows SPECIALIST_ROLE to open repurchase price exposure against a TermRepoToken mint of corresponding value outside of a Term Auction to create new supply

Parameters

redeemTermRepoTokens

function redeemTermRepoTokens(address redeemer, uint256 amountToRedeem) external

Parameters

isTermRepoBalanced

function isTermRepoBalanced() external view returns (bool)

Return Values

lockOfferAmount

function lockOfferAmount(address offeror, uint256 amount) external

Parameters

unlockOfferAmount

function unlockOfferAmount(address offeror, uint256 amount) external

Parameters

fulfillOffer

function fulfillOffer(address offeror, uint256 purchasePrice, uint256 repurchasePrice, bytes32 offerId) external

Parameters

fulfillBid

function fulfillBid(address bidder, uint256 purchasePrice, uint256 repurchasePrice, address[] collateralTokens, uint256[] collateralAmounts, uint256 dayCountFractionMantissa) external

Parameters

approveRolloverAuction

function approveRolloverAuction(address termAuction) external

Parameters

openExposureOnRolloverNew

function openExposureOnRolloverNew(address borrower, uint256 purchasePrice, uint256 repurchasePrice, address previousTermRepoLocker, uint256 dayCountFractionMantissa) external returns (uint256)

Parameters

Return Values

closeExposureOnRolloverExisting

function closeExposureOnRolloverExisting(address borrower, uint256 rolloverSettlementAmount) external returns (uint256)

Parameters

Return Values

liquidatorCoverExposure

function liquidatorCoverExposure(address borrower, address liquidator, uint256 amountToCover) external

Parameters

liquidatorCoverExposureWithRepoToken

function liquidatorCoverExposureWithRepoToken(address borrower, address liquidator, uint256 amountOfRepoToken) external returns (uint256)

Parameters

Return Values

grantMintExposureAccess

function grantMintExposureAccess(address authedUser) external

Parameters

reopenToNewAuction

function reopenToNewAuction(struct TermAuctionGroup termAuctionGroup) external

Parameters

_isTermRepoBalanced

function _isTermRepoBalanced() internal view returns (bool)

Truncation is by 4 decimal places due to the assumption that number of participants < 10000

_getMaxRepaymentAroundRollover

function _getMaxRepaymentAroundRollover(address borrower) internal view returns (uint256)

_repay

function _repay(address _borrower, address repayer_, uint256 amount_) internal

_parRedemption

function _parRedemption(address redeemer_, uint256 amount_) internal

_proRataRedemption

function _proRataRedemption(address redeemer_, uint256 amount_) internal

_authorizeUpgrade

function _authorizeUpgrade(address impl) internal

required override by the OpenZeppelin UUPS module

Parameters

Last updated