Contents

IAutomationVault

Git Source

Functions

owner

Returns the owner address

function owner() external view returns (address _owner);

Returns

NameTypeDescription
_owneraddressThe address of the owner

NATIVE_TOKEN

Returns the address of the native token

function NATIVE_TOKEN() external view returns (address _nativeToken);

Returns

NameTypeDescription
_nativeTokenaddressThe address of the native token

pendingOwner

Returns the pending owner address

function pendingOwner() external view returns (address _pendingOwner);

Returns

NameTypeDescription
_pendingOwneraddressThe address of the pending owner

getRelayData

Returns the approved relay callers and selectors for a specific relay and job

function getRelayData(address _relay)
  external
  returns (address[] memory _callers, IAutomationVault.JobData[] memory _jobsData);

Parameters

NameTypeDescription
_relayaddressThe address of the relay

Returns

NameTypeDescription
_callersaddress[]The array of approved relay callers
_jobsDataIAutomationVault.JobData[]The array of approved jobs and selectors

relays

Returns the approved relays

function relays() external view returns (address[] memory _listRelays);

Returns

NameTypeDescription
_listRelaysaddress[]The array of approved relays

changeOwner

Propose a new owner for the contract

The new owner will need to accept the ownership before it is transferred

function changeOwner(address _pendingOwner) external;

Parameters

NameTypeDescription
_pendingOwneraddressThe address of the new owner

acceptOwner

Accepts the ownership of the contract

function acceptOwner() external;

withdrawFunds

Withdraws funds deposited in the contract

Only the owner can call this function

function withdrawFunds(address _token, uint256 _amount, address _receiver) external;

Parameters

NameTypeDescription
_tokenaddressThe address of the token
_amountuint256The amount of tokens
_receiveraddressThe address of the receiver

addRelay

Add a new relay to the automation vault with the desired callers, jobs and selectors

If the relay is valid, it can be passed with all the fields or only the necessary ones, passing the empty argument in the unwanted ones

function addRelay(address _relay, address[] calldata _callers, IAutomationVault.JobData[] calldata _jobsData) external;

Parameters

NameTypeDescription
_relayaddressThe address of the relay
_callersaddress[]The array of callers
_jobsDataIAutomationVault.JobData[]The array of job data

deleteRelay

Revokes the approval of a specific relay

The callers, jobs and selectors will be deleted

function deleteRelay(address _relay) external;

Parameters

NameTypeDescription
_relayaddressThe address of the relay

modifyRelay

Modify the callers, jobs and selectors of a specific relay

If any of the arguments is empty, the data will be deleted

function modifyRelay(
  address _relay,
  address[] calldata _callers,
  IAutomationVault.JobData[] calldata _jobsData
) external;

Parameters

NameTypeDescription
_relayaddressThe address of the relay
_callersaddress[]The array of callers
_jobsDataIAutomationVault.JobData[]The array of job data

modifyRelayCallers

Modify the callers of a specific relay

If the array is empty, the data will be deleted

function modifyRelayCallers(address _relay, address[] calldata _callers) external;

Parameters

NameTypeDescription
_relayaddressThe address of the relay
_callersaddress[]The array of callers

modifyRelayJobs

Modify the jobs and selectors of a specific relay

If the array is empty, the data will be deleted, also if the function selectors array is empty

function modifyRelayJobs(address _relay, IAutomationVault.JobData[] calldata _jobsData) external;

Parameters

NameTypeDescription
_relayaddressThe address of the relay
_jobsDataIAutomationVault.JobData[]The array of job data

exec

Executes a job and issues a payment to the fee data receivers

The function can be called with only execData, only feeData or both. The strategy of the payment will be different depending on which relay is calling the function

function exec(address _relayCaller, ExecData[] calldata _execData, FeeData[] calldata _feeData) external;

Parameters

NameTypeDescription
_relayCalleraddressThe address of the relay caller
_execDataExecData[]The array of exec data
_feeDataFeeData[]The array of fee data

Events

ChangeOwner

Emitted when the owner is proposed to change

event ChangeOwner(address indexed _pendingOwner);

Parameters

NameTypeDescription
_pendingOwneraddressThe address that is being proposed

AcceptOwner

Emitted when the owner is accepted

event AcceptOwner(address indexed _owner);

Parameters

NameTypeDescription
_owneraddressThe address of the new owner

WithdrawFunds

Emitted when funds are withdrawn

event WithdrawFunds(address indexed _token, uint256 _amount, address indexed _receiver);

Parameters

NameTypeDescription
_tokenaddressThe address of the token
_amountuint256The amount of tokens
_receiveraddressThe address of the receiver

