> 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/omniston/swap/overview.md).

# Resumen (Swap)

> **💡 Enfoque recomendado**: Para la mayoría de las integraciones, recomendamos usar nuestro [SDK de Node.js](/es/seccion-para-desarrolladores/omniston/sdk/nodejs.md) o [SDK de React](/es/seccion-para-desarrolladores/omniston/sdk/react.md). Los SDKs gestionan automáticamente las conexiones WebSocket, el streaming de cotizaciones, la construcción de transacciones y el manejo de errores. La documentación a continuación es para desarrolladores que necesitan acceso de bajo nivel al protocolo o que están implementando en otros lenguajes.

### Puntos finales base de WebSocket (JSON-RPC)

**Producción:** `wss://omni-ws.ston.fi` **Sandbox:** `wss://omni-ws-sandbox.ston.fi`

Use el sandbox solo para desarrollo/pruebas.

### Método de liquidación del swap

Liquidación de la operación mediante swap directo usando contratos de terceros.

### Actores

#### Trader

Un usuario del protocolo que realiza el intercambio de tokens.

#### Resolver

Servicio que proporciona una tasa de intercambio de tokens, también conocido como `Market Maker`.

### API de WebSocket

> **Nota**: Los detalles de la API de WebSocket a continuación se proporcionan como referencia. Si está implementando una integración de bajo nivel, consulte nuestra [Guía de inicio rápido de Python](/es/seccion-para-desarrolladores/quickstart/python.md) para un ejemplo completo y funcional. También puede explorar el [repositorio SDK de código abierto](https://github.com/ston-fi/omniston-sdk) para estudiar el código real de implementación de bajo nivel.

Tipos de datos utilizados:

* **`Blockchain`**\
  Número. Código de blockchain según lo definido por SLIP-044. (<https://github.com/satoshilabs/slips/blob/master/slip-0044.md)\\>
  Para `TON`, es `607`.

> **Nota solo para TON**: Esta página utiliza el modelo de código de blockchain solo para TON. Aquí, `607` se refiere a TON en ese modelo y no forma parte del actual `chain_id` mapa. Para los identificadores cross-chain actuales, consulte [Omniston API v1beta8](/es/seccion-para-desarrolladores/omniston/v1beta8.md).

* **`Dirección`**\
  Objeto. Consta de dos campos:
* `blockchain` - blockchain del activo,
* `address` - dirección de los activos, wallets en el `Blockchain`.

Por ejemplo:

```json
{
  "blockchain": 607,
  "address": "EQA2kCVNwVsil2EM2mB0SkXytxCqQjS4mttjDpnXmwG9T6bO"
}
```

* **`Cantidad`**\
  Cadena. Cantidad de activos en unidades.
* **`SettlementMethod`**\
  Número. El método de liquidación de la operación. Valor del enum de métodos de liquidación. Actualmente, solo admite el método de `Swap` liquidación, que es `0`.
* **`Protocolo`**\\
  * **API de WebSocket** usa un código numérico:
    * `StonFiV1` = 1
    * `StonFiV2` = 2
    * `DeDust` = 3
    * `TonCo` = 4

Para uso de gRPC, consulte la [Guía de integración del Resolvedor](/es/seccion-para-desarrolladores/omniston/resolvers/guide.md).

* **`GaslessSettlement`**\\
  * **API de WebSocket** usa un código numérico:
    * `GASLESS_SETTLEMENT_PROHIBITED` = 0 — La liquidación sin gas no es compatible o está prohibida por el trader.
    * `GASLESS_SETTLEMENT_POSSIBLE` = 1 — La liquidación sin gas está permitida si el resolvedor la admite.
    * `GASLESS_SETTLEMENT_REQUIRED` = 2 — La liquidación sin gas es obligatoria.
* **`Número`**\
  Número entero.
* **`RequestSettlementParams`**\
  Objeto. Parámetros adicionales para la solicitud de cotización (RFQ):

  * `max_price_slippage_bps`: Deslizamiento máximo del precio, en puntos básicos (0.01%). Por ejemplo, 100 = 1% de deslizamiento.
  * `max_outgoing_messages`: Número máximo de mensajes salientes admitidos por la wallet. Para la blockchain de TON, el valor predeterminado es 4 si se omite.
  * `gasless_settlement`: Valor del enum GaslessSettlement que especifica la preferencia del trader para la liquidación sin gas (consulte GaslessSettlement arriba).
  * `flexible_referrer_fee`: Marca booleana que permite a los resolvedores reducir la comisión efectiva del referido por debajo de `referrer_fee_bps` cuando ello genere una mejor tasa de swap. El valor predeterminado es `false`. Consulte [Comisión flexible del referido](/es/seccion-para-desarrolladores/omniston/referral-fees.md#flexible-referrer-fee) para más detalles.

  Nota: Estos parámetros son configuraciones generales de RFQ y pueden utilizarse en diferentes métodos de liquidación. No son específicos de ningún método de liquidación en particular.
* **`SwapSettlementParams`**\
  Objeto. Parámetros de liquidación específicos del método de liquidación swap. Este tipo se usa en el campo `params` de Quote cuando el método de liquidación es swap. Contiene:

  * `routes`: Matriz de objetos `SwapRoute` que definen las posibles rutas para el swap.

  Cada `SwapRoute` consta de:

  * `steps`: Matriz de objetos `objetos SwapStep` que describen cada paso en la ruta del swap
  * `gas_budget`: Cadena que indica el presupuesto de gas para completar la transferencia

  Cada `objetos SwapStep` contiene:

  * `bid_asset_address`: Objeto Address del activo de oferta
  * `ask_asset_address`: Objeto Address del activo solicitado
  * `chunks`: Matriz de objetos `objetos SwapChunk` que describen cada paso en la ruta del swap.

  **Nota sobre Steps vs. Chunks**:

  * Un "step" transforma un activo en otro (por ejemplo, TON → USDC).
  * Cada step puede contener uno o más "chunks", cada uno representando una operación de swap individual para ese paso.
  * En la blockchain de TON, normalmente verá exactamente **uno** chunk por step. Mantenemos la posibilidad de especificar múltiples chunks en un solo step para otras blockchains, si es necesario.

  Cada `objetos SwapChunk` representa una sola operación de swap:

  * `protocol`: Protocolo usado para esta operación de swap. En esta documentación, se usan códigos numéricos para la API de WebSocket. Para uso de gRPC, consulte [Guía de integración del Resolvedor](/es/seccion-para-desarrolladores/omniston/resolvers/guide.md).
  * `bid_amount`: Cantidad del activo de oferta
  * `ask_amount`: Cantidad esperada del activo solicitado
  * `extra_version`: Actualmente, solo `1` es compatible.
  * `extra`: **Matriz de bytes** utilizada por el protocolo subyacente para coordinar el swap (codificada en base64 en JSON). Consulte [documentación de Swap Extra](/es/seccion-para-desarrolladores/omniston/swap/advanced.md)
* **`quote_id`**\
  Cadena. Identificador de 32 bytes de la cotización.

### Métodos de la API

Cada nombre de método contiene la versión de la API. La versión más reciente es `v1beta7`. Las versiones anteriores pueden ser compatibles por retrocompatibilidad.

#### Método de suscripción `quote`

Le permite crear una nueva solicitud de cotización (`RFQ`).

Cuando envía una solicitud de cotización, el servidor hará lo siguiente:

1. **Primero**, enviará inmediatamente un mensaje `QuoteRequestAck` que contiene el `rfq_id` (una cadena hex de SHA-256) que identifica de forma única su solicitud de cotización
2. **Luego**, comenzará a enviar eventos `quote_updated` de los resolvedores a medida que las cotizaciones estén disponibles

Acepta los siguientes parámetros como entrada:

| Nombre              | Tipo                    | Descripción                                                                                                                                                                                                                                                                                                                  |
| ------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| bid\_asset\_address | Dirección               | Dirección específica de la blockchain del activo de oferta.                                                                                                                                                                                                                                                                  |
| ask\_asset\_address | Dirección               | Dirección específica de la blockchain del activo solicitado.                                                                                                                                                                                                                                                                 |
| amount              | Cantidad                | <p>Ya sea la cantidad del activo de oferta o del activo solicitado:<br><code>bid\_units</code> - La cantidad del activo de oferta que el trader desea pagar, incluidas todas las comisiones.<br><code>ask\_units</code> - La cantidad del activo solicitado que el trader desea recibir después de todas las comisiones.</p> |
| referrer\_address   | Dirección               | La dirección del referido que recibirá las comisiones, o una cadena vacía si no se especifica referido.                                                                                                                                                                                                                      |
| referrer\_fee\_bps  | Número                  | La cantidad de comisiones requerida por el referido en puntos básicos (1/10000 o 0.01%)                                                                                                                                                                                                                                      |
| settlement\_methods | Array(SettlementMethod) | Métodos admitidos de liquidación del swap. El protocolo limita los métodos de liquidación en las cotizaciones a los métodos especificados. Diferentes combinaciones de cadenas de bid y ask pueden admitir distintos métodos.                                                                                                |

Ejemplo:

```json
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "v1beta7.quote",
  "params": {
    "bid_asset_address": {
      "blockchain": 607,
      "address": "EQDB8JYMzpiOxjCx7leP5nYkchF72PdbWT1LV7ym1uAedINh"
    },
    "amount": {
      "ask_units": "1000"
    },
    "ask_asset_address": {
      "blockchain": 607,
      "address": "EQCH-yP4S3nA_j7K7EIV1QIhVTWMyNJfxeYzacUH76ks2hUF"
    },
    "referrer_address": {
      "blockchain": 607,
      "address": "EQCXSs2xZ2dhk9TAxzGzXra2EbG_S2SqyN8Tfi6fJ82EYiVj"
    },
    "referrer_fee_bps": 10,
    "settlement_methods": [0],
    "settlement_params": {
      "max_price_slippage_bps": 100,
      "max_outgoing_messages": 4,
      "gasless_settlement": 1,
      "flexible_referrer_fee": false
    }
  }
}
```

> **📘 Ejemplo práctico**: Consulte el [Guía de inicio rápido de Python](/es/seccion-para-desarrolladores/quickstart/python.md) para una implementación completa que muestra cómo solicitar cotizaciones, manejar respuestas, construir transacciones y ejecutar swaps. El código de Python puede adaptarse a cualquier lenguaje de programación.

**Acuse de recibo de la solicitud de cotización**

Al recibir su RFQ, el servidor responde inmediatamente con:

| Nombre  | Tipo   | Descripción                                                |
| ------- | ------ | ---------------------------------------------------------- |
| rfq\_id | Cadena | Cadena hex de SHA-256 que identifica de forma única la RFQ |

Este acuse confirma que su solicitud fue recibida y está siendo procesada.

**Actualizaciones de cotización**

Después del acuse, el canal comenzará a recibir eventos `quote_updated` de los resolvedores, que consisten en una `quote`. Un `Quote` en el canal se actualiza si aparece una operación más rentable para el trader. La `Quote` incluye los siguientes campos:

| Nombre                      | Tipo      | Descripción                                                                                                                                                                                                                                                                                                              |
| --------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| quote\_id                   | Cadena    | ID de la cotización generado por la plataforma (32 bytes)                                                                                                                                                                                                                                                                |
| resolver\_id                | Cadena    | ID del Resolvedor                                                                                                                                                                                                                                                                                                        |
| resolver\_name              | Cadena    | Nombre del Resolvedor                                                                                                                                                                                                                                                                                                    |
| bid\_asset\_address         | Dirección | Dirección específica de la blockchain del activo de oferta.                                                                                                                                                                                                                                                              |
| ask\_asset\_address         | Dirección | Dirección específica de la blockchain del activo solicitado.                                                                                                                                                                                                                                                             |
| bid\_units                  | Cantidad  | La cantidad del activo de oferta que el trader debe pagar, incluidas todas las comisiones.                                                                                                                                                                                                                               |
| ask\_units                  | Cantidad  | La cantidad del activo solicitado que el trader recibirá después de todas las comisiones.                                                                                                                                                                                                                                |
| referrer\_address           | Dirección | La dirección del referido que recibirá las comisiones, o una cadena vacía si no se especifica referido.                                                                                                                                                                                                                  |
| referrer\_fee\_asset        | Dirección | El activo de las comisiones que recibirá el referido                                                                                                                                                                                                                                                                     |
| referrer\_fee\_units        | Número    | La cantidad de comisiones que recibirá el referido (en unidades de `referrer_fee_asset`)                                                                                                                                                                                                                                 |
| protocol\_fee\_asset        | Dirección | El activo de las comisiones cobradas por el protocolo (siempre jetton ASK)                                                                                                                                                                                                                                               |
| protocol\_fee\_units        | Número    | La cantidad de comisiones cobradas por el protocolo (en unidades de `protocol_fee_asset`, que es jetton ASK).                                                                                                                                                                                                            |
| quote\_timestamp            | Número    | La marca de tiempo (segundos UTC) de la cotización enviada por el resolvedor.                                                                                                                                                                                                                                            |
| trade\_start\_deadline      | Número    | Marca de tiempo máxima (segundos UTC) de inicio de la operación. El inicio de la operación se define como la recepción del activo de oferta por el contrato inteligente correspondiente. El resolvedor aún puede liquidar las operaciones iniciadas después de que haya pasado esta fecha límite a su propia discreción. |
| estimated\_gas\_consumption | Número    | Cantidad estimada de unidades de gas que se gastarán para realizar la operación                                                                                                                                                                                                                                          |
| params                      | Objeto    | Parámetros adicionales específicos del método de liquidación. Detalles, consulte abajo                                                                                                                                                                                                                                   |

Para `Swap` método de liquidación el `params` es:

| Nombre                        | Tipo             | Descripción                                                      |
| ----------------------------- | ---------------- | ---------------------------------------------------------------- |
| routes                        | Array(SwapRoute) | Matriz de rutas de swap                                          |
| min\_ask\_amount              | Cantidad         | Cantidad mínima a recibir (rellenada por el servicio Omniston)   |
| recommended\_min\_ask\_amount | Cantidad         | Cantidad mínima recomendada (rellenada por el servicio Omniston) |
| recommended\_slippage\_bps    | Número           | Deslizamiento recomendado en puntos básicos                      |

Objeto `SwapRoute`:

| Nombre      | Tipo            | Descripción                                                       |
| ----------- | --------------- | ----------------------------------------------------------------- |
| steps       | Array(SwapStep) | Matriz de pasos de swap                                           |
| gas\_budget | Cantidad        | La cantidad de presupuesto de gas para completar la transferencia |

Objeto `objetos SwapStep`:

| Nombre              | Tipo             | Descripción                                                  |
| ------------------- | ---------------- | ------------------------------------------------------------ |
| bid\_asset\_address | Dirección        | Dirección específica de la blockchain del activo de oferta.  |
| ask\_asset\_address | Dirección        | Dirección específica de la blockchain del activo solicitado. |
| chunks              | Array(SwapChunk) | Matriz de fragmentos de swap                                 |

Objeto `objetos SwapChunk`:

| Nombre          | Tipo      | Descripción                                                                                                                                                                                                                                            |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `protocol`      | Protocolo | Protocolo usado para esta operación de swap. En esta documentación, se usan códigos numéricos para la API de WebSocket. Para uso de gRPC, consulte [Guía de integración del Resolvedor](/es/seccion-para-desarrolladores/omniston/resolvers/guide.md). |
| `bid_amount`    | Cantidad  | La cantidad del activo de oferta que el trader debe pagar, incluidas todas las comisiones.                                                                                                                                                             |
| `ask_amount`    | Cantidad  | La cantidad esperada del activo solicitado que el trader recibirá después de todas las comisiones.                                                                                                                                                     |
| `extra_version` | Número    | Actualmente, solo `1` es compatible. Los intentos de usar cualquier otra versión serán rechazados.                                                                                                                                                     |
| `extra`         | bytes     | **Matriz de bytes** utilizada por el protocolo subyacente para coordinar el swap (codificada en base64 en JSON). Consulte [documentación de Swap Extra](/es/seccion-para-desarrolladores/omniston/swap/advanced.md)                                    |

Para más detalles sobre cómo rellenar o interpretar el `extra` campo para estos protocolos, consulte el ([documentación de Swap Extra](/es/seccion-para-desarrolladores/omniston/swap/advanced.md)).

Ejemplo:

```json
{
  "jsonrpc": "2.0",
  "method": "event",
  "params": {
    "subscription": 608688935135881,
    "result": {
      "event": {
        "quote_updated": {
          "quote_id": "98616cab2097d3f9e64e9447f2f3b736",
          "bid_asset_address": {
            "blockchain": 607,
            "address": "EQAIcb1WqNr0E7rOXgO0cbAZQnVbS06mgH2vgBvtBE6p0T2a"
          },
          "ask_asset_address": {
            "blockchain": 607,
            "address": "EQDk2VTvn04SUKJrW7rXahzdF8_Qi6utb0wj43InCu9vdjrR"
          },
          "bid_units": "100000",
          "ask_units": "33757",
          "referrer_address": {
            "blockchain": 607,
            "address": "EQCXSs2xZ2dhk9TAxzGzXra2EbG_S2SqyN8Tfi6fJ82EYiVj"
          },
          "referrer_fee_units": "0",
          "protocol_fee_units": "0",
          "quote_timestamp": 1723144166,
          "trade_start_deadline": 1723144766,
          "params": {
            "swap": {
              "routes": [
                {
                  "steps": [
                    {
                      "bid_asset_address": {
                        "blockchain": 607,
                        "address": "EQAIcb1WqNr0E7rOXgO0cbAZQnVbS06mgH2vgBvtBE6p0T2a"
                      },
                      "ask_asset_address": {
                        "blockchain": 607,
                        "address": "EQDk2VTvn04SUKJrW7rXahzdF8_Qi6utb0wj43InCu9vdjrR"
                      },
                      "chunks": [
                        {
                          "protocol": "StonFiV1",
                          "bid_amount": "100000",
                          "ask_amount": "33757",
                          "extra_version": 1,
                          "extra": "SGVsbG8sIHRoaXMgaXMgYW4gZXhhbXBsZSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgZm9yIHRoZSBleHRyYSBmaWVsZC4="
                        }
                      ]
                    }
                  ],
                  "gas_budget": "300000000"
                }
              ]
            }
          }
        }
      }
    }
  }
}
```

#### Método de suscripción `trade.track`

Método que le permite seguir el estado de un intercambio de tokens.

Acepta los siguientes parámetros como entrada:

| Nombre                  | Tipo      | Descripción                                                    |
| ----------------------- | --------- | -------------------------------------------------------------- |
| quote\_id               | Cadena    | ID de la cotización (32 bytes)                                 |
| trader\_wallet\_address | Dirección | La dirección de la wallet del trader que inició la transacción |
| outgoing\_tx\_hash      | Cadena    | Hash de la transacción que inició la operación                 |

Ejemplo:

```json
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "v1beta7.trade.track",
  "params": {
    "quote_id": "cf1f9bf159a26a7be14616da637882df",
    "trader_wallet_address": {
      "blockchain": 607,
      "address": "0QCXSs2xZ2dhk9TAxzGzXra2EbG_S2SqyN8Tfi6fJ82EYsMs"
    },
    "outgoing_tx_hash": "b35fb27b0aa9867e4072905cb967c3d08c6be8b0a66398fe08d2a72cb7c45082"
  }
}
```

El canal comenzará a recibir registros sobre el estado actual de la transferencia. Los siguientes estados están disponibles:

| Estado              | Descripción                                                                                   | Campos adicionales                                                                                                                                                                                                                                                                                                                      |
| ------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `awaiting_transfer` | Esperando a que el trader inicie la operación.                                                |                                                                                                                                                                                                                                                                                                                                         |
| `transferring`      | Se encontró la transacción inicial; esperando a que se complete la transferencia de fondos.   |                                                                                                                                                                                                                                                                                                                                         |
| `swapping`          | **(solo método SWAP)** Esperando transacciones de swap en los pools.                          | <ul><li><code>routes</code> - Información sobre el llenado parcial de la operación. Matriz de <code>RouteStatus</code>.</li></ul>                                                                                                                                                                                                       |
| `awaiting_fill`     | **(solo ESCROW / HTLC)** Esperando a que la operación se complete.                            |                                                                                                                                                                                                                                                                                                                                         |
| `claim_available`   | **(solo HTLC)** El depósito del resolvedor puede reclamarse.                                  |                                                                                                                                                                                                                                                                                                                                         |
| `refund_available`  | **(ESCROW / HTLC)** El tiempo de espera del depósito ha expirado; es necesario reembolsarlo.  |                                                                                                                                                                                                                                                                                                                                         |
| `receiving_funds`   | Se encontró la transacción con fondos entrantes; esperando a que se mine.                     | <ul><li><code>routes</code> - Información sobre el llenado parcial de la operación.</li></ul>                                                                                                                                                                                                                                           |
| `trade_settled`     | La operación ha finalizado (completamente o parcialmente completada o completamente abortada) | <p><code>result</code> - Resultado de la operación:<br>- <code>0</code> - Desconocido<br>- <code>1</code> - completamente completada<br>- <code>2</code> - parcialmente completada<br>- <code>3</code> - abortada<br><code>routes</code> - Información sobre el llenado parcial de la operación. Matriz de <code>RouteStatus</code></p> |

#### Descripciones de objetos

**RouteStatus**

* `steps` - Matriz de `StepStatus` objetos.

**StepStatus**

* `chunks` - Matriz de `ChunkStatus` objetos.

**ChunkStatus**

| Nombre               | Tipo      | Descripción                                                                                                                                                                                 |
| -------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| target\_address      | Dirección | Dirección del contrato que procesa este chunk. Generalmente, esta dirección recibe tokens de oferta. Más específicamente, podría ser la dirección de un protocolo o de un pool de liquidez. |
| bid\_units           | Cantidad  | La cantidad del activo de oferta transferida desde la wallet del trader                                                                                                                     |
| expected\_ask\_units | Cantidad  | La cantidad esperada del activo solicitado que se transferirá a la wallet del trader                                                                                                        |
| actual\_ask\_units   | Cantidad  | La cantidad real del activo solicitado transferida a la wallet del trader                                                                                                                   |
| result               | Número    | <p>Resultado del chunk:<br>- <code>0</code> - Procesando<br>- <code>1</code> - Completado<br>- <code>2</code> - Abortado</p>                                                                |
| protocol             | Protocolo | Protocolo de esta operación de swap                                                                                                                                                         |
| tx\_hash             | Cadena    | Hash de la transacción que ejecutó este chunk                                                                                                                                               |

Ejemplos:

```json
{
  "jsonrpc": "2.0",
  "method": "status",
  "params": {
    "subscription": 4374307320472544,
    "result": {
      "status": {
        "awaiting_transfer": {}
      }
    }
  }
}
```

```json
{
  "jsonrpc": "2.0",
  "method": "status",
  "params": {
    "subscription": 8556742379230871,
    "result": {
      "status": {
        "transferring": {}
      }
    }
  }
}
```

```json
{
  "jsonrpc": "2.0",
  "method": "status",
  "params": {
    "subscription": 8556742379230871,
    "result": {
      "status": {
        "trade_settled": {
          "result": 1,
          "routes": [
            {
              "steps": [
                {
                  "chunks": [
                    {
                      "target_address": {
                        "blockchain": 607,
                        "address": "EQACpXPHyLueReUMCmStesRXA77IK_ZAhHnLKAsQ5MjMUliK"
                      },
                      "bid_units": "1000000",
                      "expected_ask_units": "3379",
                      "actual_ask_units": "3378",
                      "result": 1,
                      "protocol": "StonFiV1",
                      "tx_hash": "97c06867d0e891369fa0f621e0b7d549c888af8f34e4bde6752d580c6da508c2"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    }
  }
}
```

#### Método `transaction.build_transfer`

Una solicitud para generar una transferencia sin firmar para iniciar la operación.

Acepta los siguientes parámetros como entrada:

| Nombre                     | Tipo      | Descripción                                                                                                                                                                                                            |
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| source\_address            | Dirección | La dirección en bid\_blockchain que enviará la transacción inicial para iniciar la operación                                                                                                                           |
| destination\_address       | Dirección | La dirección en ask\_blockchain que recibirá el resultado de la operación                                                                                                                                              |
| gas\_excess\_address       | Dirección | La dirección que recibirá el gas no gastado por la operación                                                                                                                                                           |
| refund\_address            | Dirección | (Opcional) La dirección a la que deben devolverse los fondos si la transacción falla. Si no se especifica, los fondos se devuelven a la wallet del remitente. Actualmente solo funciona para swaps a través de STON.fi |
| quote                      | Quote     | La cotización válida recibida de `quote` subscription                                                                                                                                                                  |
| use\_recommended\_slippage | Booleano  | Usar el deslizamiento recomendado por Omniston en lugar del deslizamiento proporcionado por el trader                                                                                                                  |

Ejemplo:

```json
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "v1beta7.transaction.build_transfer",
  "params": {
    "source_address": {
      "blockchain": 607,
      "address": "0:02a573c7c8bb9e45e50c0a64ad7ac45703bec82bf6408479cb280b10e4c8cc52"
    },
    "destination_address": {
      "blockchain": 607,
      "address": "0:02a573c7c8bb9e45e50c0a64ad7ac45703bec82bf6408479cb280b10e4c8cc52"
    },
    "gas_excess_address": {
      "blockchain": 607,
      "address": "0:02a573c7c8bb9e45e50c0a64ad7ac45703bec82bf6408479cb280b10e4c8cc52"
    },
    "refund_address": {
      "blockchain": 607,
      "address": "0:02a573c7c8bb9e45e50c0a64ad7ac45703bec82bf6408479cb280b10e4c8cc52"
    },
    "quote": {
      "quote_id": "3d1d9ad4656f883ce63cb80c67b8698c",
      "bid_asset_address": {
        "blockchain": 607,
        "address": "EQAIcb1WqNr0E7rOXgO0cbAZQnVbS06mgH2vgBvtBE6p0T2a"
      },
      "ask_asset_address": {
        "blockchain": 607,
        "address": "EQDk2VTvn04SUKJrW7rXahzdF8_Qi6utb0wj43InCu9vdjrR"
      },
      "bid_units": "100000000",
      "ask_units": "33787874",
      "referrer_address": "",
      "referrer_fee_units": "0",
      "protocol_fee_units": "0",
      "quote_timestamp": 1723146414,
      "trade_start_deadline": 1723144766,
      "params": {
        "swap": {
          "routes": [
            {
              "steps": [
                {
                  "bid_asset_address": {
                    "blockchain": 607,
                    "address": "EQAIcb1WqNr0E7rOXgO0cbAZQnVbS06mgH2vgBvtBE6p0T2a"
                  },
                  "ask_asset_address": {
                    "blockchain": 607,
                    "address": "EQDk2VTvn04SUKJrW7rXahzdF8_Qi6utb0wj43InCu9vdjrR"
                  },
                  "chunks": [
                    {
                      "protocol": 0,
                      "bid_amount": "100000",
                      "ask_amount": "33757",
                      "extra": "SGVsbG8sIHRoaXMgaXMgYW4gZXhhbXBsZSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgZm9yIHRoZSBleHRyYSBmaWVsZC4=",
                      "extra_version": 1
                    }
                  ]
                }
              ],
              "gas_budget": "300000000"
            }
          ]
        }
      }
    }
  }
}
```

La respuesta contiene un `ton` objeto con los datos de la transacción específicos de la blockchain:

| Nombre       | Tipo           | Descripción                                      |
| ------------ | -------------- | ------------------------------------------------ |
| ton          | Objeto         | Contiene datos de transacción específicos de TON |
| ton.messages | Array(Message) | Matriz de mensajes que se enviarán               |

Cada `Message` el objeto contiene:

| Nombre          | Tipo   | Descripción                                                    |
| --------------- | ------ | -------------------------------------------------------------- |
| target\_address | Cadena | La dirección del destinatario                                  |
| send\_amount    | Cadena | Cantidad en nanotons a enviar como valor adjunto               |
| payload         | Cadena | Datos de la transacción codificados en hexadecimal o en base64 |

```json
{
  "jsonrpc": "2.0",
  "result": {
    "ton": {
      "messages": [
        {
          "target_address": "EQCJ7SWUt1weFuOCN32XNzT6dOM2stAe2LZZtOelF0hyoIRv",
          "send_amount": "300000000",
          "payload": "b5ee9c7241010201008800016d0f8a7ea5e63cb80c67b8698c405f5e1008013d9e00e89901bff71ffe5d1c1c92610888072c54e8fa27242807d7c6976a36ac103b9aca0301009725938561801af7bf08bea0d52dcdcf23d2c039f33a4184f23406bf0351e922a6bf6431e78ba803d391610000a95cf1f22ee791794302992b5eb115c0efb20afd90211e72ca02c43932331490056baf1e"
        }
      ]
    }
  },
  "id": 3
}
```

***

## Próximos pasos

Elige tu ruta de integración según tus necesidades:

| Si quieres...                                     | Usa esto                                                                                                        |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Construir una **aplicación frontend** rápidamente | [SDK de React](/es/seccion-para-desarrolladores/omniston/sdk/react.md) - Hooks listos para usar                 |
| Construir una **servicio backend** o bot          | [SDK de Node.js](/es/seccion-para-desarrolladores/omniston/sdk/nodejs.md) - Compatibilidad total con TypeScript |
| Implementar en **Python** u otro lenguaje         | [Inicio rápido de Python](/es/seccion-para-desarrolladores/quickstart/python.md) - Adáptalo a tu lenguaje       |
| Estudia la **implementación de bajo nivel**       | [Código fuente del SDK](https://github.com/ston-fi/omniston-sdk) - Referencia de código abierto                 |
| Entender el **protocolo en profundidad**          | Sigue leyendo arriba y [Funciones avanzadas](/es/seccion-para-desarrolladores/omniston/swap/advanced.md)        |
| Usa **gRPC de alto rendimiento**                  | [Integración gRPC](/es/seccion-para-desarrolladores/omniston/swap/grpc.md)                                      |

### Inicio rápido del SDK

```bash
# Node.js
npm install @ston-fi/omniston-sdk

# React
npm install @ston-fi/omniston-sdk-react
```

Consulta la [documentación del SDK](/es/seccion-para-desarrolladores/omniston/sdk.md) para ver ejemplos completos y la referencia de la API.

> **💡 Código abierto**: Nuestros SDK son totalmente de código abierto en [github.com/ston-fi/omniston-sdk](https://github.com/ston-fi/omniston-sdk). Puedes estudiar la implementación, contribuir con mejoras o usarlo como referencia para crear integraciones en otros idiomas.


---

# 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:

```
GET https://docs.ston.fi/es/seccion-para-desarrolladores/omniston/swap/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
