UNPKG

@alcorexchange/alcor-swap-sdk

Version:

​​ **npm** ``` npm i @alcorexchange/alcor-swap-sdk ``` **yarn** ``` yarn add @alcorexchange/alcor-swap-sdk ``` ## Usage ### Import:

52 lines (51 loc) 1.87 kB
import { Percent } from "../entities"; import { TradeType } from "../internalConstants"; export function parseTrade(trade) { // Parse Trade into api format object const slippage = new Percent(3, 100); // 0.3% const receiver = '<receiver>'; const exactIn = trade.tradeType === TradeType.EXACT_INPUT; const maxSent = exactIn ? trade.inputAmount : trade.maximumAmountIn(slippage); const minReceived = exactIn ? trade.minimumAmountOut(slippage) : trade.outputAmount; const tradeType = exactIn ? 'swapexactin' : 'swapexactout'; const swaps = trade.swaps.map(({ route, percent, inputAmount, outputAmount }) => { route = route.pools.map(p => p.id); const maxSent = exactIn ? inputAmount : trade.maximumAmountIn(slippage, inputAmount); const minReceived = exactIn ? trade.minimumAmountOut(slippage, outputAmount) : outputAmount; const input = inputAmount.toAsset(); const output = outputAmount.toAsset(); const memo = `${tradeType}#${route.join(',')}#${receiver}#${minReceived.toExtendedAsset()}#0`; return { input, route, output, percent, memo, maxSent: maxSent.toFixed(), minReceived: minReceived.toFixed() }; }); const result = { route: [], memo: '', swaps, input: trade.inputAmount.toFixed(), output: trade.outputAmount.toFixed(), minReceived: minReceived.toFixed(), maxSent: maxSent.toFixed(), priceImpact: trade.priceImpact.toSignificant(2), executionPrice: { numerator: trade.executionPrice.numerator.toString(), denominator: trade.executionPrice.denominator.toString() } }; // FIXME DEPRECATED Hotfix for legacy v1 result.route = trade.swaps[0].route.pools.map(p => p.id); result.memo = `${tradeType}#${result.route.join(',')}#${receiver}#${minReceived.toExtendedAsset()}#0`; return result; }