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.

Supported Chains
Ethereum (Mainnet)
Warden Router Contract:
0x39f97198c5DbC193EB962c4B3B7e447091A18eAB
Binance Smart Chain
Warden Router Contract:
0x451ef8D6B645a60115EB8b8bEa76B39C0C761004
Polygon
Warden Router Contract:
0x030B8b7bF245E762736e65c0903295447B898c30
Avalanche
Warden Router Contract:
0x5EF960Eb78B8CFc11e654D03BeEB313BaDF5C7C0
Optimism
Warden Router Contract:
0x7EA8c22E6Dcd7bd69eb180664Da68e1f1F11D696
Arbitrum
Warden Router Contract: 0x79A556ef2c5b613dB3DFa8797E6772c5AAF86834
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.

Connecting Wallet can be done with Ethers.js, Web3.js or related libraries.
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.
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 theamountOut
is the estimated value.Swap is when you request user to confirm the swap transaction built from quote response and send to WardenSwap contract with function
swap
orswapSplit
.
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();
Available Functions
Available functions can be found in Reference Section
Last updated