# Contracts

## Blueberry Bank Components

### Blueberry Bank product is mainly composed of 5 components:

1. [**Blueberry Bank Contract:**](/developer-guides/contracts/blueberry-bank/introduction.md) the main contract that stores users\` positions and tracks the borrowing of tokens.
2. [**Blueberry Oracle Contracts**](/developer-guides/contracts/oracle.md)**:** The contracts that identify position values and token prices.
3. [**Blueberry Spell Contract**](/developer-guides/contracts/spell.md)**:** the contracts which define the specific deployment of the strategy in the spell. E.g. The contract interacts with DEXes and wrapper contracts to open/close users' positions.
4. [**Blueberry Vault Contracts**](/developer-guides/contracts/vault.md)**:**&#x20;
   1. [**Blueberry SoftVault Contracts**](/developer-guides/contracts/vault/softvault.md)**:** The contracts that allow users to lend tokens (ERC20) and earn lending interest (interest rate is reflected from how much users borrow the token (Active utilization rate)). This is using the underlying Blueberry Money Market (Compound Fork) [Lending Protocol](/lending-protocol/overview.md)
   2. [**Blueberry HardVault Contracts**](/developer-guides/contracts/vault/hardvault.md)**:** The contracts that allow users to lock LP (ERC1155) tokens as collateral.
5. [**Blueberry Wrapper Contracts**](/developer-guides/contracts/wrapper.md)**:** the contracts that handle the farming process (i.e. deposit into Masterchef contract) and wrap/unwrap user's collateral and forward wrapped tokens to bank/spells.

{% content-ref url="/pages/oqpdT3035GOpUSFNi1js" %}
[Deployed Contracts](/developer-guides/deployed-contracts.md)
{% endcontent-ref %}


---

# 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://v1.docs.blueberry.garden/developer-guides/contracts.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.
