The owner of the vault can put arbitrary checkers and arbitrary actions for conditional statefull execution
/// @notice Adds a new workflow to the EntryPoint.
/// @param checkers An array of Checker structures to define the conditions.
/// @param actions An array of Action structures to define the actions.
/// @param executor The address of the executor.
/// @param count The number of times the workflow should be executed.
function addWorkflow(
Checker[] calldata checkers,
Action[] calldata actions,
address executor,
uint88 count
) external;
After successful storage of the workflow data, the workflow can be executed if all the checkers return True by dedicatedMessage sender in the case of gelato or by the ditto executor when our Keeper infrastructure is life.
To run workflow the executor should call the run method on the vault and provide the workflowKey.
/// @notice Executes a specific workflow and compensates the `feeReceiver` for gas costs.
/// @param workflowKey Unique identifier for the workflow to be executed.
function run(uint256 workflowKey) external;
In case working with Gelato there is a dedicated method for it.
/// @notice Executes the logic of a workflow via Gelato.
/// @param workflowKey The identifier of the workflow to be executed.
/// @dev Only a dedicated message sender from Gelato can call this function.
function runGelato(uint256 workflowKey) external;
This infrastructure allows for trustless workflow execution defined by pre-stored conditions.