ApproveRelay

Emitted when a relay is approved

event ApproveRelay(address indexed _relay);

Parameters

NameTypeDescription
_relayaddressThe address of the relay

DeleteRelay

Emitted when a relay is deleted

event DeleteRelay(address indexed _relay);

Parameters

NameTypeDescription
_relayaddressThe address of the relay

ApproveRelayCaller

Emitted when a relay caller is approved

event ApproveRelayCaller(address indexed _relay, address indexed _caller);

Parameters

NameTypeDescription
_relayaddressThe address of the relay
_calleraddressThe address of the caller

ApproveJob

Emitted when job is approved

event ApproveJob(address indexed _job);

Parameters

NameTypeDescription
_jobaddressThe address of the job

ApproveJobSelector

Emitted when job selector is approved

event ApproveJobSelector(address indexed _job, bytes4 indexed _functionSelector);

Parameters

NameTypeDescription
_jobaddressThe address of the job
_functionSelectorbytes4The function selector

JobExecuted

Emitted when a job is executed

event JobExecuted(address indexed _relay, address indexed _relayCaller, address indexed _job, bytes _jobData);

Parameters

NameTypeDescription
_relayaddressThe relay address
_relayCalleraddressThe relay caller address
_jobaddressThe address of the job
_jobDatabytesThe data to execute the job

IssuePayment

Emitted when a payment is issued

event IssuePayment(
  address indexed _relay, address indexed _relayCaller, address indexed _feeRecipient, address _feeToken, uint256 _fee
);

Parameters

NameTypeDescription
_relayaddressThe relay address
_relayCalleraddressThe relay caller address
_feeRecipientaddressThe recipient address which will receive the fee
_feeTokenaddressThe address of the token
_feeuint256The amount of tokens

NativeTokenReceived

Emitted when native token is received in the automation vault

event NativeTokenReceived(address indexed _sender, uint256 _amount);

Parameters

NameTypeDescription
_senderaddressThe sender address
_amountuint256The amount of native token

Errors

AutomationVault_RelayZero

Thrown when the the relay is the zero address

error AutomationVault_RelayZero();

AutomationVault_RelayAlreadyApproved

Thrown when the relay is already approved

error AutomationVault_RelayAlreadyApproved();

AutomationVault_NativeTokenTransferFailed

Thrown when ether transfer fails

error AutomationVault_NativeTokenTransferFailed();

AutomationVault_NotApprovedRelayCaller

Thrown when a not approved relay caller is trying to execute a job

error AutomationVault_NotApprovedRelayCaller();

AutomationVault_NotApprovedJobSelector

Thrown when a not approved job selector is trying to be executed

error AutomationVault_NotApprovedJobSelector();

AutomationVault_ExecFailed

Thrown when a job execution fails

error AutomationVault_ExecFailed();

AutomationVault_OnlyOwner

Thrown when the caller is not the owner

error AutomationVault_OnlyOwner();

AutomationVault_OnlyPendingOwner

Thrown when the caller is not the pending owner

error AutomationVault_OnlyPendingOwner();

Structs

ExecData

The data to execute a job

struct ExecData {
  address job;
  bytes jobData;
}

Properties

NameTypeDescription
jobaddressThe address of the job
jobDatabytesThe data to execute the job

FeeData

The data to issue a payment

struct FeeData {
  address feeRecipient;
  address feeToken;
  uint256 fee;
}

Properties

NameTypeDescription
feeRecipientaddressThe recipient address which will receive the fee
feeTokenaddressThe address of the token
feeuint256The amount of tokens

JobData

The data of a job

struct JobData {
  address job;
  bytes4[] functionSelectors;
}

Properties

NameTypeDescription
jobaddressThe address of the job
functionSelectorsbytes4[]The array of function selectors

IAutomationVaultFactory

Git Source

Functions

totalAutomationVaults

Get the total amount of automation vaults deployed by the factory

function totalAutomationVaults() external view returns (uint256 _totalAutomationVaults);

Returns

NameTypeDescription
_totalAutomationVaultsuint256The total amount of automation vaults deployed

automationVaults

Get a certain amount of automation vaults deployed by the factory

function automationVaults(uint256 _startFrom, uint256 _amount) external view returns (address[] memory _list);

Parameters

NameTypeDescription
_startFromuint256Index from where to start retrieving automation vaults
_amountuint256Amount of automation vaults to retrieve

Returns

NameTypeDescription
_listaddress[]The array of automation vaults

deployAutomationVault

Deploy a new automation vault

function deployAutomationVault(
  address _owner,
  address _nativeToken,
  uint256 _salt
) external returns (IAutomationVault _automationVault);

