0.1.5 • Published 4 years ago

@reef-defi/sdk-swap v0.1.5

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 years ago

@reef-defi/sdk-swap

npm install @reef-defi/sdk-core @reef-defi/sdk-swap
import { ApiPromise, WsProvider } from '@polkadot/api';
import { options } from '@reef-defi/api';
import { Token, FixedPointNumber, getPresetToken } from '@reef-defi/sdk-core';
import { SwapTrade } from '@reef-defi/sdk-swap';

const provider = new WsProvider('ws://localhost:9944');
const api = ApiPromise.create(options({ provider }));

const reef = getPresetToken('REEF').clone({ amount: new FixedPointNumber(100) });
const ausd = getPresetToken('AUSD');

const availableTokenPairs = SwapTrade.getAvailableToenPairs(api);
const maxTradePathLength = new FixedPointNumber(api.const.dex.tradingPathLimit.toString());
const fee = {
  numerator: new FixedPointNumber(api.const.dex.getExchangeFee[0].toString()),
  denominator: new FixedPointNumber(api.const.dex.getExchanngeFee[1].toString())
};

const swapTrade = new SwapTrade({
  input: reef,
  output: ausd,
  mode: 'EXACT_INPUT',
  availableTokenPairs,
  maxTradePathLength,
  fee,
  acceptSlippage: new FixedPointNumber(0.001)
});

const tradePairs = SwapTrade.getTradeTokenPairsByPaths();

const unsub = api.query.queryMulti(
  tradePairs.map((item) => ([api.query.dex.liquidityPool, ...item.toChainData()])),
  (result) => {
    const pools = SwapTrade.convertLiquidityPoolsToTokenPairs(result, tradePairs);
    const tradeParameters = swapTrade.getTradeParameters(pools)

    if (tradeParameters.mode === 'EXECT_INPUT') {
      api.tx.dex.swapWithExactSupply(...tradeParameters.toChainData(tradeParameters.mode)).signAndSend(...)
    } else {
      api.tx.dex.swapWithExactTarget(...tradeParameters.toChainData(tradeParameters.mode)).signAndSend(...)
    }

    unsub();
  }
);
0.1.5-0

4 years ago

0.1.2

4 years ago

0.1.2-0

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.5

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago