# 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 |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aera.finance/the-protocol/periphery/executor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
