Skip to content

ParaSwap allows dApps and traders to get the best DEX liquidity by aggregating multiple markets and offering the best rates

License

Notifications You must be signed in to change notification settings

dystopia-exchange/paraswap-sdk

 
 

Repository files navigation

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

About

ParaSwap allows dApps and traders to get the best DEX liquidity by aggregating multiple markets and offering the best rates

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 79.5%
  • API Blueprint 19.9%
  • JavaScript 0.6%