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

# Instrucciones de Stable AMM

> El conjunto de instrucciones actualmente invocables — Deposit, Withdraw, SwapBaseIn, SwapBaseOut, WithdrawPnl — más las instrucciones eliminadas en la actualización del 2026-06-22.

<Info>
  **Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.**

  [Ver versión en inglés →](/products/stable/instructions)
</Info>

<Info>
  Stable AMM es un **programa independiente** con su propio ID de programa. **No** es un modo del programa AMM v4, ni se negocia «a través» de AMM v4 — se implementa, actualiza e invoca por separado. Solo se parece a AMM v4 en las convenciones de comisiones y disposición de cuentas.
</Info>

<Warning>
  **Actualización del 2026-06-22 — eliminación del código muerto de OpenBook (mercado).** Stable AMM **dejó de publicar órdenes en OpenBook hace mucho tiempo**; la ruta de creación de mercado del libro de órdenes ha estado inactiva durante años. Esta actualización elimina las cuentas y el código relacionados con el mercado restantes — **no** cambia el comportamiento del comercio en vivo.

  Dos consecuencias para los integradores:

  1. **Disposiciones de cuenta más pequeñas.** `SwapBaseIn` / `SwapBaseOut` (**18 → 9**), `Deposit` (**14 → 12**), y `Withdraw` (**21/22 → 12**) eliminan las cuentas muertas de Serum/mercado. Las disposiciones antiguas aún se analizan para compatibilidad hacia atrás. `WithdrawPnl` (**16 → 10**) es un **cambio importante con ruptura total sin ruta de compatibilidad** (solo administrador).
  2. **La mayoría de las instrucciones se eliminan.** Solo `SwapBaseIn`, `SwapBaseOut`, `Deposit`, `Withdraw`, y `WithdrawPnl` permanecen invocables. Todas las demás instrucciones ya no pueden ser llamadas.

  Registro de cambios: [`reference/changelog`](/es/reference/changelog).
</Warning>

## Inventario de instrucciones

### Invocables

| Instrucción | Categoría | Notas |
| - | - | - |
| `Deposit` | Liquidez | Añadir liquidez, recibir LP. Nueva disposición de 12 cuentas; la disposición antigua de 14 cuentas sigue siendo compatible. |
| `Withdraw` | Liquidez | Quemar LP, recibir ambos lados. Nueva disposición de 12 cuentas; la disposición antigua de 21/22 cuentas sigue siendo compatible. |
| `SwapBaseIn` | Swap | Swap de entrada exacta. Nueva disposición de 9 cuentas; la disposición antigua de 18 cuentas sigue siendo compatible. |
| `SwapBaseOut` | Swap | Swap de salida exacta. Nueva disposición de 9 cuentas; la disposición antigua de 18 cuentas sigue siendo compatible. |
| `WithdrawPnl` | Admin | Recopilar comisiones de protocolo acumuladas. Nueva disposición de 10 cuentas (**ruptura total — sin compatibilidad de disposición antigua**). |

### Eliminadas (ya no invocables)

