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

# Intercambio de Monedas en Unity

Cambiar entre diferentes monedas ERC20 o tokens nativos en una cadena determinada es sencillo gracias al Smart Swap API de Sequence.

Por favor, asegúrese de que su par de tokens tenga suficiente liquidez en un exchange compatible como UniSwap.
Consulte esta guía sobre [cómo agregar liquidez en UniSwap.](https://support.uniswap.org/hc/en-us/articles/7423194619661-How-to-add-liquidity-to-Uniswap-v3)

## GetSwapPrice

Este método se puede usar para obtener el `SwapPrice` actual para una moneda de compra (buyCurrency) y cantidad (buyAmount) determinada usando una moneda de venta (sellCurrency) específica.

```
ISwap swapper = new CurrencySwap(_chain);
SwapPrice swapPrice = await swapper.GetSwapPrice(buyCurrencyTokenAddress, usdcAddress, "1000"); // where USDC is an example sell currency
```

Opcionalmente, puede suscribirse a los eventos `OnSwapPriceReturn` y `OnSwapPriceError` para manejar la respuesta en otro lugar.

Opcionalmente, puede proporcionar un porcentaje máximo de slippage permitido.

## GetSwapPrices

Este método es similar a `GetSwapPrice`, y se puede usar para obtener el `SwapPrice` actual para una moneda de compra y cantidad determinada. Sin embargo, en lugar de proporcionar una moneda de venta, debe proporcionar la dirección del wallet del usuario.

Este método detectará las monedas elegibles (ERC20 o tokens nativos) que se pueden intercambiar por buyAmount de la buyCurrency y devolverá un arreglo `SwapPrice[]`.

```
ISwap swapper = new CurrencySwap(_chain);
SwapPrice[] swapPrices = await swapper.GetSwapPrices(userWalletAddress, buyCurrencyTokenAddress, "1000");
```

Opcionalmente, puede suscribirse a los eventos `OnSwapPricesReturn` y `OnSwapPricesError` para manejar la respuesta en otro lugar.

Opcionalmente, puede proporcionar un porcentaje máximo de slippage permitido.

## GetSwapQuote

Este método se utiliza para obtener un `SwapQuote` ejecutable para la dirección de wallet del usuario, para comprar buyAmount de buyCurrency usando sellCurrency.

```
ISwap swapper = new CurrencySwap(_chain);
SwapQuote quote = await swapper.GetSwapQuote(userWalletAddress, buyCurrencyTokenAddess, usdcAddress, "1000", true); // where USDC is an example sell currency
```

Una vez que tenga un `SwapQuote`, puede transformarlo en un arreglo de `Transaction[]` que puede enviar a través de su EmbeddedWallet para ejecutar el intercambio.

```
Transaction[] swapTransactions = quote.AsTransactionArray();

_wallet.SendTransaction(_chain, swapTransactions);
```

Si `includeApprove = true`, la respuesta de SwapQuote también incluirá la información necesaria para crear la(s) transacción(es) de aprobación de gasto requeridas. Estas también se agregarán al arreglo `Transaction[]` creado anteriormente mediante `SwapQuote.AsTransactionArray()`. Como es habitual con nuestros wallets inteligentes integrados, todas estas transacciones pueden enviarse juntas en un solo paquete, lo que mejora significativamente la experiencia de usuario para sus jugadores, quienes normalmente tendrían que realizar transacciones separadas para aprobar e intercambiar.
