Awesome Open Source
Awesome Open Source

ParaSwap SDK


API docs are available here :

https://developers.paraswap.network

To use ParaSwap SDK :

Install the lib using npm or yarn

yarn add paraswap
Then on a Javascript file:
const { ParaSwap } = require('paraswap');
const paraSwap = new ParaSwap();

ES6 or TypeScript

import { ParaSwap } from 'paraswap';
const paraSwap = new ParaSwap();
To retrieve the list all available tokens:
const tokens = await paraSwap.getTokens();
To get the rate of a token pair using the API:
const srcToken = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'; // ETH
const destToken = '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359'; // DAI
const srcAmount = '1000000000000000000'; //The source amount multiplied by its decimals: 10 ** 18 here

const priceRoute: OptimalRates = await paraSwap.getRate(
  srcToken,
  destToken,
  srcAmount,
);

Where priceRoute contains the rate and the distribution among exchanges, checkout the OptimalRates type for more details.

To get the rate of a token pair using the Price Feed Contract:

This can be used for trustless integrations, the

const paraswapFeed = new ParaswapFeed(1);
const priceRoute: OptimalRates = await paraswapFeed.getRate(
  srcToken,
  destToken,
  srcAmount,
);

This is a schema that describes the data flow from price query to executing a Swap:

Also available at https://paraswap-achirecture.netlify.com

To get the allowance of an ERC20
const paraSwap = new ParaSwap().setWeb3Provider(web3Provider);

const allowance = await paraSwap.getAllowance(userAddress, tokenAddress);
To approve an ERC20
const paraSwap = new ParaSwap().setWeb3Provider(web3Provider);

const txHash = await paraSwap.approveToken(amount, userAddress, tokenAddress);
To build and sign a transaction
const srcToken = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
const destToken = '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359';
const srcAmount = '1000000000000000000'; //The source amount multiplied by its decimals
const senderAddress = '0xfceA770875E7e6f25E33CEa5188d12Ef234606b4';
const receiver = '0x8B4e846c90a2521F0D2733EaCb56760209EAd51A'; // Useful in case of swap and transfer
const referrer = 'my-company-or-nick-name';

const txParams = await paraSwap.buildTx(
  srcToken,
  destToken,
  srcAmount,
  destAmount,
  priceRoute,
  senderAddress,
  referrer,
  receiver,
);

web3.eth.sendTransaction(
  txParams,
  async (err: Error, transactionHash: string) => {
    if (err) {
      return this.setState({ error: err.toString(), loading: false });
    }
    console.log('transactionHash', transactionHash);
  },
);

To run the example locally:

Created an .env file with these 2 env variables:

PROVIDER_URL=YOUR_PROVIDRER_URL_OR_INFURA_URL
NODE_ENV=production

run

yarn install paraswap

For local developement you can run

yarn dev

For production build:

yarn build

Which will generate a production build on "dist" folder


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Typescript (251,777
Blockchain (8,528
Ethereum (6,957
Solidity (6,326
Cryptocurrency (5,622
Web3 (1,046
Exchange (780
Related Projects