OpenTermLoan

Functions

HUNDRED_PERCENT

The value that represents 100%, to be easily comparable with the loan rates.

    function HUNDRED_PERCENT()
        view
        returns (
            uint256
        );

Return Values:

IndexNameTypeInternal TypeDescription

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.

    function acceptLender()
        nonpayable;

acceptNewTerms

Accept the proposed terms and trigger refinance execution.

    function acceptNewTerms(
        address refinancer_,
        uint256 deadline_,
        bytes[] calls_
    )
        nonpayable
        returns (
            bytes32 refinanceCommitment_
        );

Parameters:

IndexNameTypeInternal TypeDescription

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:

IndexNameTypeInternal TypeDescription

0

refinanceCommitment_

bytes32

bytes32

The hash of the accepted refinance agreement.

borrower

The borrower of the loan, responsible for repayments.

    function borrower()
        view
        returns (
            address
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

address

address

calledPrincipal

The amount of principal yet to be returned to satisfy the loan call.

    function calledPrincipal()
        view
        returns (
            uint256
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint256

uint256

callPrincipal

The lender called the loan, giving the borrower a notice period within which to return principal and pro-rata interest.

    function callPrincipal(
        uint256 principalToReturn_
    )
        nonpayable
        returns (
            uint40 paymentDueDate_,
            uint40 defaultDate_
        );

Parameters:

IndexNameTypeInternal TypeDescription

0

principalToReturn_

uint256

uint256

The minimum amount of principal the borrower must return.

Return Values:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The new payment due date for returning the principal and pro-rate interest to the lender.

1

defaultDate_

uint40

uint40

The date the loan will be in default.

dateCalled

The timestamp of the date the loan was called.

    function dateCalled()
        view
        returns (
            uint40
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint40

uint40

dateFunded

The timestamp of the date the loan was funded.

    function dateFunded()
        view
        returns (
            uint40
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint40

uint40

dateImpaired

The timestamp of the date the loan was impaired.

    function dateImpaired()
        view
        returns (
            uint40
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint40

uint40

datePaid

The timestamp of the date the loan was last paid.

    function datePaid()
        view
        returns (
            uint40
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint40

uint40

defaultDate

The timestamp of the date the loan will be in default.

    function defaultDate()
        view
        returns (
            uint40 paymentDefaultDate_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

paymentDefaultDate_

uint40

uint40

delegateServiceFeeRate

The annualized delegate service fee rate.

    function delegateServiceFeeRate()
        view
        returns (
            uint64
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint64

uint64

factory

The address of the proxy factory.

    function factory()
        view
        returns (
            address factory_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

factory_

address

address

fund

Lend funds to the loan/borrower.

    function fund()
        nonpayable
        returns (
            uint256 fundsLent_,
            uint40 paymentDueDate_,
            uint40 defaultDate_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

fundsLent_

uint256

uint256

The amount funded.

1

paymentDueDate_

uint40

uint40

The due date of the first payment.

2

defaultDate_

uint40

uint40

The timestamp of the date the loan will be in default.

fundsAsset

The address of the fundsAsset funding the loan.

    function fundsAsset()
        view
        returns (
            address
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

address

address

getPaymentBreakdown

Get the breakdown of the total payment needed to satisfy the next payment installment.

    function getPaymentBreakdown(
        uint256 timestamp_
    )
        view
        returns (
            uint256 principal_,
            uint256 interest_,
            uint256 lateInterest_,
            uint256 delegateServiceFee_,
            uint256 platformServiceFee_
        );

Parameters:

IndexNameTypeInternal TypeDescription

0

timestamp_

uint256

uint256

The timestamp that corresponds to when the payment is to be made.

Return Values:

IndexNameTypeInternal TypeDescription

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

lateInterest_

uint256

uint256

The portion of the total amount that will go towards late interest fees.

3

delegateServiceFee_

uint256

uint256

The portion of the total amount that will go towards delegate service fees.

4

platformServiceFee_

uint256

uint256

The portion of the total amount that will go towards platform service fees.

globals

The Maple globals address

    function globals()
        view
        returns (
            address globals_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

globals_

address

address

gracePeriod

The amount of time the borrower has, after a payment is due, to make a payment before being in default.

    function gracePeriod()
        view
        returns (
            uint32
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint32

uint32

impair

Fast forward the payment due date to the current time. This enables the pool delegate to force a payment (or default).

    function impair()
        nonpayable
        returns (
            uint40 paymentDueDate_,
            uint40 defaultDate_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The new payment due date to result in the removal of the loan's impairment status.

1

defaultDate_

uint40

uint40

The timestamp of the date the loan will be in default.

implementation

The address of the implementation contract being proxied.

    function implementation()
        view
        returns (
            address implementation_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

implementation_

address

address

interestRate

The annualized interest rate (APR), in units of 1e18, (i.e. 1% is 0.01e18).

    function interestRate()
        view
        returns (
            uint64
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint64

uint64

isCalled

Whether the loan is called.

    function isCalled()
        view
        returns (
            bool isCalled_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

isCalled_

bool

bool

isImpaired

Whether the loan is impaired.

    function isImpaired()
        view
        returns (
            bool isImpaired_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

isImpaired_

bool

bool

isInDefault

Whether the loan is in default.

    function isInDefault()
        view
        returns (
            bool isInDefault_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

isInDefault_

bool

bool

lateFeeRate

The rate charged at late payments.

    function lateFeeRate()
        view
        returns (
            uint64
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint64

uint64

lateInterestPremiumRate

The premium over the regular interest rate applied when paying late.

    function lateInterestPremiumRate()
        view
        returns (
            uint64
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint64

uint64

lender

The lender of the Loan.

    function lender()
        view
        returns (
            address
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

address

address

makePayment

Make a payment to the loan.

    function makePayment(
        uint256 principalToReturn_
    )
        nonpayable
        returns (
            uint256 interest_,
            uint256 lateInterest_,
            uint256 delegateServiceFee_,
            uint256 platformServiceFee_
        );

Parameters:

IndexNameTypeInternal TypeDescription

0

principalToReturn_

uint256

uint256

The amount of principal to return, to the lender to reduce future interest payments.

Return Values:

IndexNameTypeInternal TypeDescription

0

interest_

uint256

uint256

The portion of the amount paying interest.

1

lateInterest_

uint256

uint256

The portion of the amount paying late interest.

2

delegateServiceFee_

uint256

uint256

The portion of the amount paying delegate service fees.

3

platformServiceFee_

uint256

uint256

The portion of the amount paying platform 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.

    function migrate(
        address migrator_,
        bytes arguments_
    )
        nonpayable;

Parameters:

IndexNameTypeInternal TypeDescription

0

migrator_

address

address

The address of a migrator contract.

1

arguments_

bytes

bytes

Some encoded arguments to use for the migration.

noticePeriod

The amount of time the borrower has, after the loan is called, to make a payment, paying back the called principal.

    function noticePeriod()
        view
        returns (
            uint32
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint32

uint32

paymentDueDate

The timestamp of the due date of the next payment.

    function paymentDueDate()
        view
        returns (
            uint40 paymentDueDate_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

paymentInterval

The specified time between loan payments.

    function paymentInterval()
        view
        returns (
            uint32
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint32

uint32

pendingBorrower

The address of the pending borrower.

    function pendingBorrower()
        view
        returns (
            address
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

address

address

pendingLender

The address of the pending lender.

    function pendingLender()
        view
        returns (
            address
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

address

address

platformServiceFeeRate

The annualized platform service fee rate.

    function platformServiceFeeRate()
        view
        returns (
            uint64
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint64

uint64

principal

The amount of principal owed (initially, the requested amount), which needs to be paid back.

    function principal()
        view
        returns (
            uint256
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

uint256

uint256

proposeNewTerms

Propose new terms for refinance.

    function proposeNewTerms(
        address refinancer_,
        uint256 deadline_,
        bytes[] calls_
    )
        nonpayable
        returns (
            bytes32 refinanceCommitment_
        );

Parameters:

IndexNameTypeInternal TypeDescription

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:

IndexNameTypeInternal TypeDescription

0

refinanceCommitment_

bytes32

bytes32

The hash of the proposed refinance agreement.

refinanceCommitment

The hash of the proposed refinance agreement.

    function refinanceCommitment()
        view
        returns (
            bytes32
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

bytes32

bytes32

rejectNewTerms

Nullify the current proposed terms.

    function rejectNewTerms(
        address refinancer_,
        uint256 deadline_,
        bytes[] calls_
    )
        nonpayable
        returns (
            bytes32 refinanceCommitment_
        );

Parameters:

IndexNameTypeInternal TypeDescription

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:

IndexNameTypeInternal TypeDescription

0

refinanceCommitment_

bytes32

bytes32

The hash of the rejected refinance agreement.

removeCall

Remove the loan's called status.

    function removeCall()
        nonpayable
        returns (
            uint40 paymentDueDate_,
            uint40 defaultDate_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The restored payment due date.

1

defaultDate_

uint40

uint40

The date the loan will be in default.

removeImpairment

Remove the loan impairment by restoring the original payment due date.

    function removeImpairment()
        nonpayable
        returns (
            uint40 paymentDueDate_,
            uint40 defaultDate_
        );

Return Values:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The restored payment due date.

1

defaultDate_

uint40

uint40

The timestamp of the date the loan will be in default.

repossess

Repossess collateral, and any funds, for a loan in default.

    function repossess(
        address destination_
    )
        nonpayable
        returns (
            uint256 fundsRepossessed_
        );

Parameters:

IndexNameTypeInternal TypeDescription

0

destination_

address

address

The address where the collateral and funds asset is to be sent, if any.

Return Values:

IndexNameTypeInternal TypeDescription

0

fundsRepossessed_

uint256

uint256

The amount of funds asset repossessed.

setImplementation

Modifies the proxy's implementation address.

    function setImplementation(
        address newImplementation_
    )
        nonpayable;

Parameters:

IndexNameTypeInternal TypeDescription

0

newImplementation_

address

address

The address of an implementation contract.

setPendingBorrower

Set the `pendingBorrower` to a new account.

    function setPendingBorrower(
        address pendingBorrower_
    )
        nonpayable;

Parameters:

IndexNameTypeInternal TypeDescription

0

pendingBorrower_

address

address

The address of the new pendingBorrower.

setPendingLender

Set the `pendingLender` to a new account.

    function setPendingLender(
        address pendingLender_
    )
        nonpayable;

Parameters:

IndexNameTypeInternal TypeDescription

0

pendingLender_

address

address

The address of the new pendingLender.

skim

Remove all available balance of a specified token. NOTE: Open Term Loans are not designed to hold custody of tokens, so this is designed as a safety feature.

    function skim(
        address token_,
        address destination_
    )
        nonpayable
        returns (
            uint256 skimmed_
        );

Parameters:

IndexNameTypeInternal TypeDescription

0

token_

address

address

The address of the token contract.

1

destination_

address

address

The recipient of the token.

Return Values:

IndexNameTypeInternal TypeDescription

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.

    function upgrade(
        uint256 toVersion_,
        bytes arguments_
    )
        nonpayable;

Parameters:

IndexNameTypeInternal TypeDescription

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.

    event BorrowerAccepted(
        address borrower_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

borrower_

address

address

The address of the new borrower.

CallRemoved

The lender reverted the action of the loan being called and the payment due date was restored to it's original value.

    event CallRemoved(
        uint40 paymentDueDate_,
        uint40 defaultDate_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The restored payment due date.

1

defaultDate_

uint40

uint40

The date the loan will be in default.

Funded

The loan was funded.

    event Funded(
        uint256 amount_,
        uint40 paymentDueDate_,
        uint40 defaultDate_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

amount_

uint256

uint256

The amount funded.

1

paymentDueDate_

uint40

uint40

The due date of the first payment.

2

defaultDate_

uint40

uint40

The date the loan will be in default.

Impaired

The 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).

    event Impaired(
        uint40 paymentDueDate_,
        uint40 defaultDate_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The new payment due date.

1

defaultDate_

uint40

uint40

The date the loan will be in default.

ImpairmentRemoved

The payment due date was restored to it's original value, reverting the action of loan impairment.

    event ImpairmentRemoved(
        uint40 paymentDueDate_,
        uint40 defaultDate_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

paymentDueDate_

uint40

uint40

The restored payment due date.

1

defaultDate_

uint40

uint40

The date the loan will be in default.

Initialized

Loan was initialized.

    event Initialized(
        address borrower_,
        address lender_,
        address fundsAsset_,
        uint256 principalRequested_,
        uint32[3] termDetails_,
        uint64[4] rates_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

borrower_

address

address

The address of the borrower.

1

lender_

address

address

The address of the lender.

2

fundsAsset_

address

address

The address of the lent asset.

3

principalRequested_

uint256

uint256

The amount of principal requested.

4

termDetails_

uint32[3]

uint32[3]

Array of loan parameters: [0]: gracePeriod, [1]: noticePeriod, [2]: paymentInterval

5

rates_

uint64[4]

uint64[4]

Array of rate parameters: [0]: delegateServiceFeeRate, [1]: interestRate, [2]: lateFeeRate, [3]: lateInterestPremiumRate

LenderAccepted

Lender was accepted, and set to a new account.

    event LenderAccepted(
        address lender_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

lender_

address

address

The address of the new lender.

NewTermsAccepted

The terms of the refinance proposal were accepted.

    event NewTermsAccepted(
        bytes32 refinanceCommitment_,
        address refinancer_,
        uint256 deadline_,
        bytes[] calls_
    );

Parameters:

IndexNameTypeInternal TypeDescription

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.

    event NewTermsProposed(
        bytes32 refinanceCommitment_,
        address refinancer_,
        uint256 deadline_,
        bytes[] calls_
    );

Parameters:

IndexNameTypeInternal TypeDescription

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.

    event NewTermsRejected(
        bytes32 refinanceCommitment_,
        address refinancer_,
        uint256 deadline_,
        bytes[] calls_
    );

Parameters:

IndexNameTypeInternal TypeDescription

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.

    event PaymentMade(
        address lender_,
        uint256 principalPaid_,
        uint256 interestPaid_,
        uint256 lateInterestPaid_,
        uint256 delegateServiceFee_,
        uint256 platformServiceFee_,
        uint40 paymentDueDate_,
        uint40 defaultDate_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

lender_

address

address

The address of the lender the payment was made to.

1

principalPaid_

uint256

uint256

The portion of the total amount that went towards paying down principal.

2

interestPaid_

uint256

uint256

The portion of the total amount that went towards interest.

3

lateInterestPaid_

uint256

uint256

The portion of the total amount that went towards late interest.

4

delegateServiceFee_

uint256

uint256

The portion of the total amount that went towards delegate service fees.

5

platformServiceFee_

uint256

uint256

The portion of the total amount that went towards platform service fee.

6

paymentDueDate_

uint40

uint40

The new payment due date.

7

defaultDate_

uint40

uint40

The date the loan will be in default.

PendingBorrowerSet

Pending borrower was set.

    event PendingBorrowerSet(
        address pendingBorrower_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

pendingBorrower_

address

address

Address that can accept the borrower role.

PendingLenderSet

Pending lender was set.

    event PendingLenderSet(
        address pendingLender_
    );

Parameters:

IndexNameTypeInternal TypeDescription

0

pendingLender_

address

address

The address that can accept the lender role.

PrincipalCalled

The lender called the loan, giving the borrower a notice period within which to return principal and pro-rata interest.