> 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/lpaccount.md).

# LpAccount (v2)

## Métodos get fuera de la cadena

### `get_lp_account_data`

Devuelve el estado actual de la `LpAccount`.

```
(slice, slice, int, int) get_lp_account_data() method_id;
```

#### **Argumentos**

Ninguno

#### **Resultado**

Devuelve `LpAccountData` estructura que contiene el estado actual de la cuenta lp.

**`LpAccountData` estructura**

| Clave          | Tipo        | Índice | Descripción                                                    |
| -------------- | ----------- | ------ | -------------------------------------------------------------- |
| `user_address` | `dirección` | 0      | Dirección del propietario                                      |
| `pool_address` | `dirección` | 1      | Dirección del pool                                             |
| `amount0`      | `coins`     | 2      | Saldo del primer token Jetton (en unidades básicas del token)  |
| `amount1`      | `coins`     | 3      | Saldo del segundo token Jetton (en unidades básicas del token) |

## Consultas en la cadena

Contrapartes en la cadena de los métodos getter.

#### **Tabla de operaciones**

| Nombre                   | Valor      | Descripción                                    |
| ------------------------ | ---------- | ---------------------------------------------- |
| `getter_lp_account_data` | 0x24cfc100 | Envía un mensaje con el estado actual del pool |

### `getter_lp_account_data` (0x24cfc100)

Envía un mensaje con el estado actual de la cuenta lp. Equivalente en la cadena de `get_lp_account_data`.

#### **TL-B**

```
getter_lp_account_data#24cfc100 query_id:uint64 = InternalMsgBody;
```

#### **Cuerpo del mensaje**

Ninguno

#### **Mensajes salientes**

Envía un mensaje con el estado actual de la cuenta lp a `sender_address`

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

| Nombre         | Tipo        | Descripción                                                    |
| -------------- | ----------- | -------------------------------------------------------------- |
| `op`           | `uint32`    | Código de operación igual a `getter_lp_account_data`           |
| `query_id`     | `uint64`    | ID de consulta                                                 |
| `user_address` | `dirección` | Dirección del propietario                                      |
| `pool_address` | `dirección` | Dirección del pool                                             |
| `amount0`      | `coins`     | Saldo del primer token Jetton (en unidades básicas del token)  |
| `amount1`      | `coins`     | Saldo del segundo token Jetton (en unidades básicas del token) |

## Manejadores de mensajes del pool

Gestiona los mensajes entrantes de un pool

#### **Tabla de operaciones**

| Nombre          | Valor      | Descripción     |
| --------------- | ---------- | --------------- |
| `add_liquidity` | 0x50c6a654 | Añadir liquidez |

### `add_liquidity` (0x50c6a654)

Almacena la cantidad de tokens enviada por el usuario para añadirla como nueva liquidez. Al recibir una cantidad apropiada de ambos tokens, envía un mensaje con esas cantidades a un pool para que se añadan como nueva liquidez. La adición automática de liquidez solo ocurre si la cantidad de ambos tokens es mayor que 1000 y distinta de cero `min_lp_out` se especificó, de lo contrario el usuario puede seguir aumentando la cantidad de tokens almacenados.

#### **TL-B**

```
add_liquidity#50c6a654 query_id:uint64 new_amount0:Coins new_amount1:Coins min_lp_out:Coins fwd_amount:Coins both_positive:uint1 to_user:MsgAddress custom_payload_cs:(Maybe ^Cell) additional_fields:^[refund_address:MsgAddress excess_address:MsgAddress] = InternalMsgBody;
```

#### **Cuerpo del mensaje**

| Nombre              | Tipo        | Descripción                                                                                            |
| ------------------- | ----------- | ------------------------------------------------------------------------------------------------------ |
| `new_amount0`       | `coins`     | Cantidad de los primeros tokens Jetton añadidos (en unidades básicas del token)                        |
| `new_amount1`       | `coins`     | Cantidad de los segundos tokens Jetton añadidos (en unidades básicas del token)                        |
| `min_lp_out`        | `coins`     | Cantidad mínima requerida de nuevos tokens de liquidez recibidos (en unidades básicas del token)       |
| `fwd_amount`        | `coins`     | Cantidad de envío utilizada para enviar `custom_payload` (si está presente) en `transfer_notification` |
| `both_positive`     | `uint1`     | Desencadena el depósito de liquidez solo si ambas cantidades de tokens son distintas de cero           |
| `to_address`        | `dirección` | Propietario de los nuevos tokens de liquidez                                                           |
| `custom_payload`    | `maybe_ref` | Carga útil enviada en `transfer_notification` al recibir tokens                                        |
| `additional_fields` | `ref`       | Ver la tabla a continuación                                                                            |

#### **additional\_fields**

| Nombre           | Tipo        | Descripción                                                                                                          |
| ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------- |
| `refund_address` | `dirección` | Dirección del propietario de `LpAccount` donde se reembolsarán los tokens si la acuñación de liquidez no fue exitosa |
| `excess_address` | `dirección` | Dirección donde 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

#### **Mensajes salientes**

