> ## Documentation Index
> Fetch the complete documentation index at: https://docs.redpotion.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Developers readme

> Red Potion deploys 13 contract types across three layers. Each has a dedicated page covering its responsibility, key flows, and function reference. The authoritative source of trut

Red Potion deploys 13 contract types across three layers. Each has a dedicated page covering its responsibility, key flows, and function reference. The authoritative source of truth is the [`zentryHQ/red-potion-contract`](https://github.com/zentryHQ/red-potion-contract) repository.

| Contract                                                                    | Layer         | One-liner                                                                                 |
| --------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------- |
| [FundManagerDeployer](/developers/contract-reference/fund-manager-deployer) | Protocol root | Creates tenants; holds canonical implementations and the protocol fee recipient.          |
| [FundManager](/developers/contract-reference/fund-manager)                  | Tenant        | Per-tenant launchpad: creates complete funds and strategies via its 8 factories.          |
| [Factory](/developers/contract-reference/factory)                           | Shared        | Generic transparent-proxy factory + entity registry, reused everywhere.                   |
| [Fund](/developers/contract-reference/fund)                                 | Fund hub      | Holds assets, orchestrates settlement, central role registry, strategy/wallet management. |
| [FundShare](/developers/contract-reference/fund-share)                      | Fund spoke    | ERC-20 share token; mint/burn only by the Fund.                                           |
| [DepositQueue](/developers/contract-reference/deposit-queue)                | Fund spoke    | Batched deposits: deposit → cancel/settle → claim shares.                                 |
| [RedeemQueue](/developers/contract-reference/redeem-queue)                  | Fund spoke    | Batched redemptions: redeem → settle → fund → claim assets.                               |
| [Oracle](/developers/contract-reference/oracle)                             | Fund spoke    | Batch clock + NAV price reports with safety checks and accept windows.                    |
| [FeeManager](/developers/contract-reference/fee-manager)                    | Fund spoke    | Entry/exit/management/performance/protocol fees, paid in minted shares; high-water mark.  |
| [RiskManager](/developers/contract-reference/risk-manager)                  | Fund spoke    | Deposit/redeem guardrails: caps, minimums, drawdown gate, whitelist, emergency pause.     |
| [Strategy](/developers/contract-reference/strategy)                         | Execution     | Fund-controlled wallet limited to an allowlist of exact calls.                            |
| [StandaloneStrategy](/developers/contract-reference/standalone-strategy)    | Execution     | The same engine, detached from Fund control, for deploying on other chains.               |

## The two auth patterns

Contracts authorize privileged calls one of two ways. Contracts that own their role state (Fund, FundManager, FundManagerDeployer, Strategy, StandaloneStrategy) use a **local ACL** (`ACLModule`, OpenZeppelin `AccessControlEnumerable`). The five fund **spokes** (DepositQueue, RedeemQueue, Oracle, FeeManager, RiskManager) hold no role state—their modifiers call back into the Fund's access control.

As a result, all roles for a fund and its spokes are managed on the [Fund](/developers/contract-reference/fund). Full detail in [Access Control & Roles](/developers/access-control-and-roles).

## Conventions used throughout

* **Prices** are 1e18-scaled asset-per-share: `shares = amount × 1e18 / price`.
* **Native ETH** uses the sentinel `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE`.
* **`onlyFund`** means the function can only be reached through the Fund (spoke pattern).
* **Roles checked on the Fund** means the function lives on a spoke but authorizes against the Fund's ACL.
