📦TypeScript SDK

VirtuSwap v1 SDK npm package

Getting Started

The VirtuSwap SDK npm package provides access to the VirtuSwap API and can be used to find and execute trading routes on supported chains.

To get started, install the latest version of the VirtuSwap SDK:

npm install @virtuswap/v1-sdk

Quick Start

Firstly, create a new Router instance:

import { Router } from '@virtuswap/v1-sdk';

const router = new Router();

Now you can request a route:

const chain = 137; // Polygon (Mainnet)
const tokenIn = '0x0000000000000000000000000000000000000000'; // use zero address for native token (ETH, POL (MATIC), etc.)
const tokenOut = '0x57999936fC9A9EC0751a8D146CcE11901Be8beD0'; // VRSW on Polygon
const amount = '5000000000000000000'; // 5 POL (MATIC)

const route = await router.getRoute(tokenIn, tokenOut, amount, chain, { isExactInput: true });

The received Route object can be used to visualize the trading route steps, generate transaction data or execute the route.

The latest versions of SDK support routers of versions 3 (vRouter 1.3, preferable) and 2 (vRouter 1.2).

A TransactionRequest object can be created using the generateTransactionDataV3 method:

// userAddress is the address that will receive tokens from the vRouter
const txRequest = router.generateTransactionDataV3(route, userAddress);

This object can be transferred to client and used to send a transaction using ethers.js v5:

// signer is the wallet that will send the transaction to the vRouter
const tx = await signer.sendTransaction(txRequest);
await tx.wait();

You can also prepare the multiswap data and execute the multiswap:

// userAddress is the address that will receive tokens from the vRouter
const multiSwapData = router.generateMultiSwapDataV3(route, userAddress);

// amount of native tokens to send
const value = route.tokenIn.isNative ? route.isExactInput ? route.tokenIn.balanceBN : route.slippageThresholdAmount.balanceBN : undefined;

// signer is the wallet that will send the transaction to the vRouter
const tx = await router.executeMultiSwapV3(route.chain, multiSwapData, signer, value);
await tx.wait();

Complete Examples

You can check out our complete examples in the following repositories:

Backend integration example
Frontend integration example

Last updated