FixedTermLoan
MapleLoan implements a primitive loan with additional functionality, and is intended to be proxied.
Functions
HUNDRED_PERCENT
The value that represents 100%, to be easily comparable with the loan rates.
function HUNDRED_PERCENT()
view
returns (
uint256
);Return Values:
0
uint256
uint256
acceptBorrower
Accept the borrower role, must be called by pendingBorrower.
function acceptBorrower()
nonpayable;acceptLender
Accept the lender role, must be called by pendingLender.
acceptNewTerms
Accept the proposed terms ans trigger refinance execution
Parameters:
0
refinancer_
address
address
The address of the refinancer contract.
1
deadline_
uint256
uint256
The deadline for accepting the new terms.
2
calls_
bytes[]
bytes[]
The encoded arguments to be passed to refinancer.
Return Values:
0
refinanceCommitment_
bytes32
bytes32
The hash of the accepted refinance agreement.
borrower
The borrower of the loan, responsible for repayments.
Return Values:
0
borrower_
address
address
closeLoan
Repay all principal and interest and close a loan. FUNDS SHOULD NOT BE TRANSFERRED TO THIS CONTRACT NON-ATOMICALLY. IF THEY ARE, THE BALANCE MAY BE STOLEN USING `skim`.
Parameters:
0
amount_
uint256
uint256
An amount to pull from the caller, if any.
Return Values:
0
principal_
uint256
uint256
The portion of the amount paying back principal.
1
interest_
uint256
uint256
The portion of the amount paying interest.
2
fees_
uint256
uint256
The portion of the amount paying service fees.
closingRate
The fee rate (applied to principal) to close the loan. This value should be configured so that it is less expensive to close a loan with more than one payment remaining, but more expensive to close it if on the last payment.
Return Values:
0
closingRate_
uint256
uint256
collateral
The amount of collateral posted against outstanding (drawn down) principal.
Return Values:
0
collateral_
uint256
uint256
collateralAsset
The address of the asset deposited by the borrower as collateral, if needed.
Return Values:
0
collateralAsset_
address
address
collateralRequired
The amount of collateral required if all of the principal required is drawn down.
Return Values:
0
collateralRequired_
uint256
uint256
drawableFunds
The amount of funds that have yet to be drawn down by the borrower.
Return Values:
0
drawableFunds_
uint256
uint256
drawdownFunds
Draw down funds from the loan.
Parameters:
0
amount_
uint256
uint256
The amount to draw down.
1
destination_
address
address
The address to send the funds.
Return Values:
0
collateralPosted_
uint256
uint256
The amount of additional collateral posted, if any.
endingPrincipal
The portion of principal to not be paid down as part of payment installments, which would need to be paid back upon final payment. If endingPrincipal = principal, loan is interest-only.
Return Values:
0
endingPrincipal_
uint256
uint256
excessCollateral
Returns the excess collateral that can be removed.
Return Values:
0
excessCollateral_
uint256
uint256
The excess collateral that can be removed, if any.
factory
The address of the proxy factory.
Return Values:
0
factory_
address
address
feeManager
The address of the contract that handles payments of fees on behalf of the loan.
Return Values:
0
feeManager_
address
address
fundLoan
Lend funds to the loan/borrower.
Return Values:
0
fundsLent_
uint256
uint256
The amount funded.
fundsAsset
The asset deposited by the lender to fund the loan.
Return Values:
0
fundsAsset_
address
address
getAdditionalCollateralRequiredFor
Get the additional collateral to be posted to drawdown some amount.
Parameters:
0
drawdown_
uint256
uint256
The amount desired to be drawn down.
Return Values:
0
collateral_
uint256
uint256
getClosingPaymentBreakdown
Get the breakdown of the total payment needed to satisfy an early repayment to close the loan.
Return Values:
0
principal_
uint256
uint256
The portion of the total amount that will go towards principal.
1
interest_
uint256
uint256
The portion of the total amount that will go towards interest fees.
2
fees_
uint256
uint256
The portion of the total amount that will go towards fees.
getNextPaymentBreakdown
Get the breakdown of the total payment needed to satisfy the next payment installment.
Return Values:
0
principal_
uint256
uint256
The portion of the total amount that will go towards principal.
1
interest_
uint256
uint256
The portion of the total amount that will go towards interest fees.
2
fees_
uint256
uint256
The portion of the total amount that will go towards paying administrative fees.
getNextPaymentDetailedBreakdown
Get the detailed breakdown of the total payment needed to satisfy the next payment installment.
Return Values:
0
principal_
uint256
uint256
The portion of the total amount that will go towards principal.
1
interest_
uint256[3]
uint256[3]
The portion of the total amount that will go towards interest fees. [0] Interest from the payment interval. [1] Late interest. [2] Refinance interest.
2
fees_
uint256[2]
uint256[2]
The portion of the total amount that will go towards paying administrative fees. [0] Delegate fees. [1] Platform fees.
getRefinanceInterest
Get the extra interest that will be charged according to loan terms before refinance, based on a given timestamp.
Parameters:
0
timestamp_
uint256
uint256
The timestamp when the new terms will be accepted.
Return Values:
0
proRataInterest_
uint256
uint256
The interest portion to be added in the next payment.
getUnaccountedAmount
Get the amount on an asset that in not accounted for by the accounting variables (and thus can be skimmed).
Parameters:
0
asset_
address
address
The address of a asset contract.
Return Values:
0
unaccountedAmount_
uint256
uint256
The amount that is not accounted for.
globals
The Maple globals address
Return Values:
0
globals_
address
address
governor
The address of the Maple Governor.
Return Values:
0
governor_
address
address
gracePeriod
The amount of time the borrower has, after a payment is due, to make a payment before being in default.
Return Values:
0
gracePeriod_
uint256
uint256
impairLoan
Fast forward the next payment due date to the current time. This enables the pool delegate to force a payment (or default).
implementation
The address of the implementation contract being proxied.
Return Values:
0
implementation_
address
address
interestRate
The annualized interest rate (APR), in units of 1e18, (i.e. 1% is 0.01e18).
Return Values:
0
interestRate_
uint256
uint256
isImpaired
Return if the loan has been impaired.
Return Values:
0
isImpaired_
bool
bool
Is the loan impaired or not.
lateFeeRate
The rate charged at late payments.
Return Values:
0
lateFeeRate_
uint256
uint256
lateInterestPremiumRate
The premium over the regular interest rate applied when paying late.
Return Values:
0
lateInterestPremiumRate_
uint256
uint256
lender
The lender of the Loan.
Return Values:
0
lender_
address
address
makePayment
Make a payment to the loan. FUNDS SHOULD NOT BE TRANSFERRED TO THIS CONTRACT NON-ATOMICALLY. IF THEY ARE, THE BALANCE MAY BE STOLEN USING `skim`.
Parameters:
0
amount_
uint256
uint256
An amount to pull from the caller, if any.
Return Values:
0
principal_
uint256
uint256
The portion of the amount paying back principal.
1
interest_
uint256
uint256
The portion of the amount paying interest fees.
2
fees_
uint256
uint256
The portion of the amount paying service fees.
migrate
Modifies the proxy's storage by delegate-calling a migrator contract with some arguments. Access control logic critical since caller can force a selfdestruct via a malicious `migrator_` which is delegatecalled.
Parameters:
0
migrator_
address
address
The address of a migrator contract.
1
arguments_
bytes
bytes
Some encoded arguments to use for the migration.
nextPaymentDueDate
The timestamp due date of the next payment.
Return Values:
0
nextPaymentDueDate_
uint256
uint256
originalNextPaymentDueDate
The saved original payment due date from a loan impairment.
Return Values:
0
originalNextPaymentDueDate_
uint256
uint256
paymentInterval
The specified time between loan payments.
Return Values:
0
paymentInterval_
uint256
uint256
paymentsRemaining
The number of payment installments remaining for the loan.
Return Values:
0
paymentsRemaining_
uint256
uint256
pendingBorrower
The address of the pending borrower.
Return Values:
0
pendingBorrower_
address
address
pendingLender
The address of the pending lender.
Return Values:
0
pendingLender_
address
address
postCollateral
Post collateral to the loan. FUNDS SHOULD NOT BE TRANSFERRED TO THIS CONTRACT NON-ATOMICALLY. IF THEY ARE, THE BALANCE MAY BE STOLEN USING `skim`.
Parameters:
0
amount_
uint256
uint256
An amount to pull from the caller, if any.
Return Values:
0
collateralPosted_
uint256
uint256
The amount posted.
principal
The amount of principal owed (initially, the requested amount), which needs to be paid back.
Return Values:
0
principal_
uint256
uint256
principalRequested
The initial principal amount requested by the borrower.
Return Values:
0
principalRequested_
uint256
uint256
proposeNewTerms
Propose new terms for refinance.
Parameters:
0
refinancer_
address
address
The address of the refinancer contract.
1
deadline_
uint256
uint256
The deadline for accepting the new terms.
2
calls_
bytes[]
bytes[]
The encoded arguments to be passed to refinancer.
Return Values:
0
refinanceCommitment_
bytes32
bytes32
The hash of the proposed refinance agreement.
refinanceCommitment
The hash of the proposed refinance agreement.
Return Values:
0
refinanceCommitment_
bytes32
bytes32
refinanceInterest
Amount of unpaid interest that has accrued before a refinance was accepted.
Return Values:
0
refinanceInterest_
uint256
uint256
rejectNewTerms
Nullify the current proposed terms.
Parameters:
0
refinancer_
address
address
The address of the refinancer contract.
1
deadline_
uint256
uint256
The deadline for accepting the new terms.
2
calls_
bytes[]
bytes[]
The encoded arguments to be passed to refinancer.
Return Values:
0
refinanceCommitment_
bytes32
bytes32
The hash of the rejected refinance agreement.
removeCollateral
Remove collateral from the loan (opposite of posting collateral).
Parameters:
0
amount_
uint256
uint256
The amount removed.
1
destination_
address
address
The destination to send the removed collateral.
removeLoanImpairment
Remove the loan impairment by restoring the original payment due date.
repossess
Repossess collateral, and any funds, for a loan in default.
Parameters:
0
destination_
address
address
The address where the collateral and funds asset is to be sent, if any.
Return Values:
0
collateralRepossessed_
uint256
uint256
The amount of collateral asset repossessed.
1
fundsRepossessed_
uint256
uint256
The amount of funds asset repossessed.
returnFunds
Return funds to the loan (opposite of drawing down). FUNDS SHOULD NOT BE TRANSFERRED TO THIS CONTRACT NON-ATOMICALLY. IF THEY ARE, THE BALANCE MAY BE STOLEN USING `skim`.
Parameters:
0
amount_
uint256
uint256
An amount to pull from the caller, if any.
Return Values:
0
fundsReturned_
uint256
uint256
The amount returned.
setImplementation
Modifies the proxy's implementation address.
Parameters:
0
newImplementation_
address
address
The address of an implementation contract.
setPendingBorrower
Set the pendingBorrower to a new account.
Parameters:
0
pendingBorrower_
address
address
The address of the new pendingBorrower.
setPendingLender
Set the pendingLender to a new account.
Parameters:
0
pendingLender_
address
address
The address of the new pendingLender.
skim
Remove all token that is not accounted for by the loan (i.e. not `collateral` or `drawableFunds`).
Parameters:
0
token_
address
address
The address of the token contract.
1
destination_
address
address
The recipient of the token.
Return Values:
0
skimmed_
uint256
uint256
The amount of token removed from the loan.
upgrade
Upgrades a contract implementation to a specific version. Access control logic critical since caller can force a selfdestruct via a malicious `migrator_` which is delegatecalled.
Parameters:
0
toVersion_
uint256
uint256
The version to upgrade to.
1
arguments_
bytes
bytes
Some encoded arguments to use for the upgrade.
Events
BorrowerAccepted
Borrower was accepted, and set to a new account.
Parameters:
0
borrower_
address
address
The address of the new borrower.
CollateralPosted
Collateral was posted.
Parameters:
0
amount_
uint256
uint256
The amount of collateral posted.
CollateralRemoved
Collateral was removed.
Parameters:
0
amount_
uint256
uint256
The amount of collateral removed.
1
destination_
address
address
The recipient of the collateral removed.
Funded
The loan was funded.
Parameters:
0
lender_
address
address
The address of the lender.
1
amount_
uint256
uint256
The amount funded.
2
nextPaymentDueDate_
uint256
uint256
The due date of the next payment.
FundsClaimed
Funds were claimed.
Parameters:
0
amount_
uint256
uint256
The amount of funds claimed.
1
destination_
address
address
The recipient of the funds claimed.
FundsDrawnDown
Funds were drawn.
Parameters:
0
amount_
uint256
uint256
The amount of funds drawn.
1
destination_
address
address
The recipient of the funds drawn down.
FundsReturned
Funds were returned.
Parameters:
0
amount_
uint256
uint256
The amount of funds returned.
ImpairmentRemoved
The loan impairment was explicitly removed (i.e. not the result of a payment or new terms acceptance).
Parameters:
0
nextPaymentDueDate_
uint256
uint256
The new next payment due date.
Initialized
Loan was initialized.
Parameters:
0
borrower_
address
address
The address of the borrower.
1
lender_
address
address
The address of the lender.
2
feeManager_
address
address
The address of the entity responsible for calculating fees.
3
assets_
address[2]
address[2]
Array of asset addresses. [0]: collateralAsset, [1]: fundsAsset.
4
termDetails_
uint256[3]
uint256[3]
Array of loan parameters: [0]: gracePeriod, [1]: paymentInterval, [2]: payments,
5
amounts_
uint256[3]
uint256[3]
Requested amounts: [0]: collateralRequired, [1]: principalRequested, [2]: endingPrincipal.
6
rates_
uint256[4]
uint256[4]
Fee parameters: [0]: interestRate, [1]: closingFeeRate, [2]: lateFeeRate, [3]: lateInterestPremiumRate
7
fees_
uint256[2]
uint256[2]
Array of fees: [0]: delegateOriginationFee, [1]: delegateServiceFee
LenderAccepted
Lender was accepted, and set to a new account.
Parameters:
0
lender_
address
address
The address of the new lender.
LoanClosed
Loan was repaid early and closed.
Parameters:
0
principalPaid_
uint256
uint256
The portion of the total amount that went towards principal.
1
interestPaid_
uint256
uint256
The portion of the total amount that went towards interest.
2
feesPaid_
uint256
uint256
The portion of the total amount that went towards fees.
LoanImpaired
The next payment due date was fast forwarded to the current time, activating the grace period. This is emitted when the pool delegate wants to force a payment (or default).
Parameters:
0
nextPaymentDueDate_
uint256
uint256
The new next payment due date.
NewTermsAccepted
The terms of the refinance proposal were accepted.
Parameters:
0
refinanceCommitment_
bytes32
bytes32
The hash of the refinancer, deadline, and calls proposed.
1
refinancer_
address
address
The address that will execute the refinance.
2
deadline_
uint256
uint256
The deadline for accepting the new terms.
3
calls_
bytes[]
bytes[]
The individual calls for the refinancer contract.
NewTermsProposed
A refinance was proposed.
Parameters:
0
refinanceCommitment_
bytes32
bytes32
The hash of the refinancer, deadline, and calls proposed.
1
refinancer_
address
address
The address that will execute the refinance.
2
deadline_
uint256
uint256
The deadline for accepting the new terms.
3
calls_
bytes[]
bytes[]
The individual calls for the refinancer contract.
NewTermsRejected
The terms of the refinance proposal were rejected.
Parameters:
0
refinanceCommitment_
bytes32
bytes32
The hash of the refinancer, deadline, and calls proposed.
1
refinancer_
address
address
The address that will execute the refinance.
2
deadline_
uint256
uint256
The deadline for accepting the new terms.
3
calls_
bytes[]
bytes[]
The individual calls for the refinancer contract.
PaymentMade
Payments were made.
Parameters:
0
principalPaid_
uint256
uint256
The portion of the total amount that went towards principal.
1
interestPaid_
uint256
uint256
The portion of the total amount that went towards interest.
2
fees_
uint256
uint256
The portion of the total amount that went towards fees.
PendingBorrowerSet
Pending borrower was set.
Parameters:
0
pendingBorrower_
address
address
Address that can accept the borrower role.
PendingLenderSet
Pending lender was set.
Parameters:
0
pendingLender_
address
address
Address that can accept the lender role.
Repossessed
The loan was in default and funds and collateral was repossessed by the lender.
Parameters:
0
collateralRepossessed_
uint256
uint256
The amount of collateral asset repossessed.
1
fundsRepossessed_
uint256
uint256
The amount of funds asset repossessed.
2
destination_
address
address
The recipient of the collateral and funds, if any.
Skimmed
Some token (neither fundsAsset nor collateralAsset) was removed from the loan.
Parameters:
0
token_
address
address
The address of the token contract.
1
amount_
uint256
uint256
The amount of token remove from the loan.
2
destination_
address
address
The recipient of the token.
Upgraded
The instance was upgraded.
Parameters:
0
toVersion_
uint256
uint256
The new version of the loan.
1
arguments_
bytes
bytes
The upgrade arguments, if any.
Last updated
Was this helpful?