# Executor

**Inherits:** IExecutor, ReentrancyGuard

Abstract contract for executing operations

*A similar version of this contract was previously audited*

*See: <https://github.com/aera-finance/aera-contracts-public/blob/main/v2/periphery/Executor.sol>*

## Functions

### execute

Execute arbitrary actions

```solidity
function execute(OperationPayable[] calldata operations) external nonReentrant;
```

**Parameters**

| Name         | Type                 | Description               |
| ------------ | -------------------- | ------------------------- |
| `operations` | `OperationPayable[]` | The operations to execute |

### \_executeOperation

Execute a single operation

*Executes the operation and reverts if it fails*

```solidity
function _executeOperation(OperationPayable calldata operation) internal virtual;
```

**Parameters**

| Name        | Type               | Description              |
| ----------- | ------------------ | ------------------------ |
| `operation` | `OperationPayable` | The operation to execute |

### \_checkOperations

Authorize the execution of operations

*Intended to be marked by `onlyOwner` or similar access control modifier*

```solidity
function _checkOperations(OperationPayable[] calldata operations) internal view virtual;
```

**Parameters**

| Name         | Type                 | Description             |
| ------------ | -------------------- | ----------------------- |
| `operations` | `OperationPayable[]` | The operations to check |

### \_checkOperation

Authorize the execution of a single operation

```solidity
function _checkOperation(OperationPayable calldata operation) internal view virtual;
```

**Parameters**

| Name        | Type               | Description            |
| ----------- | ------------------ | ---------------------- |
| `operation` | `OperationPayable` | The operation to check |