Envía un mensaje al pool con `cb_add_liquidity` op

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

| Nombre            | Tipo        | Descripción                                                                                            |
| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------ |
| `op`              | `uint32`    | Código de operación, igual a `cb_add_liquidity`                                                        |
| `query_id`        | `uint64`    | ID de consulta                                                                                         |
| `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 envío utilizada para enviar `custom_payload` (si está presente) en `transfer_notification` |
| `custom_payload`  | `maybe_ref` | Carga útil enviada en `transfer_notification` al recibir tokens                                        |
| `additional_data` | `ref`       | Ver 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 la acuñación de liquidez no fue exitosa |
| `excess_address` | `dirección` | Dirección donde 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
* `LpAccount` se elimina al enviar este mensaje (`Pool` siempre envía msgs con `state_init`)

## Manejadores de mensajes del usuario

Gestiona los mensajes entrantes de un usuario

#### **Tabla de operaciones**

| Nombre                 | Valor      | Descripción                                                                                                               |
| ---------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- |
| `refund_me`            | 0x132b9a2c | Devuelve al usuario los tokens enviados previamente                                                                       |
| `direct_add_liquidity` | 0x0ff8bfc6 | Añade liquidez directamente con una cantidad especificada de tokens y una cantidad mínima de tokens de liquidez recibidos |
| `reset_gas`            | 0x29d22935 | Reiniciar gas                                                                                                             |

### `refund_me` (0x132b9a2c)

Inicia un reembolso de los tokens almacenados por `add_liquidity` si el usuario decide cancelar la adición de nueva liquidez. La cantidad de tokens almacenados se enviará al pool, que iniciará una transferencia de vuelta al usuario.

#### **TL-B**

```
refund_me#132b9a2c query_id:uint64 left_maybe_payload:(Maybe ^Cell) right_maybe_payload:(Maybe ^Cell) = InternalMsgBody;
```

#### **Cuerpo del mensaje**

Ninguno

#### **Mensajes salientes**

Envía un mensaje con `cb_refund_me` código op y la cantidad de tokens almacenados a un pool. El pool enviará un mensaje para reembolsar esos tokens al usuario.

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

| Nombre         | Tipo        | Descripción                                                                 |
| -------------- | ----------- | --------------------------------------------------------------------------- |
| `op`           | `uint32`    | Código de operación                                                         |
| `query_id`     | `uint64`    | ID de consulta                                                              |
| `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`                     |

### `direct_add_liquidity` (0x0ff8bfc6)

Inicia una adición de nueva liquidez a un pool con una cantidad especificada de ambos tokens y una cantidad mínima de liquidez recibida. La operación solo tiene éxito si hay una cantidad igual o mayor de ambos tokens almacenada en la cuenta (la cantidad de ambos tokens debe ser mayor que 1000). Este método es útil si no se ha desencadenado una adición automática de liquidez al depositar tokens.

#### **TL-B**

```
direct_add_liquidity#ff8bfc6 query_id:uint64 am0:Coins am1:Coins min_lp_out:Coins fwd_amount:Coins to_user:MsgAddress custom_payload_cs:(Maybe ^Cell) additional_fields:^[refund_address:MsgAddress excess_address:MsgAddress] = 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)                            |
| `min_lp_out`        | `coins`     | Cantidad mínima de tokens de liquidez recibidos (en unidades básicas del token)                        |
| `fwd_amount`        | `coins`     | Cantidad de envío utilizada para enviar `custom_payload` (si está presente) en `transfer_notification` |
| `to_address`        | `dirección` | Propietario de los nuevos tokens de liquidez                                                           |
| `custom_payload`    | `maybe_ref` | Carga útil enviada en `transfer_notification` al recibir tokens                                        |
| `additional_fields` | `ref`       | Ver la tabla a continuación                                                                            |

#### **additional\_data**

| Nombre           | Tipo        | Descripción                                                                                                          |
| ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------- |
| `refund_address` | `dirección` | Dirección del propietario de `LpAccount` donde se reembolsarán los tokens si la acuñación de liquidez no fue exitosa |
| `excess_address` | `dirección` | Dirección donde 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
* `min_lp_out` el valor debe ser mayor que cero para que esta operación continúe

#### **Mensajes salientes**

Envía un mensaje con `cb_add_liquidity` código op y cantidad de ambos tokens que se añadirán como nueva liquidez.

### `reset_gas` (0x29d22935)

Actualiza la cantidad de TON (en nanoTons) en la cuenta lp a `storage_fee::lp_account` (10000000) de la cuenta. El TON restante se enviará de vuelta a la `user_address`

#### **TL-B**

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

#### **Cuerpo del mensaje**

Ninguno

#### **Mensajes salientes**

Envía un mensaje vacío de vuelta al usuario con el TON restante

## Constantes

| Nombre                    | Valor   | Descripción                                                                         |
| ------------------------- | ------- | ----------------------------------------------------------------------------------- |
| `storage_fee::lp_account` | 1000000 | Cantidad de TON (en nanoTons) que se dejará en el contrato de la cuenta lp como gas |


---

# 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/lpaccount.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.
