SpendPermissionManager.sol smart contract
The open-source contracts repository is here.
Structs
SpendPermission
Defines the complete parameters of a spend permission.
The fields of the SpendPermission
structure must be strictly ordered as
defined below.
Field | Type | Description |
---|---|---|
account | address | Smart account this spend permission is valid for. |
spender | address | Entity that can spend account ’s tokens. |
token | address | Token address (ERC-7528 native token address or ERC-20 contract). |
allowance | uint160 | Maximum allowed value to spend within each period . |
period | uint48 | Time duration for resetting used allowance on a recurring basis (seconds). |
start | uint48 | Timestamp this spend permission is valid starting at (unix seconds). |
end | uint48 | Timestamp this spend permission is valid until (unix seconds). |
salt | uint256 | An arbitrary salt to differentiate unique spend permissions with otherwise identical data. |
extraData | bytes | Arbitrary data to include in the permission. |
PeriodSpend
Describes the cumulative spend for the current active period.
Field | Type | Description |
---|---|---|
start | uint48 | Start time of the period (unix seconds). |
end | uint48 | End time of the period (unix seconds). |
spend | uint160 | Accumulated spend amount for period. |
Contract functions
approve
Approve a spend permission via a direct call from the account
. Only callable by the account
specified in the spend permission.
approveWithSignature
Approve a spend permission via a signature from the account
owner. Compatible with ERC-6492 signatures for automatic account creation if needed.
spend
Spend tokens using a spend permission, transferring them from the account
to the spender
. Only callable by the spender
specified in the permission.
revoke
Revoke a spend permission, permanently disabling its use. Only callable by the account
specified in the spend permission.
revokeAsSpender
Revoke a spend permission, permanently disabling its use. Only callable by the spender
specified in the spend permission.
getHash
Generate a hash of a SpendPermission
struct for signing, in accordance with EIP-712.
isApproved
Check if a spend permission is approved, regardless of whether the current time is within the valid time range of the permission.
isRevoked
Check if a spend permission is revoked, regardless of whether the current time is within the valid time range of the permission.
isValid
Check if a spend permission is approved and not revoked, regardless of whether the current time is within the valid time range of the permission.
getLastUpdatedPeriod
Retrieve the start
, end
, and accumulated spend
for the last updated period of a spend permission.
getCurrentPeriod
Retrieve the start
, end
, and accumulated spend
for the current period of a spend permission.
Reverts if the current time is outside the valid time range of the permission, but does not validate whether the
spend permission has been approved or revoked.