Parameters

NameTypeDescription
_owneraddressThe address of the owner
_nativeTokenaddressThe address of the native token
_saltuint256The salt to use for the automation vault deployment

Returns

NameTypeDescription
_automationVaultIAutomationVaultThe address of the automation vault deployed

Events

DeployAutomationVault

Emitted when a new automation vault is deployed

event DeployAutomationVault(address indexed _owner, address indexed _automationVault);

Parameters

NameTypeDescription
_owneraddressThe address of the owner
_automationVaultaddressThe address of the automation vault deployed

Errors

AutomationVaultFactory_Create2Failed

Thrown when the automation vault factory fails to deploy a new automation vault

error AutomationVaultFactory_Create2Failed();

IGelatoRelay

Git Source

Functions

automate

Returns the automate contract of the gelato network

function automate() external view returns (IAutomate _automate);

Returns

NameTypeDescription
_automateIAutomateThe address of the automate contract

gelato

Returns the gelato contract of the gelato network

function gelato() external view returns (IGelato _gelato);

Returns

NameTypeDescription
_gelatoIGelatoThe address of the gelato contract

feeCollector

Returns the fee collector of the gelato network

function feeCollector() external view returns (address _feeCollector);

Returns

NameTypeDescription
_feeCollectoraddressThe address of the fee collector

exec

Execute an automation vault which will execute the jobs and will manage the payment to the fee data receivers

function exec(IAutomationVault _automationVault, IAutomationVault.ExecData[] calldata _execData) external;

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault that will be executed
_execDataIAutomationVault.ExecData[]The array of exec data

Events

AutomationVaultExecuted

Emitted when an automation vault is executed

event AutomationVaultExecuted(
  address indexed _automationVault,
  address indexed _relayCaller,
  IAutomationVault.ExecData[] _execData,
  IAutomationVault.FeeData[] _feeData
);

Parameters

NameTypeDescription
_automationVaultaddressThe address of the automation vault
_relayCalleraddressThe address of the relay caller
_execDataIAutomationVault.ExecData[]The array of exec data
_feeDataIAutomationVault.FeeData[]The array of fee data

IKeep3rBondedRelay

Git Source

Inherits: IKeep3rRelay

Functions

automationVaultRequirements

Get the automation vault bonded requirements

function automationVaultRequirements(IAutomationVault _automationVault)
  external
  view
  returns (address _bond, uint256 _minBond, uint256 _earned, uint256 _age);

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault

Returns

NameTypeDescription
_bondaddressThe bond token being evaluated
_minBonduint256The minimum amount of bonded tokens
_earneduint256The minimum funds earned in the keepers lifetime
_ageuint256The minimum keeper age required

setAutomationVaultRequirements

Set the automation vault requirements when bonded job is required

Only the owner of the automation vault can set the requirements

function setAutomationVaultRequirements(
  IAutomationVault _automationVault,
  IKeep3rBondedRelay.Requirements memory _requirements
) external;

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault that will be executed
_requirementsIKeep3rBondedRelay.RequirementsThe requirements needed when bonded job is required

Events

AutomationVaultRequirementsSetted

Emitted when the automation vault requirements are setted

event AutomationVaultRequirementsSetted(
  address indexed _automationVault, address _bond, uint256 _minBond, uint256 _earned, uint256 _age
);

Parameters

NameTypeDescription
_automationVaultaddressThe address of the automation vault
_bondaddressThe bond token being evaluated
_minBonduint256The minimum amount of bonded tokens
_earneduint256The minimum funds earned in the keepers lifetime
_ageuint256The minimum keeper age required

Errors

Keep3rBondedRelay_NotVaultOwner

Thrown when the caller is not the automation vault owner

error Keep3rBondedRelay_NotVaultOwner();

Keep3rBondedRelay_NotAutomationVaultRequirement

Thrown when the automation vault requirements are not setted

error Keep3rBondedRelay_NotAutomationVaultRequirement();

Keep3rBondedRelay_NotBondedKeeper

Thrown when the keeper doesn't meet the requirements set by the automation vault

error Keep3rBondedRelay_NotBondedKeeper();

Structs

Requirements

The requirements needed when bonded job is required

struct Requirements {
  address bond;
  uint256 minBond;
  uint256 earned;
  uint256 age;
}

Properties

NameTypeDescription
bondaddress
minBonduint256
earneduint256
ageuint256

IKeep3rRelay

Git Source

Functions

exec

Execute an automation vault which will execute the jobs and will manage the payment to the fee data receivers

The payment will be managed by keep3r network. The first and last exec data are assembled by the relay in order to be able to work with keep3r network

