UNPKG

@xspswap/smart-order-router

Version:
59 lines 6.99 kB
import { Protocol } from '@x-swap-protocol/router-sdk'; import { Percent } from '@x-swap-protocol/sdk-core'; import { Pair } from '@x-swap-protocol/v2-sdk'; import { FACTORY_ADDRESS, Pool, POOL_INIT_CODE_HASH, } from '@x-swap-protocol/v3-sdk'; import _ from 'lodash'; import { getFathomPoolAddress } from '../providers/v2-fathom/utils'; import { CurrencyAmount } from '.'; export const routeToString = (route) => { const routeStr = []; const tokens = route.protocol === Protocol.V3 || route.protocol === Protocol.UNI_V3 ? // @ts-ignore route.tokenPath : // @ts-ignore route.path; const tokenPath = _.map(tokens, (token) => `${token.symbol}`); const pools = route.protocol === Protocol.V2 || route.protocol === Protocol.FATHOM ? route.pairs : // @ts-ignore route.pools; const poolFeePath = _.map(pools, (pool) => { return `${pool instanceof Pool ? ` -- ${pool.fee / 10000}% [${Pool.getAddress(pool.token0, pool.token1, pool.fee, { address: pool.factory ? pool.factory.address : FACTORY_ADDRESS, initCode: pool.factory ? pool.factory.initCode : POOL_INIT_CODE_HASH, })}]` : route.protocol === Protocol.FATHOM ? ` -- [${getFathomPoolAddress(pool.token0, pool.token1)}]` : ` -- [${Pair.getAddress(pool.token0, pool.token1)}]`} --> `; }); for (let i = 0; i < tokenPath.length; i++) { routeStr.push(tokenPath[i]); if (i < poolFeePath.length) { routeStr.push(poolFeePath[i]); } } return routeStr.join(''); }; export const routeAmountsToString = (routeAmounts) => { const total = _.reduce(routeAmounts, (total, cur) => { return total.add(cur.amount); }, CurrencyAmount.fromRawAmount(routeAmounts[0].amount.currency, 0)); const routeStrings = _.map(routeAmounts, ({ protocol, route, amount }) => { const portion = amount.divide(total); const percent = new Percent(portion.numerator, portion.denominator); /// @dev special case for MIXED routes we want to show user friendly V2+V3 instead return `[${protocol == Protocol.MIXED ? 'V2 + V3' : protocol}] ${percent.toFixed(2)}% = ${routeToString(route)}`; }); return _.join(routeStrings, ', '); }; export const routeAmountToString = (routeAmount) => { const { route, amount } = routeAmount; return `${amount.toExact()} = ${routeToString(route)}`; }; export const poolToString = (p) => { return `${p.token0.symbol}/${p.token1.symbol}${p instanceof Pool ? `/${p.fee / 10000}%` : ``}`; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsSUFBSSxFQUNKLG1CQUFtQixHQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUlwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUMzQixLQUFxQyxFQUM3QixFQUFFO0lBQ1YsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBRXBCLE1BQU0sTUFBTSxHQUNWLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNO1FBQ2xFLENBQUMsQ0FBQyxhQUFhO1lBQ2IsS0FBSyxDQUFDLFNBQVM7UUFDakIsQ0FBQyxDQUFDLGFBQWE7WUFDYixLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2pCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELE1BQU0sS0FBSyxHQUNULEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNO1FB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