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

# Yield Source Management

> Whitelist yield sources, pair oracles, and keep emergency-exit coverage in sync.

Yield Source Management controls where a SuperVault is allowed to deploy capital. Each source is a protocol position, such as an ERC-4626 vault or Pendle PT, paired with an oracle that prices the position back into the vault's underlying asset.

All whitelist mutations use the prepare pattern: Erebor prepares calldata and the manager wallet signs the transaction.

## Page Layout

* **Whitelisted Yield Sources** — sources currently enabled for the selected vault.
* **Yield Source Registry** — global source catalog filtered by chain and active status.
* **Oracle Registry** — compatible pricing sources.

Registry entries can include provider data imported from external provider URLs, such as Morpho or Pendle metadata.

## Add a Yield Source

1. Select a registry yield source.
2. Select a compatible oracle.
3. Prepare the add transaction.
4. Sign with the manager wallet.
5. Confirm the source appears in the whitelisted table.

```bash theme={null}
POST /api/v1/yield-sources/prepare-add
POST /api/v1/yield-sources/prepare-bulk-add
```

Adding a source also keeps the paired emergency-exit strategy lifecycle in sync. The app provisions one `EMERGENCY_EXIT` withdrawal strategy for the source when the active hook and proof prerequisites are available.

## Remove a Yield Source

```bash theme={null}
POST /api/v1/yield-sources/prepare-remove
POST /api/v1/yield-sources/prepare-bulk-remove
```

Before removing, confirm the vault has no deployed liquidity in the source.

<Warning>
  Removing a yield source does not unwind assets. Withdraw first, or use [Pause Operations](/curate/ui/pause) to arm an emergency drain when the situation requires immediate exit.
</Warning>

When a whitelisted source is removed, the paired `EMERGENCY_EXIT` strategy is archived. If an emergency lock is active for that source, removal is blocked until the operator stops the drain.

## Update Oracle

Use oracle updates when the current oracle is wrong, deprecated, or needs a safer pricing path.

```bash theme={null}
POST /api/v1/yield-sources/prepare-update-oracle
POST /api/v1/yield-sources/prepare-bulk-update-oracle
```

## Registry Sync

Registry maintainers can import external provider sources:

```bash theme={null}
POST /api/v1/registry/yield-sources/sync
```

Synced entries may include provider-specific metadata in `provider_data`. Keep `is_active` accurate so inactive sources are hidden from normal operator flows.

## Source and Oracle Types

| Type                         | Meaning                            |
| ---------------------------- | ---------------------------------- |
| `erc4626`                    | Standard tokenized vault position  |
| `pendle_pt`                  | Pendle principal token position    |
| `erc4626` oracle             | Prices by share value              |
| `pendle_pt` oracle           | Prices by PT market value          |
| `pendle_pt_amortized` oracle | Amortizes PT value toward maturity |

## API Reference

| Endpoint                                              | Method   | Description                            |
| ----------------------------------------------------- | -------- | -------------------------------------- |
| `/api/v1/yield-sources/{chain_id}/{vault_address}`    | GET      | Whitelisted sources for a vault        |
| `/api/v1/registry/yield-sources`                      | GET/POST | Browse or create registry source       |
| `/api/v1/registry/yield-sources/{chain_id}/{address}` | GET/PUT  | Read or update source by chain/address |
| `/api/v1/registry/yield-sources/{id}`                 | DELETE   | Delete registry source                 |
| `/api/v1/registry/yield-sources/sync`                 | POST     | Import provider sources                |
| `/api/v1/registry/oracles`                            | GET/POST | Browse or create oracles               |
| `/api/v1/yield-sources/prepare-add`                   | POST     | Prepare add transaction                |
| `/api/v1/yield-sources/prepare-remove`                | POST     | Prepare remove transaction             |
| `/api/v1/yield-sources/prepare-update-oracle`         | POST     | Prepare oracle update transaction      |
| `/api/v1/yield-sources/prepare-bulk-add`              | POST     | Prepare bulk add transaction           |
| `/api/v1/yield-sources/prepare-bulk-remove`           | POST     | Prepare bulk remove transaction        |
| `/api/v1/yield-sources/prepare-bulk-update-oracle`    | POST     | Prepare bulk oracle update transaction |