Estas fueron eliminadas en la actualización del 2026-06-22 y ya no pueden ser invocadas. Consulta [Instrucciones eliminadas](#instrucciones-eliminadas).

| Instrucción | Categoría anterior | Propósito anterior |
| - | - | - |
| `Initialize` | Ciclo de vida | Crear un pool. |
| `PreInitialize` | Ciclo de vida | Asistente de preasignación heredado. |
| `InitModelData` | Configuración del modelo | Crear e inicializar la tabla de búsqueda. |
| `UpdateModelData` | Configuración del modelo | Rellenar hasta 5 elementos de tabla por llamada. |
| `MonitorStep` | Crank | Liquidar rellenos de OpenBook, republicar órdenes. |
| `SetParams` | Admin | Cambiar parámetros del pool. |
| `WithdrawSrm` | Heredado | Recopilar reembolsos de descuento de comisión SRM. |
| `SimulateInfo` | Diagnóstico | Asistente de cotización de solo lectura. |

## `Deposit`

Añadir liquidez, recibir tokens LP.

**Argumentos**

```
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base en coin, 1 = base en pc
```

**Cuentas** — disposición nueva, 12 cuentas (escribible `W`, firmante `S`)

| # | Nombre | W | S | Notas |
| - | - | - | - | - |
| 0 | `token_program` | | | SPL Token. |
| 1 | `amm` | W | | `AmmInfo` del pool. |
| 2 | `amm_authority` | | | PDA de todo el programa. |
| 3 | `amm_target_orders` | W | | |
| 4 | `amm_lp_mint` | W | | Mint de LP. |
| 5 | `amm_coin_vault` | W | | Bóveda de coin del pool. |
| 6 | `amm_pc_vault` | W | | Bóveda de pc del pool. |
| 7 | `model_data_account` | | | **Tabla de búsqueda de solo lectura.** |
| 8 | `user_source_coin` | W | | Entrada de coin del usuario. |
| 9 | `user_source_pc` | W | | Entrada de pc del usuario. |
| 10 | `user_dest_lp` | W | | ATA de LP del usuario. |
| 11 | `user_source_owner` | | S | Firmante de la transacción. |

**Compatibilidad**: `amm_open_orders` (antiguo #3) y `serum_market` (antiguo #9) se eliminan. Cuando se pasan **14** cuentas, la instrucción se analiza con la disposición antigua de 14 cuentas; las cuentas de Serum se ignoran.

**Matemáticas** — pro-rata estándar usando la tabla de búsqueda para calcular la proporción. El SDK calcula el par coin/pc para la cantidad de LP deseada y verifica contra los límites máximos.

## `Withdraw`

Quemar LP, recibir ambos lados pro-rata.

**Argumentos**

```
amount: u64            // Tokens LP a quemar
```

**Cuentas** — disposición nueva, 12 cuentas (escribible `W`, firmante `S`)

| # | Nombre | W | S | Notas |
| - | - | - | - | - |
| 0 | `token_program` | | | SPL Token. |
| 1 | `amm` | W | | `AmmInfo` del pool. |
| 2 | `amm_authority` | | | PDA de todo el programa. |
| 3 | `amm_target_orders` | W | | |
| 4 | `amm_lp_mint` | W | | Mint de LP. |
| 5 | `amm_coin_vault` | W | | Bóveda de coin del pool. |
| 6 | `amm_pc_vault` | W | | Bóveda de pc del pool. |
| 7 | `model_data_account` | | | **Tabla de búsqueda de solo lectura.** |
| 8 | `user_source_lp` | W | | Fuente de LP del usuario. |
| 9 | `user_dest_coin` | W | | Salida de coin del usuario. |
| 10 | `user_dest_pc` | W | | Salida de pc del usuario. |
| 11 | `user_lp_owner` | | S | Firmante de la transacción. |

**Compatibilidad**: nueve cuentas de Serum (`amm_open_orders`, `serum_program`, `serum_market`, `serum_coin_vault`, `serum_pc_vault`, `serum_vault_signer`, `serum_event_q`, `serum_bids`, `serum_asks`) se eliminan. Las disposiciones antiguas de **21** o **22 cuentas** aún se aceptan. Sin embargo, tenga en cuenta que la **lógica de comisión de referencia para la cuenta opcional 22ª `referrer_pc_wallet` ha sido eliminada** — aún puede pasarse pero ya no tiene efecto.

**Precondiciones**

* `user_source_lp` contiene al menos `amount`.

**Postcondiciones**

* Se queman `amount` tokens LP.
* El usuario recibe cantidades de coin y pc según la pro-rata actual, ajustadas por comisiones acumuladas.

## `SwapBaseIn`

Swap de entrada exacta usando la tabla de búsqueda para precios.

**Argumentos**

```
amount_in: u64
minimum_amount_out: u64
```

**Cuentas** — disposición nueva, 9 cuentas (escribible `W`, firmante `S`)

| # | Nombre | W | S | Notas |
| - | - | - | - | - |
| 0 | `spl_token program` | | | SPL Token. |
| 1 | `amm` | W | | `AmmInfo` del pool. |
| 2 | `amm_authority` | | | PDA de todo el programa. |
| 3 | `amm_coin_vault` | W | | Bóveda de coin del pool. |
| 4 | `amm_pc_vault` | W | | Bóveda de pc del pool. |
| 5 | `model_data_account` | | | **Tabla de búsqueda de solo lectura.** |
| 6 | `user_source_token` | W | | Cuenta de token de entrada del usuario. |
| 7 | `user_destination_token` | W | | Cuenta de token de salida del usuario. |
| 8 | `user_source_owner` | | S | Usuario (firmante de la transacción). |

**Compatibilidad**: las nueve cuentas de OpenBook (`amm_open_orders`, `serum_program`, `serum_market`, `serum_bids`, `serum_asks`, `serum_event_queue`, `serum_coin_vault`, `serum_pc_vault`, `serum_vault_signer`) se eliminan. Si el número de cuentas pasadas **no es 9**, la instrucción se analiza con la disposición antigua de **18 cuentas**; las cuentas de Serum aún deben ocupar sus posiciones, pero su contenido ya no se valida ni se utiliza.

**Precondiciones**

* `amm.status` permite swap.
* `user_source_token` contiene ≥ `amount_in`.

**Postcondiciones**

* El usuario pierde `amount_in`, gana `amount_out ≥ minimum_amount_out`.
* Las comisiones del pool incrementan los contadores `need_take_pnl_*`.

**Matemáticas** — Interpolación de tabla de búsqueda como se describe en [`products/stable/math`](/es/products/stable/math).

## `SwapBaseOut`

Swap de salida exacta (inverso de `SwapBaseIn`). Misma disposición de 9 cuentas, dirección matemática diferente.

**Argumentos**

```
max_amount_in: u64
amount_out: u64
```

## `WithdrawPnl`

Solo administrador. Recopilar comisiones de protocolo acumuladas de `need_take_pnl_*` en cuentas de PnL designadas.

<Warning>
  **Cambio importante con ruptura total — sin ruta de compatibilidad.** Esta instrucción **no** tiene análisis para la disposición antigua. Enviar la disposición antigua falla con errores de validación como `InvalidTokenCoin` debido a desalineación de cuentas (el antiguo #3 era `open_orders`). Las herramientas de administración que llaman a `WithdrawPnl` **deben** actualizarse a la nueva disposición de 10 cuentas.
</Warning>

**Argumentos** — ninguno (impulsado por estado).

**Cuentas** — disposición nueva, 10 cuentas fijas, solo administrador (escribible `W`, firmante `S`)

| # | Nombre | W | S | Notas |
| - | - | - | - | - |
| 0 | `spl_token program` | | | SPL Token. |
| 1 | `amm` | W | | `AmmInfo` del pool. |
| 2 | `amm_authority` | | | PDA de todo el programa. |
| 3 | `amm_coin_vault` | W | | Bóveda de coin del pool. |
| 4 | `amm_pc_vault` | W | | Bóveda de pc del pool. |
| 5 | `amm_target_orders` | W | | |
| 6 | `model_data` | | | Tabla de búsqueda. |
| 7 | `user_coin` | W | | Cuenta de coin del administrador (recibe comisión). |
| 8 | `user_pc` | W | | Cuenta de pc del administrador (recibe comisión). |
| 9 | `amm_admin` | | S | Administrador del pool (firmante). |

**Cambio de lógica**: cuando los fondos disponibles del pool son insuficientes para retirar el PnL acumulado, el pool **ya no** se pone en `CancelAllOrdersState` / `Disabled`; la instrucción devuelve `TakePnlError` directamente. El `referrer_pc_wallet` opcional también ha sido eliminado.

**Precondiciones**

* `amm_admin` debe estar autorizado.

**Postcondiciones**

* `need_take_pnl_coin` y `need_take_pnl_pc` se transfieren a las cuentas del administrador.
* Los contadores se ponen a cero.

## Instrucciones eliminadas

Las siguientes instrucciones fueron eliminadas en la actualización del 2026-06-22 y **ya no pueden ser llamadas**. Se documentan aquí solo para que los integradores las reconozcan en transacciones históricas y SDKs.

* **`Initialize`** — anteriormente inicializaba un nuevo pool de Stable AMM. Eliminada.
* **`PreInitialize`** — asistente de preasignación heredado. Eliminada.
* **`InitModelData`** — anteriormente creaba e inicializaba la tabla de búsqueda `ModelDataInfo`. Eliminada.
* **`UpdateModelData`** — anteriormente rellenaba hasta 5 elementos de tabla de búsqueda por llamada. Eliminada.
* **`MonitorStep`** — el crank de OpenBook que liquidaba rellenos y republicaba la cuadrícula de órdenes. Ya estaba inactivo hace mucho tiempo después de que el pool dejara de publicar en OpenBook; ahora eliminada.
* **`SetParams`** — cambios de parámetros de administrador (estado, comisiones, propietario, clave de datos del modelo, etc.). Eliminada.
* **`WithdrawSrm`** — recopilaba reembolsos de descuento de comisión SRM de pools de la era temprana de Serum. Eliminada.
* **`SimulateInfo`** — asistente de cotización de solo lectura. Eliminada; usa los asistentes de curva estable fuera de cadena del SDK para cotizaciones (consulta [Demostraciones de código](/es/products/stable/code-demos)).

## Próximos pasos

* [Cuentas](/es/products/stable/accounts) — para disposiciones y tamaños de campos de cuenta.
* [Matemáticas](/es/products/stable/math) — para la lógica de interpolación de tabla de búsqueda.
* [Demostraciones de código](/es/products/stable/code-demos) — para ver cómo llamar a estas desde el SDK.

Fuentes:

* `raydium-stable/program/src/instruction.rs` (enum y pack/unpack)
* `raydium-stable/program/src/processor.rs` (lógica de ejecución)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.