# Concept

**Vault:** A singleton contract storing user-deposited tokens. It stores balances of pools and depositors. Users mainly interact with this contract.

**Pool:** A class of smart contracts holding their tokens in the vault and implementing certain callbacks. Liquidity pools, gauges, and bribes are all types of `Pool`s.

**Token:** Supports not only ERC20 but also ERC721, ERC1155, and native tokens. Tokens are represented as a wrapped bytes32 (`Token`)

**Design Objectives and Security Model**

Our approach emphasizes abstraction and encapsulation. We aimed for the vault to make minimal assumptions about the pools' behavior. While gas optimization is a secondary goal, it remains crucial.

Pools deployed by anyone can interact with the Vault freely and permissionlessly. Vault always assumes the possibility of malicious behavior when interacting with pools. They're trusted for user-deposited amounts only.


---

# 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://vedex.gitbook.io/docs/technical-docs/concept.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.
