LM_PC_RecurringPayments_v1.sol
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.
_nextId
Value for what the next id will be.
epochLength
length of an epoch.
_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
recurringPaymentId
uint256
The id of the RecurringPayment to check.
validStartEpoch
Checks if the given startEpoch is valid.
Parameters
startEpoch
uint256
The startEpoch of the RecurringPayment to check.
startIdBeforeEndId
Checks if the startId is before the endId.
Parameters
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
<none>
uint256
epochLength Length of an epoch in a uint timestamp.
getRecurringPaymentInformation
Returns the RecurringPayment instance with id id
.
Parameters
id
uint256
The id of the RecurringPayment to return.
Returns
<none>
RecurringPayment
RecurringPayment with id id
.
listRecurringPaymentIds
Returns total list of RecurringPayment ids.
List is in ascending order.
Returns
<none>
uint256[]
List of RecurringPayment ids.
getPreviousPaymentId
Returns the id of previous RecurringPayment.
Parameters
id
uint256
The id of the RecurringPayment to return.
Returns
<none>
uint256
prevId The id of previous RecurringPayment.
isExistingRecurringPaymentId
Returns whether RecurringPayment with id id
exists.
Parameters
id
uint256
The id of the RecurringPayment to test.
Returns
<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
timestamp
uint256
A timestamp in a uint format.
Returns
epoch
uint256
Epoch in which timestamp belongs to.
getCurrentEpoch
Calculates the current epoch.
Calculation is: block.timestamp divided by epochLength.
Returns
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
xEpochsInTheFuture
uint256
How many epochs from the current epoch.
Returns
futureEpoch
uint256
Epoch in the future.
addRecurringPayment
Adds a recurring payment to the manager.
a new id is created for each Payment.
Parameters
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
id
uint256
Id of the newly created recurring payment.
removeRecurringPayment
Removes a recurring Payment.
Parameters
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
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
startId
uint256
The id of the first RecurringPayment to trigger.
endId
uint256
The id of the last RecurringPayment to trigger.
Last updated