Skip to main content

Implement the execution interface

Overview

The IExecution contract allows executing an Order, getting a list of authorized callers, and checking the execution status. You can use this execution interface to create custom Orders.

Directory

Store IExecution in the /src directory, alongside with other contracts.

Full code

You can find the full code on GitHub: /src/IExecution.sol

Create the IExecution contract

Implement the execution interface in a file IExecution.sol:

/src/IExecution.sol
interface IExecution {
// Check if an Order can be executed
function canExecute() external view returns (bool);

// Execute an Order
function execute(
uint256 nonce,
uint256 gas,
uint256 gasPrice,
uint256 maxPriorityFeePerGas, // for EIP-1559 transactions
uint256 maxFeePerGas // for EIP-1559 transactions
) external returns (bool, bytes32);

// Get a list of authorized callers
function callers() external returns (Caller[] memory callersList);

// Check the execution status
function isExecuted() external returns (bool);
}

Next steps