# MIMOEmptyVault

The `MIMOEmptyVault` action contracts handle the super vault empty vault logic described in [Empty Vault](/products/parallel-v2/how-it-works/super-vaults-sv/emptyvault.md).

### Process Flow

<figure><img src="/files/qvESg0aDGOA3TvwaCt3W" alt=""><figcaption></figcaption></figure>

### Write Methods

#### `executeAction(bytes calldata _calldata) external`

Uses a flashloan to repay all debts for a vault and send all collateral in the vault to the owner.

Requirements :&#x20;

* Contract must be unpaused
* Must be called through the `MIMOProxy` `execute()` function
* Targeted vault must have been created by the `MIMOProxy`

| Param Name | Type  | Description                                                                                                                                                      |
| ---------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \_callData | bytes | <p>Abi encoded bytes with : </p><ul><li><code>uint256 vaultId</code> </li><li><code>FlashloanData flData</code></li><li><code>SwapData swapData</code></li></ul> |

#### `executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address initiator, bytes calldata params`

AAVE `Pool` contract flash loan callback function.

Requirements :&#x20;

* Contract must be unpaused
* Can only be called by the AAVE `Pool` contract
* Flash loan initiator must be the `MIMOProxy`

| Param Name  | Type       | Description                                                                              |
| ----------- | ---------- | ---------------------------------------------------------------------------------------- |
| `assets`    | address\[] | Address array with one element corresponding to the address of the target vault asset    |
| `amounts`   | uint256\[] | Uint array with one element corresponding to the amount of the target vault asset        |
| `premiums`  | uint256\[] | Uint array with one element corresponding to the flashLoan fees                          |
| `initiator` | address    | Initiator of the flashloan; can only be MIMOProxy owner                                  |
| `params`    | bytes      | Bytes sent by this contract containing MIMOProxy owner, target vault id, SwapData struct |

#### `emptyVaultOperation(address owner, IERC20 vaultCollateral, uint256 vaultId, uint256 swapAmount, uint256 flashLoanRepayAmount, SwapData calldata swapData)`

Performs a empty vault logic within `MIMOProxy` context.

Requirements :&#x20;

* Contract must be unpaused
* Must be called through the `MIMOProxy` `execute()` function

| Param Name             | Type    | Description                                                                        |
| ---------------------- | ------- | ---------------------------------------------------------------------------------- |
| `owner`                | address | Address of the `MIMOProxy` owner                                                   |
| `vaultCollateral`      | IERC20  | Collateral of the vault to empty                                                   |
| `vaultId`              | uint256 | Vault id of the vault to be emptied                                                |
| `swapAmount`           | uint256 | Amount of collateral to swap to for par to repay vault debt                        |
| `flashLoanRepayAmount` | uint256 | Amount of collateral to repay to flash loan protocol at the end of the transaction |
| `swapData`             | struct  | SwapData passed from the flash loan call                                           |

### View Methods

`proxyFactory()`

Returns the `MIMOProxyFactory` address.


---

# 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.parallel.best/developers-hub/parallel-v2/super-vault-sv/action-contracts/mimoemptyvault.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.