function exec(IAutomationVault _automationVault, IAutomationVault.ExecData[] calldata _execData) external;

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault that will be executed
_execDataIAutomationVault.ExecData[]The array of exec data

Events

AutomationVaultExecuted

Emitted when an automation vault is executed

event AutomationVaultExecuted(
  address indexed _automationVault, address indexed _relayCaller, IAutomationVault.ExecData[] _execData
);

Parameters

NameTypeDescription
_automationVaultaddressThe address of the automation vault
_relayCalleraddressThe address of the relay caller
_execDataIAutomationVault.ExecData[]The array of exec data

Errors

Keep3rRelay_NoExecData

Thrown when the exec data is empty

error Keep3rRelay_NoExecData();

Keep3rRelay_NotKeeper

Thrown when the caller is not a keeper

error Keep3rRelay_NotKeeper();

Keep3rRelay_Keep3rNotAllowed

Thrown when the exec data contains Keep3r V2

error Keep3rRelay_Keep3rNotAllowed();

IOpenRelay

Git Source

Functions

GAS_BONUS

Returns the gas bonus

function GAS_BONUS() external view returns (uint256 _gasBonus);

Returns

NameTypeDescription
_gasBonusuint256The value of the gas bonus

GAS_MULTIPLIER

Returns the gas multiplier

function GAS_MULTIPLIER() external view returns (uint256 _gasMultiplier);

Returns

NameTypeDescription
_gasMultiplieruint256The value of the gas multiplier

BASE

Returns the base used for the payment calculation

function BASE() external view returns (uint32 _base);

Returns

NameTypeDescription
_baseuint32The value of the base

exec

Execute an automation vault which will execute the jobs and will manage the payment to the fee data receivers

The payment will be calculated on the basis of several variables like the gas spent, the base fee, the gas bonus and the gas multiplier

function exec(
  IAutomationVault _automationVault,
  IAutomationVault.ExecData[] calldata _execData,
  address _feeRecipient
) external;

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault that will be executed
_execDataIAutomationVault.ExecData[]The array of exec data
_feeRecipientaddressThe address of the fee recipient

Events

AutomationVaultExecuted

Emitted when an automation vault is executed

event AutomationVaultExecuted(
  address indexed _automationVault,
  address indexed _relayCaller,
  IAutomationVault.ExecData[] _execData,
  IAutomationVault.FeeData[] _feeData
);

Parameters

NameTypeDescription
_automationVaultaddressThe address of the automation vault
_relayCalleraddressThe address of the relay caller
_execDataIAutomationVault.ExecData[]The array of exec data
_feeDataIAutomationVault.FeeData[]The array of fee data

Errors

OpenRelay_NoExecData

Thrown when the exec data is empty

error OpenRelay_NoExecData();

IXKeeperMetadata

Git Source

Functions

automationVaultMetadata

Returns the metadata of the automation vault

function automationVaultMetadata(IAutomationVault _automationVault)
  external
  view
  returns (string calldata _name, string calldata _description);

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault

Returns

NameTypeDescription
_namestringThe name of the automation vault
_descriptionstringThe description of the automation vault

automationVaultsMetadata

Returns the metadata of the automation vault

function automationVaultsMetadata(IAutomationVault[] calldata _automationVault)
  external
  view
  returns (IXKeeperMetadata.AutomationVaultMetadata[] memory _metadata);

Parameters

NameTypeDescription
_automationVaultIAutomationVault[]The automation vaults

Returns

NameTypeDescription
_metadataIXKeeperMetadata.AutomationVaultMetadata[]The metadata of the automation vault

setAutomationVaultMetadata

Sets the metadata of the automation vault

function setAutomationVaultMetadata(
  IAutomationVault _automationVault,
  AutomationVaultMetadata calldata _automationVaultMetadata
) external;

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault
_automationVaultMetadataAutomationVaultMetadataThe metadata of the automation vault

Events

AutomationVaultMetadataSetted

Emitted when the metadata of an automation vault is set

event AutomationVaultMetadataSetted(IAutomationVault indexed _automationVault, string _name, string _description);

Parameters

NameTypeDescription
_automationVaultIAutomationVaultThe automation vault
_namestringThe name of the automation vault
_descriptionstringThe description of the automation vault

Errors

XKeeperMetadata_OnlyAutomationVaultOwner

The caller is not the owner of the automation vault

error XKeeperMetadata_OnlyAutomationVaultOwner();

Structs

AutomationVaultMetadata

The metadata of the automation vault

struct AutomationVaultMetadata {
  string name;
  string description;
}

Properties

NameTypeDescription
namestring
descriptionstring