# Vaults

The `vaults` module in the Inception protocol manages how assets are deposited, tokenized, and routed through strategy-specific adapters. It forms the foundation of the Inception inToken infrastructure and enables composability by abstracting different underlying strategies behind a unified vault interface.

Vaults are modular and extensible, powered by a plug-in architecture using adapters and handlers. Each vault is deployed through a factory and interacts with both assets and strategies via well-defined adapter interfaces.

## Key Components

#### 1. **Base Adapters**

* **`InceptionBaseAdapter.sol`**: Core abstract contract that standardizes the adapter structure. It handles initialization, asset registration, access control, and compatibility with ERC-4626-like logic.
* **`InceptionEigenAdapter.sol`**: Adapter implementation integrating EigenLayer strategies into Inception vaults.

#### 2. **Adapter Handler**

* **`AdapterHandler.sol`**: A router that maps vaults to their respective adapters. Ensures that calls from vaults are correctly forwarded to the adapter implementing the logic for the selected strategy.

#### 3. **Asset Handler**

* Controls the list of supported tokens and tracks relationships between vaults and the tokens they can accept.

#### 4. **Interfaces**

* Define the expected structure and communication standard between vaults, adapters, and other contracts (e.g., `IVault`, `IAdapter`, etc.).

## Flow Overview

1. A new vault is created via the factory, specifying:
   * Accepted asset(s)
   * Adapter to use
   * Configuration parameters
2. Deposits into the vault are routed to the adapter, which executes strategy-specific logic (e.g., restaking, yield generation).
3. Withdrawals are similarly processed through the adapter, ensuring asset recovery and accounting.
4. Tokenized representations (e.g., `inETH`) are minted and burned based on deposits/withdrawals.

## Smart Contract Highlights

| Contract                      | Role                                       |
| ----------------------------- | ------------------------------------------ |
| `InceptionBaseAdapter.sol`    | Defines adapter logic base class           |
| `InceptionEigenAdapter.sol`   | Specific adapter for EigenLayer strategies |
| `AdapterHandler.sol`          | Central adapter registry and router        |
| `AssetHandler.sol`            | Asset registry and validation              |
| `VaultFactory.sol` (external) | Deploys and configures new vaults          |

## Extensibility

* Developers can build new adapters for different protocols (e.g., Lido, Pendle, Morpho).
* New strategies only require adapter contracts to follow the same interfaces.
* Vaults are upgradeable (OpenZeppelin proxies), allowing iterative improvements and safety fixes.

## Notes

* Contracts are written in Solidity and follow Hardhat development standards.
* `.openzeppelin/` folder contains proxy deployment metadata.
* Tests and deployment scripts are found in `test/` and `scripts/` respectively.


---

# 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.inceptionlrt.com/developers/modules/vaults.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.
