Overview

The WardenSwap SDK is a Javascript/Typescript library that provides developers the seamless way of integrating the most sophisticated best rate AI swap into your application or DeFi with ease.

Why WardenSwap SDK?

WardenSwap SDK will be your best way to equip the Best Rate AI power to bring your platform to the next level.

Warden SDK is already available for public use. To participate in the profit sharing program, please submit the form here: https://forms.gle/qZfiW67SNvRKRL7h8

Supported Chains

For testing without using actual tokens, see Testing section.

Supported Tokens

How it works?

Let's say the user want to swap 1,000 BUSD to WAD on your dashboard in Binance Smart Chain

You can integrate WardenSwap SDK to help get the quote, then send the swap transaction with normal Web3.js or Ethers.js. So for now the key functionality of the SDK is to get you the best rate quote.

  1. Connecting Wallet can be done with Ethers.js, Web3.js or related libraries.

  2. Approve BUSD will required user to approve spending by sending the approve transaction to the BUSD contract to be spent by WardenSwap contract. In case the user already approved or swapping BNB, no need for approval.

  3. Get Quote can be done with WardenSwap SDK, it will return you the amountOut which is the full amount of the destination token to display to users. Note that the amountOut is the estimated value.

  4. Swap is when you request user to confirm the swap transaction built from quote response and send to WardenSwap contract with function swap or swapSplit.

After the swap submission, the transaction will be pending. You will need to watch the transaction to see the swap result.

Quick Sample Code: Get Quote & Swap

Here is the minimal sample code for BNB Smart Chain integration to help you understand how to use it quickly.

import {
  initProvider,
  WardenBestRate,
} from "@wardenswap/bestrate-sdk";
import { ethers } from "ethers";

async function swapWithWarden() {
  const provider = initProvider("https://bsc-dataseed.binance.org");
  const warden = new WardenBestRate(provider, "bsc");

  const src = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; // source Token Address: BUSD
  const srcDecimals = 18; // source token's decimals
  const dest = "0x0feadcc3824e7f3c12f40e324a60c23ca51627fc"; // destination Token Address: WAD
  const amountIn = ethers.utils.parseUnits("100", srcDecimals); // amount of source token
  const gasPrice = ethers.utils.parseUnits("5", "gwei"); // current gas price

  // Get BEST RATE!
  const quote = await warden.getQuote(src, dest, amountIn, gasPrice, {
    enableSplit: true,
  });

  // Get the signer with private key
  // For using with Metamask, see: https://docs.ethers.io/v5/getting-started/#getting-started--connecting
  // For using other wallet, see: https://docs.ethers.io/v5/single-page/#/v5/api/signer/-%23-Wallet
  const YOUR_PRIVATE_KEY = process.env.PRIVATE_KEY;
  const signer = new ethers.Wallet(YOUR_PRIVATE_KEY, provider);

  // Specify slippage, which is 1%
  const minDestAmount = ethers.BigNumber.from(quote.amountOut).mul(99).div(100);

  // Allow WardenSwap contract to use token in your wallet to perform swapping
  console.log("Approving token...");
  let tx = await warden.approve(signer, src, amountIn);
  console.log("Tx Hash:", tx.hash);
  await tx.wait();

  // Perform a swap!
  console.log("Swapping...");
  tx = await warden.swap(signer, src, dest, amountIn, minDestAmount, quote);
  console.log("Tx Hash:", tx.hash);
  await tx.wait();
  console.log("Swapped!");
}

swapWithWarden();

In order to use your own implementation to perform swap, ABI of WardenSwap contract can be found at etherscan links in Supported Chains section.

Available Functions

Available functions can be found in Reference Section

Address of native currencies e.g. BNB, MATIC, ETH are represented as 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE

Last updated