LM_PC_RecurringPayments_v1.sol

Git Source

Inherits: ILM_PC_RecurringPayments_v1, ERC20PaymentClientBase_v1

Author: Inverter Network

Facilitates the creation, management, and execution of scheduled recurring payments within the Inverter Network, allowing for systematic and timed financial commitments or subscriptions.

Uses epochs to define the period of recurring payments and supports operations such as adding, removing, and triggering payments based on time cycles. Integrates with {ERC20PaymentClientBase_v1} for handling actual payment transactions. Note that it will use the token type stored in the FundingManager for the payments.

State Variables

_SENTINEL

Marks the beginning of the list.

uint internal constant _SENTINEL = type(uint).max;

_nextId

Value for what the next id will be.

uint private _nextId;

epochLength

length of an epoch.

uint private epochLength;

_paymentRegistry

Registry mapping ids to RecurringPayment structs id => RecurringPayment.

_paymentList

List of RecurringPayment id's.

__gap

Storage gap for future upgrades.

Functions

supportsInterface

See {IERC165-supportsInterface}.

validId

Checks if the given id is valid.

Parameters

Name
Type
Description

recurringPaymentId

uint256

The id of the RecurringPayment to check.

validStartEpoch

Checks if the given startEpoch is valid.

Parameters

Name
Type
Description

startEpoch

uint256

The startEpoch of the RecurringPayment to check.

startIdBeforeEndId

Checks if the startId is before the endId.

Parameters

Name
Type
Description

startId

uint256

The startId of the RecurringPayment to check.

endId

uint256

The endId of the RecurringPayment to check.

init

getEpochLength

Returns the length of an epoch.

Returns

Name
Type
Description

<none>

uint256

epochLength Length of an epoch in a uint timestamp.

getRecurringPaymentInformation

Returns the RecurringPayment instance with id id.

Parameters

Name
Type
Description

id

uint256

The id of the RecurringPayment to return.

Returns

Name
Type
Description

<none>

RecurringPayment

RecurringPayment with id id.

listRecurringPaymentIds

Returns total list of RecurringPayment ids.

List is in ascending order.

Returns

Name
Type
Description

<none>

uint256[]

List of RecurringPayment ids.

getPreviousPaymentId

Returns the id of previous RecurringPayment.

Parameters

Name
Type
Description

id

uint256

The id of the RecurringPayment to return.

Returns

Name
Type
Description

<none>

uint256

prevId The id of previous RecurringPayment.

isExistingRecurringPaymentId

Returns whether RecurringPayment with id id exists.

Parameters

Name
Type
Description

id

uint256

The id of the RecurringPayment to test.

Returns

Name
Type
Description

<none>

bool

True if RecurringPayment with id id exists, false otherwise.

getEpochFromTimestamp

Calculates the epoch from a given uint timestamp.

Calculation is: timestamp divided by epochLength.

Parameters

Name
Type
Description

timestamp

uint256

A timestamp in a uint format.

Returns

Name
Type
Description

epoch

uint256

Epoch in which timestamp belongs to.

getCurrentEpoch

Calculates the current epoch.

Calculation is: block.timestamp divided by epochLength.

Returns

Name
Type
Description

epoch

uint256

Epoch in which current timestamp (block.timestamp) belongs to.

getFutureEpoch

Calculates a future epoch x epochs from now.

Calculation is: current epoch + X epochs in the future = futureEpoch.

Parameters

Name
Type
Description

xEpochsInTheFuture

uint256

How many epochs from the current epoch.

Returns

Name
Type
Description

futureEpoch

uint256

Epoch in the future.

addRecurringPayment

Adds a recurring payment to the manager.

a new id is created for each Payment.

Parameters

Name
Type
Description

amount

uint256

Amount of tokens send to the recipient address.

startEpoch

uint256

Epoch in which the payment starts. Use getEpochFromTimestamp() or getCurrentEpoch() to get the appropriate epoch.

recipient

address

Recipient address that should receive tokens.

Returns

Name
Type
Description

id

uint256

Id of the newly created recurring payment.

removeRecurringPayment

Removes a recurring Payment.

Parameters

Name
Type
Description

prevId

uint256

Id of the previous recurring payment in the payment list.

id

uint256

Id of the recurring payment that is to be removed.

trigger

Triggers the start of the due payments for all recurring payment orders.

triggerFor

See trigger() but enables you to determine which ids you want to trigger payment ordes for.

this is to being able to bypass the unlikely event of having a runOutOfGas error for the normal trigger function.

Parameters

Name
Type
Description

startId

uint256

: id of start position of the recurring payments that should be triggered.

endId

uint256

: id of end position of the recurring payments that should be triggered.

_triggerFor

Triggers the given RecurringPayment.

Parameters

Name
Type
Description

startId

uint256

The id of the first RecurringPayment to trigger.

endId

uint256

The id of the last RecurringPayment to trigger.

Last updated