Skip to content

Commit

Permalink
Added smart swap docs for Unity (#466)
Browse files Browse the repository at this point in the history
  • Loading branch information
BellringerQuinn authored Jan 8, 2025
1 parent 369f96e commit 4764fc8
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
48 changes: 48 additions & 0 deletions docs/pages/sdk/unity/currency-swaps.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Currency Swaps

Swapping between different ERC20/native token currencies on a given Chain is made easy by Sequence's Smart Swap API.

## GetSwapPrice

This method can be used to get the current `SwapPrice` for a given buyCurrency and buyAmount using a given sellCurrency.

```
ISwap swapper = new CurrencySwap(_chain);
SwapPrice swapPrice = await swapper.GetSwapPrice(buyCurrencyTokenAddress, usdcAddress, "1000"); // where USDC is an example sell currency
```
You can optionally subscribe to the `OnSwapPriceReturn` and `OnSwapPriceError` events in order to handle the response elsewhere.

You can optionally provide a maximum allowable slippagePercentage.

## GetSwapPrices

This method is similar to `GetSwapPrice`, it can be used to get the current `SwapPrice` for a given buyCurrency and buyAmount. Except, instead of providing a sellCurrency, you instead provide the user's wallet address.

This method will detect the eligible currencies (ERC20s or native tokens) that can be swapped for buyAmount of the buyCurrency and will return a `SwapPrice[]`.

```
ISwap swapper = new CurrencySwap(_chain);
SwapPrice[] swapPrices = await swapper.GetSwapPrices(userWalletAddress, buyCurrencyTokenAddress, "1000");
```
You can optionally subscribe to the `OnSwapPricesReturn` and `OnSwapPricesError` events in order to handle the response elsewhere.

You can optionally provide a maximum allowable slippagePercentage.

## GetSwapQuote

This method is used to get an executable `SwapQuote` for a given userWallet address to buy buyAmount of buyCurrency using sellCurrency.

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

Once you've obtained a `SwapQuote`, you can transform it into a `Transaction[]` that can be submitted via your EmbeddedWallet to execute the swap.

```
Transaction[] swapTransactions = quote.AsTransactionArray();
_wallet.SendTransaction(_chain, swapTransactions);
```

If `includeApprove = true` the SwapQuote response will also include the information required to create the required spend approval transaction(s). These will also be added to the `Transaction[]` created above via `SwapQuote.AsTransactionArray()`. As usual, with our embedded smart contract wallets, all of these transactions can be submitted at once in a bundle; significantly improving the UX for your players who would usually need to make separate transactions to approve and swap.
1 change: 1 addition & 0 deletions nav.ts
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,7 @@ export const sidebar = {
{ text: 'Session Management', link: '/sdk/unity/session-management' },
{ text: 'On-Ramp Funds via Credit Card', link: '/sdk/unity/onboard-user-funds' },
{ text: 'Marketplace', link: '/sdk/unity/marketplace' },
{ text: 'Currency Swaps', link: '/sdk/unity/currency-swaps' },
{
text: 'Connect with External Wallets',
link: '/sdk/unity/connecting-external-wallets',
Expand Down

0 comments on commit 4764fc8

Please sign in to comment.