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

# Contracts overview

> Mainnet addresses, role gates, factory provisioning model.

## Live mainnet (`chainId 16661`)

| Contract                       | Address                                                                                                                    |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `MarketFactory`                | [`0xBcBe5DE4D9F8F9336924eCB90888a775DfB06Eb9`](https://chainscan.0g.ai/address/0xBcBe5DE4D9F8F9336924eCB90888a775DfB06Eb9) |
| `AIResolver`                   | [`0x39892fA47Ef99B09Aee12347011a933F11c06Efc`](https://chainscan.0g.ai/address/0x39892fA47Ef99B09Aee12347011a933F11c06Efc) |
| `PredictionMarket` impl        | [`0xf3488b2aa1D0EC500CE0c8c9d7a8eB24ba4BBe59`](https://chainscan.0g.ai/address/0xf3488b2aa1D0EC500CE0c8c9d7a8eB24ba4BBe59) |
| Gimo `StakePool` (third-party) | [`0xAc06d1Df23a4Fa00981aFAC0f33A5936Bd2135aF`](https://chainscan.0g.ai/address/0xAc06d1Df23a4Fa00981aFAC0f33A5936Bd2135aF) |

Full deploy log lives in [`packages/contracts/deployments/16661.json`](https://github.com/rstfulzz/signalium/blob/main/packages/contracts/deployments/16661.json).

## Per-market provisioning

Every `createMarket(...)` call deploys, in one transaction:

1. A `PredictionMarket` clone (EIP-1167 minimal proxy → \~50k gas).
2. A fresh `Treasury` whose `principal` is the new market.
3. A `GimoAdapter` wired to that Treasury (max-approves `st0G` to `StakePool` in its constructor).

The factory enables the adapter on the Treasury, then transfers Treasury ownership to the factory owner. The market's `creator` is set as the Treasury operator so they can rebalance their own market without protocol intervention.

## Role gates

| Role                             | Held by                          | Powers                                                        |
| -------------------------------- | -------------------------------- | ------------------------------------------------------------- |
| Factory `owner`                  | Initial deployer (`0x3B4f…85F5`) | Allowlist resolvers, set fees, point at a different Gimo pool |
| Treasury `owner`                 | Factory owner (post-handoff)     | Enable/disable adapters, set reserve floor                    |
| Treasury `operator`              | Market `creator`                 | `deployIdle`, `requestUnstake`, `claimFrom`                   |
| Treasury `principal` (immutable) | The `PredictionMarket` clone     | Sole caller of `recallToPrincipal`                            |
| AIResolver `owner`               | Initial deployer                 | Allowlist TEE provider signers                                |
| TEE provider                     | `0x3B4f…85F5` (allowlisted)      | Sign verdict digests for `AIResolver.submitResolution`        |

## Test coverage

```
138 unit tests   — packages/contracts/test/
  4 fork tests   — packages/contracts/test/yield/GimoAdapter.fork.t.sol
                   (run against the real Gimo proxy on 0G mainnet)
```

See per-contract pages for details:

<CardGroup cols={2}>
  <Card title="PredictionMarket" icon="chart-line" href="/contracts/prediction-market" />

  <Card title="Treasury" icon="vault" href="/contracts/treasury" />

  <Card title="GimoAdapter" icon="coins" href="/contracts/gimo-adapter" />

  <Card title="AIResolver" icon="shield-check" href="/contracts/ai-resolver" />
</CardGroup>
