> For the complete documentation index, see [llms.txt](https://docs.ston.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ston.fi/es/seccion-para-desarrolladores/dex/smart-contracts/v2/pool.md).

# Pool (v2)

## Métodos get fuera de la cadena

### `get_pool_data`

Devuelve el estado actual de la `Pool`

```
_ get_pool_data() method_id;
```

#### **Argumentos**

`Ninguno`

#### **Resultado (común)**

Devuelve `PoolData` estructura que contiene el estado actual del pool. Los pools tipados pueden devolver argumentos adicionales si están presentes

**`PoolData` estructura**

| Clave                           | Tipo        | Índice | Descripción                                                                                      |
| ------------------------------- | ----------- | ------ | ------------------------------------------------------------------------------------------------ |
| `is_locked`                     | `bool`      | 0      | true si `transfer_notification` las operaciones están bloqueadas (`swap`, `provide_lp`)          |
| `router_address`                | `dirección` | 1      | Dirección de la `Enrutador`                                                                      |
| `total_supply`                  | `coins`     | 2      | Suministro total de tokens LP                                                                    |
| `reserve0`                      | `coins`     | 3      | Cantidad del primer token (en unidades básicas del token)                                        |
| `reserve1`                      | `coins`     | 4      | Cantidad del segundo token (en unidades básicas del token)                                       |
| `token0_wallet_address`         | `dirección` | 5      | Dirección del primer token Jetton                                                                |
| `token1_wallet_address`         | `dirección` | 6      | Dirección del segundo token Jetton                                                               |
| `lp_fee`                        | `uint16`    | 7      | Valor de la comisión del pool de liquidez                                                        |
| `protocol_fee`                  | `uint16`    | 8      | Comisión del protocolo                                                                           |
| `protocol_fee_address`          | `dirección` | 9      | Dirección para recibir las comisiones del protocolo                                              |
| `collected_token0_protocol_fee` | `coins`     | 10     | Cantidad de comisiones de protocolo acumuladas del primer token (en unidades básicas del token)  |
| `collected_token1_protocol_fee` | `coins`     | 11     | Cantidad de comisiones de protocolo acumuladas del segundo token (en unidades básicas del token) |

Notas:

* la proporción de la comisión es el valor de la comisión dividido por `params::fee_divider` (10000); por lo tanto, una comisión del 1% tiene un valor de 100

#### **Resultado (`stableswap`)**

Datos adicionales en `PoolData` estructura específica para pools stableswap

**`PoolData` estructura de parámetros adicionales**

| Clave | Tipo     | Índice | Descripción                              |
| ----- | -------- | ------ | ---------------------------------------- |
| `amp` | `uint32` | 12     | Parámetro de amplificación de Stableswap |

#### **Resultado (`weighted_stableswap`)**

Datos adicionales en `PoolData` estructura específica para pools weighted stableswap

**`PoolData` estructura de parámetros adicionales**

| Clave         | Tipo        | Índice | Descripción                                       |
| ------------- | ----------- | ------ | ------------------------------------------------- |
| `amp`         | `uint128`   | 12     | Parámetro de amplificación de weighted stableswap |
| `rate`        | `uint128`   | 13     | Parámetro de relación de tokens estables          |
| `w0`          | `uint128`   | 14     | Parámetro de peso del token 0                     |
| `rate_setter` | `dirección` | 15     | Dirección con derechos para cambiar `rate`        |

#### **Resultado (`weighted_const_product`)**

Datos adicionales en `PoolData` estructura específica para pools weighted constant product

**`PoolData` estructura de parámetros adicionales**

| Clave | Tipo      | Índice | Descripción                   |
| ----- | --------- | ------ | ----------------------------- |
| `w0`  | `uint128` | 12     | Parámetro de peso del token 0 |

### `get_lp_account_address`

Obtiene la dirección de la cuenta LP de un usuario

```
slice get_lp_account_address(slice owner_address) method_id;
```

#### **Argumentos**

| Clave           | Tipo        | Descripción             |
| --------------- | ----------- | ----------------------- |
| `owner_address` | `dirección` | Dirección de un usuario |

#### **Resultado**

Devuelve la dirección de la cuenta LP de un usuario

### `get_jetton_data`

Métodos estándar 'get' de jetton de TonWeb JettonMinter.

```
(int, int, slice, cell, cell) get_jetton_data() method_id;
```

#### **Argumentos**

Ninguno

#### **Resultado**

Devuelve una estructura con los datos de Jetton

**`JettonData` estructura**

| Clave                | Tipo        | Índice | Descripción                                                       |
| -------------------- | ----------- | ------ | ----------------------------------------------------------------- |
| `total_supply`       | `coins`     | 0      | Suministro total de tokens del LP (en unidades básicas del token) |
| `mintable`           | `bool`      | 1      | siempre `true`                                                    |
| `admin_address`      | `dirección` | 2      | `Enrutador` dirección                                             |
| `jetton_content_uri` | `string`    | 3      | URI fuera de la cadena con datos de Jetton                        |
| `jetton_wallet_code` | `cell`      | 4      | Código de la billetera Jetton LP                                  |

### `get_wallet_address`

Obtiene la dirección de la wallet LP de un usuario.

```
slice get_wallet_address(slice owner_address) method_id;
```

#### **Argumentos**

| Nombre          | Tipo        | Descripción             |
| --------------- | ----------- | ----------------------- |
| `owner_address` | `dirección` | Dirección de un usuario |

#### **Resultado**

Devuelve la dirección calculada de la wallet LP de un usuario

### `get_pool_type`

Obtiene `Pool` tipo, igual a `dex_type` parámetro en `get_router_data`

```
_ get_pool_type() method_id;
```

#### **Argumentos**

Ninguno

#### **Resultado**

Devuelve el tipo de pool de este pool como cadena:

* `constant_product`
* `stableswap`
* `weighted_stableswap`
* `weighted_const_product`

## Consultas en la cadena

Contrapartes en la cadena de los métodos getter.

#### **Tabla de operaciones**

| Nombre                      | Valor      | Descripción                                                     |
| --------------------------- | ---------- | --------------------------------------------------------------- |
| `getter_pool_data`          | 0x26df39fc | Envía un mensaje con el estado actual del pool                  |
| `getter_lp_account_address` | 0x15fbca95 | Envía un mensaje con la dirección de la cuenta LP de un usuario |
| `provide_wallet_address`    | 0x2c76b973 | Envía un mensaje con la dirección de la wallet LP de un usuario |

### `getter_pool_data` (0x26df39fc)

Envía un mensaje con el estado actual del pool. Equivalente en cadena de `get_pool_data`.

#### **TL-B**

```
getter_pool_data#26df39fc query_id:uint64 = InternalMsgBody;
```

#### **Cuerpo del mensaje**

Ninguno

#### **Mensajes salientes**

Envía un mensaje con los datos actuales del pool a la `sender_address`

#### **Cuerpo del mensaje de respuesta**

| Nombre            | Tipo        | Descripción                                                |
| ----------------- | ----------- | ---------------------------------------------------------- |
| `op`              | `uint32`    | El código de operación es igual a `getter_pool_data`       |
| `query_id`        | `uint64`    | ID de consulta                                             |
| `is_locked`       | `uint1`     | Si este `Pool` está bloqueado                              |
| `reserve0`        | `coins`     | Cantidad del primer token (en unidades básicas del token)  |
| `reserve1`        | `coins`     | Cantidad del segundo token (en unidades básicas del token) |
| `token0_address`  | `dirección` | Dirección del primer token Jetton                          |
| `token1_address`  | `dirección` | Dirección del segundo token Jetton                         |
| `additional_data` | `cell`      | Celda con datos adicionales                                |

#### **`additional_data` body**

| Nombre                          | Tipo        | Descripción                                                                                      |
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------ |
| `lp_fee`                        | `uint16`    | Valor de la comisión del pool de liquidez                                                        |
| `protocol_fee`                  | `uint16`    | Comisión del protocolo                                                                           |
| `router_address`                | `dirección` | Dirección de la `Enrutador`                                                                      |
| `protocol_fee_address`          | `dirección` | Dirección para recibir las comisiones del protocolo                                              |
| `total_supply`                  | `coins`     | Cantidad total de tokens LP acuñados                                                             |
| `collected_token0_protocol_fee` | `coins`     | Cantidad de comisiones de protocolo acumuladas del primer token (en unidades básicas del token)  |
| `collected_token1_protocol_fee` | `coins`     | Cantidad de comisiones de protocolo acumuladas del segundo token (en unidades básicas del token) |

### `getter_lp_account_address` (0x15fbca95)

Envía un mensaje con la dirección de la cuenta LP de un usuario. Equivalente en cadena de `get_lp_account_address`.

#### **TL-B**

```
getter_lp_account_address#15fbca95 query_id:uint64 user_address:MsgAddress = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre         | Tipo        | Descripción             |
| -------------- | ----------- | ----------------------- |
| `user_address` | `dirección` | Dirección de un usuario |

#### **Mensajes salientes**

Envía un mensaje con la dirección de la cuenta LP de un usuario a `sender_address`

#### **Cuerpo del mensaje de respuesta**

| Nombre               | Tipo        | Descripción                                                 |
| -------------------- | ----------- | ----------------------------------------------------------- |
| `op`                 | `uint32`    | El código de operación es igual a `getter_expected_outputs` |
| `query_id`           | `uint64`    | ID de consulta                                              |
| `lp_account_address` | `dirección` | dirección de la cuenta LP de un usuario                     |

### `provide_wallet_address` (0x2c76b973)

Envía un mensaje con la dirección de la wallet LP de un usuario. Equivalente en cadena de `get_wallet_address`.

#### **TL-B**

```
provide_wallet_address#2c76b973 query_id:uint64 owner_address:MsgAddress include_address?:Bool = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre             | Tipo        | Descripción                                                 |
| ------------------ | ----------- | ----------------------------------------------------------- |
| `owner_address`    | `dirección` | Dirección de un usuario                                     |
| `include_address?` | `uint1`     | Incluye la dirección del usuario en el mensaje de respuesta |

#### **Mensajes salientes**

Envía un mensaje de vuelta al remitente con la dirección calculada de la wallet LP de un usuario

#### **Cuerpo del mensaje de respuesta**

| Nombre              | Tipo        | Descripción                                                          |
| ------------------- | ----------- | -------------------------------------------------------------------- |
| `op`                | `uint32`    | El código de operación es igual a `take_wallet_address` (0xd1735400) |
| `query_id`          | `uint64`    | ID de consulta                                                       |
| `lp_wallet_address` | `dirección` | Dirección calculada de la wallet LP                                  |
| `additional_data`   | `maybe_ref` | Celda con datos si `include_address?` se evalúa a `true`             |

#### **`additional_data` body**

| Nombre             | Tipo        | Descripción             |
| ------------------ | ----------- | ----------------------- |
| `included_address` | `dirección` | Dirección de un usuario |

## Manejadores de Jetton

Gestiona las operaciones enviadas desde una wallet Jetton.

#### **Tabla de operaciones**

| Nombre                  | Valor      | Descripción                                                                 |
| ----------------------- | ---------- | --------------------------------------------------------------------------- |
| `burn_notification_ext` | 0x297437cf | Enviado por la wallet LP después de quemar jettons LP para liberar liquidez |

### `burn_notification_ext` (0x297437cf)

Enviado por `LpWallet` después de quemar jettons LP para liberar liquidez.

#### **TL-B**

```
burn_notification_ext#297437cf query_id:uint64 jetton_amount:Coins from_address:MsgAddress response_address:MsgAddress maybe_custom_payload:(Maybe ^Cell) = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre             | Tipo        | Descripción                                                             |
| ------------------ | ----------- | ----------------------------------------------------------------------- |
| `jetton_amount`    | `coins`     | Cantidad de tokens de liquidez a quemar (en unidades básicas del token) |
| `from_address`     | `dirección` | Dirección del usuario                                                   |
| `response_address` | `dirección` | Dirección para un mensaje de respuesta                                  |
| `custom_payloads`  | `maybe_ref` | Cargas útiles para token0 y token1                                      |

#### **custom\_payloads**

| Nombre      | Tipo        | Descripción                                             |
| ----------- | ----------- | ------------------------------------------------------- |
| `payload_1` | `maybe_ref` | Carga útil usada para `amount0`; puede ser `cross_swap` |
| `payload_2` | `maybe_ref` | Carga útil usada para `amount1`; puede ser `cross_swap` |

#### **Mensajes salientes**

Envía un mensaje con op `excesses` (0xd53276db) a `response_address`

Envía un mensaje con una cantidad liberada de ambos tokens para que el usuario la reciba como resultado de la operación de quema al router, que inicia `pay_to` operación a `from_address`

## Manejadores de mensajes internos del router

Gestiona mensajes del router.

#### **Tabla de operaciones**

| Nombre       | Valor      | Descripción                              |
| ------------ | ---------- | ---------------------------------------- |
| `swap`       | 0x6664de2a | Intercambiar tokens                      |
| `provide_lp` | 0x37c096df | Proporcionar liquidez                    |
| `reset_gas`  | 0x29d22935 | Reiniciar gas                            |
| `set_fees`   | 0x58274069 | Establecer nuevos parámetros de comisión |

### `swap` (0x6664de2a)

Intercambia tokens. Este mensaje se recibe del router cuando el usuario inicia un intercambio de tokens.

#### **TL-B**

```
swap#6664de2a query_id:uint64 from_user:MsgAddress left_amount:Coins right_amount:Coins dex_payload:^[transferred_op:uint32 token_wallet1:MsgAddress refund_address:MsgAddress excesses_address:MsgAddress tx_deadline:uint64 swap_body:^[min_out:Coins receiver:MsgAddress fwd_gas:Coins custom_payload:(Maybe ^Cell) refund_fwd_gas:Coins refund_payload:(Maybe ^Cell) ref_fee:uint16 ref_address:MsgAddress]] = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre      | Tipo        | Descripción                         |
| ----------- | ----------- | ----------------------------------- |
| `from_user` | `dirección` | Dirección del usuario               |
| `amount0`   | `coins`     | Cantidad del primer token entrante  |
| `amount1`   | `coins`     | Cantidad del segundo token entrante |
| `payload`   | `cell`      | Celda con el payload del DEX        |

#### **`payload` body**

| Nombre               | Tipo        | Descripción                                                        |
| -------------------- | ----------- | ------------------------------------------------------------------ |
| `op`                 | `uint32`    | Op de intercambio                                                  |
| `other_token_wallet` | `dirección` | Dirección de la otra `Enrutador`wallet del token                   |
| `refund_address`     | `dirección` | Dirección a la que se enviará el reembolso si el intercambio falla |
| `excesses_address`   | `dirección` | Dirección a la que se enviarán los excesos de TON                  |
| `additional_data`    | `cell`      | Celda con datos adicionales                                        |

#### **`additional_data` body**

| Nombre             | Tipo        | Descripción                                                                                                             |
| ------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------- |
| `min_out`          | `coins`     | Cantidad mínima requerida de tokens a recibir                                                                           |
| `receiver_address` | `dirección` | Dirección a la que se enviarán los tokens después del intercambio                                                       |
| `fwd_gas`          | `coins`     | Gas usado para reenviar un mensaje en `transfer_notification` después del intercambio si `custom_payload` está presente |
| `custom_payload`   | `maybe_ref` | Payload enviado en `transfer_notification` después del intercambio                                                      |
| `refund_fwd_gas`   | `coins`     | Gas usado para reenviar un mensaje en `transfer_notification` si el intercambio falla si `refund_payload` está presente |
| `refund_payload`   | `maybe_ref` | Payload enviado en `transfer_notification` si el intercambio falla                                                      |
| `ref_fee`          | `uint16`    | Comisión de referencia                                                                                                  |
| `referral_address` | `dirección` | Dirección de referencia                                                                                                 |

Notas:

* el intercambio fallará si un usuario debe recibir menos de `min_out` de tokens como resultado
* el valor máximo permitido de `ref_fee` es 100 (1%)

#### **Mensajes salientes**

Envía un mensaje con una cantidad de los otros tokens a recibir por un usuario como resultado del intercambio al router, que inicia `pay_to` operación

Además, puede enviar un mensaje con las comisiones de referido al router, que inicia `pay_vault` operación a `Bóveda` de `referral_address`

### `provide_lp` (0x37c096df)

Proporciona liquidez al pool. Un usuario debe enviar una cantidad de ambos tokens para recibir tokens LP y agregar nueva liquidez a un pool. Este mensaje se enruta a la cuenta del pool de liquidez con `add_liquidity` código de operación.

#### **TL-B**

```
provide_lp#37c096df query_id:uint64 from_user:MsgAddress left_amount:Coins right_amount:Coins dex_payload:^[transferred_op:uint32 token_wallet1:MsgAddress refund_address:MsgAddress excesses_address:MsgAddress tx_deadline:uint64 provide_lp_body:^[min_lp_out:Coins to_address:MsgAddress both_positive:uint1 fwd_amount:Coins custom_payload:(Maybe ^Cell)]] = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre      | Tipo        | Descripción                         |
| ----------- | ----------- | ----------------------------------- |
| `from_user` | `dirección` | Dirección del usuario               |
| `amount0`   | `coins`     | Cantidad del primer token entrante  |
| `amount1`   | `coins`     | Cantidad del segundo token entrante |
| `payload`   | `cell`      | Celda con el payload del DEX        |

#### **`payload` body**

| Nombre               | Tipo        | Descripción                                                        |
| -------------------- | ----------- | ------------------------------------------------------------------ |
| `op`                 | `uint32`    | Op de provide LP                                                   |
| `other_token_wallet` | `dirección` | Dirección de la otra `Enrutador` wallet del token                  |
| `refund_address`     | `dirección` | Dirección a la que se enviará el reembolso si el intercambio falla |
| `excesses_address`   | `dirección` | Dirección a la que se enviarán los excesos de TON                  |
| `additional_data`    | `cell`      | Celda con datos adicionales                                        |

#### **`additional_data` body**

| Nombre             | Tipo        | Descripción                                                                                                       |
| ------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------- |
| `min_lp_out`       | `coins`     | Cantidad mínima requerida de tokens LP a recibir                                                                  |
| `receiver_address` | `dirección` | Dirección a la que se enviarán los tokens LP                                                                      |
| `both_positive`    | `uint1`     | Disparar el depósito de liquidez solo si ambas cantidades de tokens no son cero                                   |
| `fwd_gas`          | `coins`     | Gas usado para reenviar un mensaje en `transfer_notification` después de acuñar si `custom_payload` está presente |
| `custom_payload`   | `maybe_ref` | Payload enviado en `transfer_notification` después de acuñar LP                                                   |

#### **Mensajes salientes**

Envía un mensaje a la cuenta del pool de liquidez con `add_liquidity` código de operación.

### `reset_gas` (0x29d22935)

Actualiza la cantidad de TON (en nanoTONs) en el pool a `storage_fee::pool` (10000000) del pool. La cantidad restante de TON se enviará a `excesses_address`.

#### **TL-B**

```
reset_gas#29d22935 query_id:uint64 = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre             | Tipo        | Descripción                                    |
| ------------------ | ----------- | ---------------------------------------------- |
| `excesses_address` | `dirección` | Dirección a la que se enviará el TON excedente |

#### **Mensajes salientes**

Envía un mensaje a `excesses_address` con el TON restante

### `internal_set_fees` (0x75930d63)

Establece nuevos valores de comisión, incluidas las comisiones del pool de liquidez, las comisiones del protocolo y las comisiones de referido, así como una dirección para recibir las comisiones del protocolo cobradas.

#### **TL-B**

```
internal_set_fees#75930d63 query_id:uint64 new_lp_fee:uint16 new_protocol_fee:uint16 new_protocol_fee_address:MsgAddress excesses_address:MsgAddress = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre                     | Tipo        | Descripción                                                                           |
| -------------------------- | ----------- | ------------------------------------------------------------------------------------- |
| `new_lp_fee`               | `uint16`    | Nuevo ratio de comisión del pool de liquidez (multiplicado por `params::fee_divider`) |
| `new_protocol_fee`         | `uint16`    | Nuevo ratio de comisión del protocolo (multiplicado por `params::fee_divider`)        |
| `new_protocol_fee_address` | `dirección` | Dirección para recibir las comisiones del protocolo                                   |
| `excesses_address`         | `dirección` | Dirección a la que se enviarán los excesos de TON                                     |

Notas:

* la proporción de la comisión es el valor de la comisión dividido por `params::fee_divider` (10000); así que para fijar una comisión del 1% el valor debe ser 100
* las comisiones deben estar entre `params::min_fee` (0) y `params::max_fee` (100)

#### **Mensajes salientes**

Envía un mensaje a `excesses_address` con el TON restante

***

## Manejadores de mensajes internos de la dirección del protocolo

Gestiona mensajes del `protocol_fee_address`.

#### **Tabla de operaciones**

| Nombre         | Valor      | Descripción       |
| -------------- | ---------- | ----------------- |
| `collect_fees` | 0x1ee4911e | Cobrar comisiones |

### `collect_fees` (0x1ee4911e)

Cobrar comisiones del protocolo. La cantidad de comisiones en ambos tokens se enviará a `protocol_fee_address` dirección.

#### **TL-B**

```
collect_fees#1ee4911e query_id:uint64 maybe_payload0:(Maybe ^Cell) maybe_payload1:(Maybe ^Cell) = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre      | Tipo        | Descripción                                             |
| ----------- | ----------- | ------------------------------------------------------- |
| `payload_0` | `maybe_ref` | Carga útil usada para `amount0`; puede ser `cross_swap` |
| `payload_1` | `maybe_ref` | Carga útil usada para `amount1`; puede ser `cross_swap` |

#### **Mensajes salientes**

Envía un mensaje con las comisiones cobradas en ambos tokens al router, que inicia `pay_to` operación a `protocol_fee_address`.

## Manejadores de mensajes internos de la cuenta LP

Gestiona mensajes de una cuenta LP.

#### **Tabla de operaciones**

| Nombre             | Valor      | Descripción                                                      |
| ------------------ | ---------- | ---------------------------------------------------------------- |
| `cb_add_liquidity` | 0x06ecd527 | Enviado por la cuenta LP del usuario después de agregar liquidez |
| `cb_refund_me`     | 0x0f98e2b8 | Enviado por la cuenta LP del usuario después de agregar liquidez |

### `cb_add_liquidity` (0x06ecd527)

Añade nueva liquidez al pool. Enviado por la cuenta LP del usuario después de que se envíen al usuario cantidades de uno o ambos tokens. La liquidez añadida resultante debe ser mayor que `min_lp_out` para que la operación tenga éxito.

#### **TL-B**

```
cb_add_liquidity#6ecd527 query_id:uint64 tot_am0:Coins tot_am1:Coins user_address:MsgAddress min_lp_out:Coins fwd_amount:Coins custom_payload_cs:(Maybe ^Cell) additional_fields:^[to_user_address:MsgAddress refund_address:MsgAddress excess_address:MsgAddress] = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre            | Tipo        | Descripción                                                                                          |
| ----------------- | ----------- | ---------------------------------------------------------------------------------------------------- |
| `amount0`         | `coins`     | Cantidad de los primeros tokens Jetton añadidos (en unidades básicas del token)                      |
| `amount1`         | `coins`     | Cantidad de los segundos tokens Jetton añadidos (en unidades básicas del token)                      |
| `user_address`    | `dirección` | Dirección del propietario                                                                            |
| `min_lp_out`      | `coins`     | Cantidad mínima de tokens de liquidez recibidos (en unidades básicas del token)                      |
| `fwd_amount`      | `coins`     | Cantidad de reenvío usada para enviar `custom_payload` (si está presente) en `transfer_notification` |
| `custom_payload`  | `maybe_ref` | Payload enviado en `transfer_notification` al recibir tokens                                         |
| `additional_data` | `ref`       | Consulta la tabla a continuación                                                                     |

#### **additional\_data**

| Nombre           | Tipo        | Descripción                                                                                                       |
| ---------------- | ----------- | ----------------------------------------------------------------------------------------------------------------- |
| `to_address`     | `dirección` | Propietario de los nuevos tokens de liquidez                                                                      |
| `refund_address` | `dirección` | Dirección del propietario de `LpAccount` donde se reembolsarán los tokens si el acuñado de liquidez no tuvo éxito |
| `excess_address` | `dirección` | Dirección a la que se enviarán todos los excesos de TON                                                           |

Notas:

* la adición de liquidez fallará si un usuario debe recibir menos de `min_lp_out` tokens LP como resultado
* no se puede agregar liquidez si el suministro de cualquiera de los tokens llega a ser mayor que `MAX_COINS` (2^120 - 1)

#### **Mensajes salientes**

Envía un mensaje con `internal_transfer` código de operación (0x178d4519) a la wallet LP de `to_address` con tokens de liquidez acuñados

### `cb_refund_me` (0x0f98e2b8)

Enviado por la cuenta LP del usuario después de que un usuario inicia `refund_me` operación para cancelar la adición de nueva liquidez. La cantidad de tokens almacenados previamente se enviará de vuelta al usuario.

#### **TL-B**

```
cb_refund_me#f98e2b8 query_id:uint64 tot_am0:Coins tot_am1:Coins user_address:MsgAddress left_maybe_payload:(Maybe ^Cell) right_maybe_payload:(Maybe ^Cell) = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre         | Tipo        | Descripción                                                                 |
| -------------- | ----------- | --------------------------------------------------------------------------- |
| `amount0`      | `coins`     | Cantidad de tokens Jetton del primer token (en unidades básicas del token)  |
| `amount1`      | `coins`     | Cantidad de tokens Jetton del segundo token (en unidades básicas del token) |
| `user_address` | `dirección` | Dirección del propietario                                                   |
| `payload_0`    | `maybe_ref` | Carga útil usada para `amount0`; puede ser `cross_swap`                     |
| `payload_1`    | `maybe_ref` | Carga útil usada para `amount1`; puede ser `cross_swap`                     |

#### **Mensajes salientes**

Envía un mensaje con `amount0` del primer token y `amount1` del segundo token al router, que inicia `pay_to` operación

***

## Constantes

| Nombre                              | Valor     | Descripción                                                                         |
| ----------------------------------- | --------- | ----------------------------------------------------------------------------------- |
| `storage_fee::pool`                 | 10000000  | Cantidad de TON (en nanoTONs) que se dejará en el contrato del pool como gas        |
| `params::required_min_liquidity`    | 1001      | Cantidad mínima de liquidez requerida                                               |
| `MAX_COINS`                         | 2^120 - 1 | Cantidad máxima de tokens (en unidades básicas del token) almacenados como liquidez |
| `gas::pool::provide_wallet_address` | 20000000  | Gas adicional (en nanoTONs) para proporcionar una wallet                            |
| `params::fee_divider`               | 10000     | Los valores de las comisiones se dividen por este valor                             |
| `params::min_fee`                   | 0         | Comisión mínima permitida (0%)                                                      |
| `params::max_fee`                   | 100       | Comisión máxima permitida (1%)                                                      |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ston.fi/es/seccion-para-desarrolladores/dex/smart-contracts/v2/pool.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
