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

# Stellar lending governance ABI

> Current governance entrypoints, roles, AdminOperation scheduling, and timelock execution.

Governance owns the controller. Protocol-admin changes are scheduled as typed
`AdminOperation` values and executed after the timelock delay.

## Roles

| Role        | Purpose                                                        |
| ----------- | -------------------------------------------------------------- |
| `PROPOSER`  | Schedules operations.                                          |
| `EXECUTOR`  | Executes ready operations when execution is restricted.        |
| `CANCELLER` | Cancels pending operations.                                    |
| `ORACLE`    | Governance operational role for oracle-related administration. |

## Entry Points

| Function                                                       | Purpose                                                       |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
| `deploy_controller(wasm_hash)`                                 | One-time controller deployment.                               |
| `controller()`                                                 | Returns deployed controller address.                          |
| `propose(proposer, op, salt)`                                  | Validates and schedules an `AdminOperation`.                  |
| `execute(executor, target, function, args, predecessor, salt)` | Executes a ready controller-targeted operation.               |
| `cancel(canceller, operation_id)`                              | Cancels a pending operation.                                  |
| `get_min_delay()`                                              | Returns timelock delay in ledgers.                            |
| `get_operation_state(operation_id)`                            | Returns operation lifecycle state.                            |
| `get_operation_ledger(operation_id)`                           | Returns ready ledger, done marker, or unset marker.           |
| `hash_operation(target, function, args, predecessor, salt)`    | Computes operation id.                                        |
| `resolve_market_oracle_config(asset, cfg)`                     | Read-only helper matching proposal-time oracle resolution.    |
| `resolve_oracle_tolerance(tolerance)`                          | Read-only helper matching proposal-time tolerance resolution. |

## AdminOperation Groups

Controller-targeted variants include:

* aggregator and accumulator;
* pool template, pool deployment, pool upgrade, and pool params;
* token approval and Blend pool approval;
* hub creation;
* spoke creation, deprecation, and spoke-asset changes;
* market creation;
* oracle config, oracle disable, and oracle tolerance;
* position limits and minimum borrow collateral;
* position manager registration;
* controller upgrade, migration, and ownership transfer.

Governance-self variants include:

* governance upgrade;
* delay update;
* governance role grant/revoke;
* governance ownership transfer.

## Execution Model

Controller-targeted operations execute through `execute`. Governance-self
operations use typed inline execution because Soroban does not allow the generic
self-call pattern used for controller calls.

Testing-only immediate forwarders are gated by `#[cfg(any(test, feature =
"testing"))]` and are not part of the production admin path.
