FixedTermLoan
MapleLoan implements a primitive loan with additional functionality, and is intended to be proxied.
\
Functions
HUNDRED_PERCENT
HUNDRED_PERCENT
The value that represents 100%, to be easily comparable with the loan rates.
Return Values:
0
uint256
uint256
\
acceptBorrower
acceptBorrower
Accept the borrower role, must be called by pendingBorrower.
\
acceptLender
acceptLender
Accept the lender role, must be called by pendingLender.
\
acceptNewTerms
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
borrower
The borrower of the loan, responsible for repayments.
Return Values:
0
borrower_
address
address
\
closeLoan
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
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
collateral
The amount of collateral posted against outstanding (drawn down) principal.
Return Values:
0
collateral_
uint256
uint256
\
collateralAsset
collateralAsset
The address of the asset deposited by the borrower as collateral, if needed.
Return Values:
0
collateralAsset_
address
address
\
collateralRequired
collateralRequired
The amount of collateral required if all of the principal required is drawn down.
Return Values:
0
collateralRequired_
uint256
uint256
\
drawableFunds
drawableFunds
The amount of funds that have yet to be drawn down by the borrower.
Return Values:
0
drawableFunds_
uint256
uint256
\
drawdownFunds
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
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
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
factory
The address of the proxy factory.
Return Values:
0
factory_
address
address
\
feeManager
feeManager
The address of the contract that handles payments of fees on behalf of the loan.
Return Values:
0
feeManager_
address
address
\
fundLoan
fundLoan
Lend funds to the loan/borrower.
Return Values:
0
fundsLent_
uint256
uint256
The amount funded.
\
fundsAsset
fundsAsset
The asset deposited by the lender to fund the loan.
Return Values:
0
fundsAsset_
address
address
\
getAdditionalCollateralRequiredFor
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
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
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
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
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
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
globals
The Maple globals address
Return Values:
0
globals_
address
address
\
governor
governor
The address of the Maple Governor.
Return Values:
0
governor_
address
address
\
gracePeriod
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
impairLoan
Fast forward the next payment due date to the current time. This enables the pool delegate to force a payment (or default).
\
implementation
implementation
The address of the implementation contract being proxied.
Return Values:
0
implementation_
address
address
\
interestRate
interestRate
The annualized interest rate (APR), in units of 1e18, (i.e. 1% is 0.01e18).
Return Values:
0
interestRate_
uint256
uint256
\
isImpaired
isImpaired
Return if the loan has been impaired.
Return Values:
0
isImpaired_
bool
bool
Is the loan impaired or not.
\
lateFeeRate
lateFeeRate
The rate charged at late payments.
Return Values:
0
lateFeeRate_
uint256
uint256
\
lateInterestPremiumRate
lateInterestPremiumRate
The premium over the regular interest rate applied when paying late.
Return Values:
0
lateInterestPremiumRate_
uint256
uint256
\
lender
lender
The lender of the Loan.
Return Values:
0
lender_
address
address
\
makePayment
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
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
nextPaymentDueDate
The timestamp due date of the next payment.
Return Values:
0
nextPaymentDueDate_
uint256
uint256
\
originalNextPaymentDueDate
originalNextPaymentDueDate
The saved original payment due date from a loan impairment.
Return Values:
0
originalNextPaymentDueDate_
uint256
uint256
\
paymentInterval
paymentInterval
The specified time between loan payments.
Return Values:
0
paymentInterval_
uint256
uint256
\
paymentsRemaining
paymentsRemaining
The number of payment installments remaining for the loan.
Return Values:
0
paymentsRemaining_
uint256
uint256
\
pendingBorrower
pendingBorrower
The address of the pending borrower.
Return Values:
0
pendingBorrower_
address
address
\
pendingLender
pendingLender
The address of the pending lender.
Return Values:
0
pendingLender_
address
address
\
postCollateral
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
principal
The amount of principal owed (initially, the requested amount), which needs to be paid back.
Return Values:
0
principal_
uint256
uint256
\
principalRequested
principalRequested
The initial principal amount requested by the borrower.
Return Values:
0
principalRequested_
uint256
uint256
\
proposeNewTerms
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
refinanceCommitment
The hash of the proposed refinance agreement.
Return Values:
0
refinanceCommitment_
bytes32
bytes32
\
refinanceInterest
refinanceInterest
Amount of unpaid interest that has accrued before a refinance was accepted.
Return Values:
0
refinanceInterest_
uint256
uint256
\
rejectNewTerms
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
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
removeLoanImpairment
Remove the loan impairment by restoring the original payment due date.
\
repossess
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
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
setImplementation
Modifies the proxy's implementation address.
Parameters:
0
newImplementation_
address
address
The address of an implementation contract.
\
setPendingBorrower
setPendingBorrower
Set the pendingBorrower to a new account.
Parameters:
0
pendingBorrower_
address
address
The address of the new pendingBorrower.
\
setPendingLender
setPendingLender
Set the pendingLender to a new account.
Parameters:
0
pendingLender_
address
address
The address of the new pendingLender.
\
skim
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
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
BorrowerAccepted
Borrower was accepted, and set to a new account.
Parameters:
0
borrower_
address
address
The address of the new borrower.
\
CollateralPosted
CollateralPosted
Collateral was posted.
Parameters:
0
amount_
uint256
uint256
The amount of collateral posted.
\
CollateralRemoved
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
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
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
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
FundsReturned
Funds were returned.
Parameters:
0
amount_
uint256
uint256
The amount of funds returned.
\
ImpairmentRemoved
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
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
LenderAccepted
Lender was accepted, and set to a new account.
Parameters:
0
lender_
address
address
The address of the new lender.
\
LoanClosed
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
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
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
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
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
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
PendingBorrowerSet
Pending borrower was set.
Parameters:
0
pendingBorrower_
address
address
Address that can accept the borrower role.
\
PendingLenderSet
PendingLenderSet
Pending lender was set.
Parameters:
0
pendingLender_
address
address
Address that can accept the lender role.
\
Repossessed
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
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
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