# ISingleDepositorVault

**Inherits:** IFeeVault

Interface for vaults that accept deposits/withdrawals from a single address

## Functions

### deposit

Deposit assets into the vault

```solidity
function deposit(TokenAmount[] calldata tokenAmounts) external;
```

**Parameters**

| Name           | Type            | Description           |
| -------------- | --------------- | --------------------- |
| `tokenAmounts` | `TokenAmount[]` | The assets to deposit |

### withdraw

Withdraw assets from the vault

```solidity
function withdraw(TokenAmount[] calldata tokenAmounts) external;
```

**Parameters**

| Name           | Type            | Description            |
| -------------- | --------------- | ---------------------- |
| `tokenAmounts` | `TokenAmount[]` | The assets to withdraw |

### execute

Execute operations on the vault as a trusted entity

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

**Parameters**

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

## Events

### Deposited

Emitted when tokens are deposited into the vault

```solidity
event Deposited(address indexed depositor, TokenAmount[] tokenAmounts);
```

**Parameters**

| Name           | Type            | Description                      |
| -------------- | --------------- | -------------------------------- |
| `depositor`    | `address`       | The address making the deposit   |
| `tokenAmounts` | `TokenAmount[]` | The tokens and amounts deposited |

### Withdrawn

Emitted when tokens are withdrawn from the vault

```solidity
event Withdrawn(address indexed withdrawer, TokenAmount[] tokenAmounts);
```

**Parameters**

| Name           | Type            | Description                       |
| -------------- | --------------- | --------------------------------- |
| `withdrawer`   | `address`       | The address making the withdrawal |
| `tokenAmounts` | `TokenAmount[]` | The tokens and amounts withdrawn  |

### Executed

Emitted when operations are executed

```solidity
event Executed(address indexed executor, OperationPayable[] operations);
```

**Parameters**

| Name         | Type                 | Description                          |
| ------------ | -------------------- | ------------------------------------ |
| `executor`   | `address`            | The address executing the operations |
| `operations` | `OperationPayable[]` | The operations that were executed    |

## Errors

### Aera\_\_ExecutionFailed

```solidity
error Aera__ExecutionFailed(uint256 index, bytes result);
```

### Aera\_\_UnexpectedTokenAllowance

```solidity
error Aera__UnexpectedTokenAllowance(uint256 allowance);
```
