@paraswap/dex-lib 2.28.7-balancer-v2-multihop.0 → 2.28.7-balancer-v2-multihop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,53 +1,53 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.balancerV2Merge = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
4
8
  const constants_1 = require("../../constants");
5
9
  const config_1 = require("./config");
6
10
  function balancerV2Merge(or) {
7
- const fixSwap = (rawSwap, exchange, side) => {
8
- const exchangeLower = exchange.toLowerCase();
9
- const newBalancer = {
10
- exchange,
11
- srcAmount: '0',
12
- destAmount: '0',
13
- percent: 0,
14
- poolAddresses: [],
15
- data: {
16
- swaps: new Array(),
17
- gasUSD: '0',
18
- },
19
- };
20
- let optimizedSwap = new Array();
21
- rawSwap.forEach((_s) => {
22
- if (_s.exchange.toLowerCase() === exchangeLower) {
23
- const s = _s;
24
- newBalancer.srcAmount = (BigInt(newBalancer.srcAmount) + BigInt(s.srcAmount)).toString();
25
- newBalancer.destAmount = (BigInt(newBalancer.destAmount) + BigInt(s.destAmount)).toString();
26
- newBalancer.percent += s.percent;
27
- newBalancer.data.exchangeProxy = s.data.exchangeProxy;
28
- newBalancer.data.gasUSD = (parseFloat(newBalancer.data.gasUSD) + parseFloat(s.data.gasUSD)).toFixed(6);
29
- newBalancer.data.swaps.push({
30
- poolId: s.data.poolId,
31
- amount: side === constants_1.SwapSide.SELL ? s.srcAmount : s.destAmount,
11
+ const fixSwap = (rawRate, side) => {
12
+ let lastExchange = false;
13
+ let optimizedRate = new Array();
14
+ rawRate.forEach((s) => {
15
+ if (s.swapExchanges.length !== 1 ||
16
+ !Object.keys(config_1.BalancerConfig).includes(s.swapExchanges[0].exchange.toLowerCase())) {
17
+ lastExchange = false;
18
+ optimizedRate.push(s);
19
+ }
20
+ else if (lastExchange &&
21
+ lastExchange.swapExchanges[0].exchange.toLowerCase() ===
22
+ s.swapExchanges[0].exchange.toLowerCase() &&
23
+ lodash_1.default.last(lastExchange.swapExchanges[0].data.path).tokenOut.toLowerCase() ===
24
+ s.swapExchanges[0].data.path[0].tokenIn.toLowerCase()) {
25
+ const [lastExchangeSwap] = lastExchange.swapExchanges;
26
+ const [currentSwap] = s.swapExchanges;
27
+ lastExchangeSwap.srcAmount = (BigInt(lastExchangeSwap.srcAmount) + BigInt(currentSwap.srcAmount)).toString();
28
+ lastExchangeSwap.destAmount = (BigInt(lastExchangeSwap.destAmount) + BigInt(currentSwap.destAmount)).toString();
29
+ lastExchangeSwap.percent += currentSwap.percent;
30
+ lastExchangeSwap.data.exchangeProxy = currentSwap.data.exchangeProxy;
31
+ lastExchangeSwap.data.gasUSD = (parseFloat(lastExchangeSwap.data.gasUSD) +
32
+ parseFloat(currentSwap.data.gasUSD)).toFixed(6);
33
+ lastExchangeSwap.data.swaps.push({
34
+ poolId: currentSwap.data.poolId,
35
+ amount: side === constants_1.SwapSide.SELL
36
+ ? currentSwap.srcAmount
37
+ : currentSwap.destAmount,
32
38
  });
33
- newBalancer.poolAddresses.push(s.poolAddresses[0]);
39
+ lastExchangeSwap.poolAddresses.push(currentSwap.poolAddresses[0]);
34
40
  }
35
41
  else {
36
- optimizedSwap.push(_s);
42
+ lastExchange = lodash_1.default.cloneDeep(s);
43
+ optimizedRate.push(lastExchange);
37
44
  }
38
45
  });
39
- if (newBalancer.data.swaps.length)
40
- optimizedSwap.push(newBalancer);
41
- return optimizedSwap;
46
+ return optimizedRate;
42
47
  };
43
48
  or.bestRoute = or.bestRoute.map(r => ({
44
49
  ...r,
45
- swaps: r.swaps.map(s => {
46
- return {
47
- ...s,
48
- swapExchanges: Object.keys(config_1.BalancerConfig).reduce((acc, exchange) => fixSwap(acc, exchange, or.side), s.swapExchanges),
49
- };
50
- }),
50
+ swaps: fixSwap(r.swaps, or.side),
51
51
  }));
52
52
  return or;
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/optimizer.ts"],"names":[],"mappings":";;;AAEA,+CAA2C;AAC3C,qCAA0C;AAE1C,SAAgB,eAAe,CAAC,EAAmB;IACjD,MAAM,OAAO,GAAG,CACd,OAAmC,EACnC,QAAgB,EAChB,IAAc,EACc,EAAE;QAC9B,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,WAAW,GAA6B;YAC5C,QAAQ;YACR,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,EAAE;YACjB,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,KAAK,EAAkB;gBAClC,MAAM,EAAE,GAAG;aACZ;SACF,CAAC;QACF,IAAI,aAAa,GAAG,IAAI,KAAK,EAA4B,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,EAA4B,EAAE,EAAE;YAC/C,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;gBACb,WAAW,CAAC,SAAS,GAAG,CACtB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CACpD,CAAC,QAAQ,EAAE,CAAC;gBAEb,WAAW,CAAC,UAAU,GAAG,CACvB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CACtD,CAAC,QAAQ,EAAE,CAAC;gBAEb,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;gBACtD,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CACxB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAChE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEb,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;oBACrB,MAAM,EAAE,IAAI,KAAK,oBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;iBAC5D,CAAC,CAAC;gBACH,WAAW,CAAC,aAAc,CAAC,IAAI,CAAC,CAAC,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aACtD;iBAAM;gBACL,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,IAAK,CAAC,KAAK,CAAC,MAAM;YAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpE,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IAEF,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC;QACJ,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrB,OAAO;gBACL,GAAG,CAAC;gBACJ,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAClD,CAAC,CAAC,aAAa,CAChB;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,CAAC;AACZ,CAAC;AA9DD,0CA8DC"}
1
+ {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/optimizer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.28.7-balancer-v2-multihop.0",
3
+ "version": "2.28.7-balancer-v2-multihop.1",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -1,68 +1,67 @@
1
- import { UnoptimizedRate, OptimalSwapExchange } from '../../types';
2
- import { BalancerSwapV2 } from './types';
1
+ import _ from 'lodash';
2
+ import { UnoptimizedRate } from '../../types';
3
3
  import { SwapSide } from '../../constants';
4
4
  import { BalancerConfig } from './config';
5
+ import { OptimalSwap } from '@paraswap/core';
5
6
 
6
7
  export function balancerV2Merge(or: UnoptimizedRate): UnoptimizedRate {
7
- const fixSwap = (
8
- rawSwap: OptimalSwapExchange<any>[],
9
- exchange: string,
10
- side: SwapSide,
11
- ): OptimalSwapExchange<any>[] => {
12
- const exchangeLower = exchange.toLowerCase();
13
- const newBalancer: OptimalSwapExchange<any> = {
14
- exchange,
15
- srcAmount: '0',
16
- destAmount: '0',
17
- percent: 0,
18
- poolAddresses: [],
19
- data: {
20
- swaps: new Array<BalancerSwapV2>(),
21
- gasUSD: '0',
22
- },
23
- };
24
- let optimizedSwap = new Array<OptimalSwapExchange<any>>();
25
- rawSwap.forEach((_s: OptimalSwapExchange<any>) => {
26
- if (_s.exchange.toLowerCase() === exchangeLower) {
27
- const s = _s;
28
- newBalancer.srcAmount = (
29
- BigInt(newBalancer.srcAmount) + BigInt(s.srcAmount)
8
+ const fixSwap = (rawRate: OptimalSwap[], side: SwapSide): OptimalSwap[] => {
9
+ let lastExchange: false | OptimalSwap = false;
10
+ let optimizedRate = new Array<OptimalSwap>();
11
+ rawRate.forEach((s: OptimalSwap) => {
12
+ if (
13
+ s.swapExchanges.length !== 1 ||
14
+ !Object.keys(BalancerConfig).includes(
15
+ s.swapExchanges[0].exchange.toLowerCase(),
16
+ )
17
+ ) {
18
+ lastExchange = false;
19
+ optimizedRate.push(s);
20
+ } else if (
21
+ lastExchange &&
22
+ lastExchange.swapExchanges[0].exchange.toLowerCase() ===
23
+ s.swapExchanges[0].exchange.toLowerCase() &&
24
+ _.last(
25
+ <any[]>lastExchange.swapExchanges[0].data.path,
26
+ )!.tokenOut.toLowerCase() ===
27
+ s.swapExchanges[0].data.path[0].tokenIn.toLowerCase()
28
+ ) {
29
+ const [lastExchangeSwap] = lastExchange.swapExchanges;
30
+ const [currentSwap] = s.swapExchanges;
31
+ lastExchangeSwap.srcAmount = (
32
+ BigInt(lastExchangeSwap.srcAmount) + BigInt(currentSwap.srcAmount)
30
33
  ).toString();
31
34
 
32
- newBalancer.destAmount = (
33
- BigInt(newBalancer.destAmount) + BigInt(s.destAmount)
35
+ lastExchangeSwap.destAmount = (
36
+ BigInt(lastExchangeSwap.destAmount) + BigInt(currentSwap.destAmount)
34
37
  ).toString();
35
38
 
36
- newBalancer.percent += s.percent;
37
- newBalancer.data.exchangeProxy = s.data.exchangeProxy;
38
- newBalancer.data.gasUSD = (
39
- parseFloat(newBalancer.data.gasUSD) + parseFloat(s.data.gasUSD)
39
+ lastExchangeSwap.percent += currentSwap.percent;
40
+ lastExchangeSwap.data.exchangeProxy = currentSwap.data.exchangeProxy;
41
+ lastExchangeSwap.data.gasUSD = (
42
+ parseFloat(lastExchangeSwap.data.gasUSD) +
43
+ parseFloat(currentSwap.data.gasUSD)
40
44
  ).toFixed(6);
41
45
 
42
- newBalancer.data.swaps.push({
43
- poolId: s.data.poolId,
44
- amount: side === SwapSide.SELL ? s.srcAmount : s.destAmount,
46
+ lastExchangeSwap.data.swaps.push({
47
+ poolId: currentSwap.data.poolId,
48
+ amount:
49
+ side === SwapSide.SELL
50
+ ? currentSwap.srcAmount
51
+ : currentSwap.destAmount,
45
52
  });
46
- newBalancer.poolAddresses!.push(s.poolAddresses![0]);
53
+ lastExchangeSwap.poolAddresses!.push(currentSwap.poolAddresses![0]);
47
54
  } else {
48
- optimizedSwap.push(_s);
55
+ lastExchange = _.cloneDeep(s);
56
+ optimizedRate.push(lastExchange);
49
57
  }
50
58
  });
51
- if (newBalancer.data!.swaps.length) optimizedSwap.push(newBalancer);
52
- return optimizedSwap;
59
+ return optimizedRate;
53
60
  };
54
61
 
55
62
  or.bestRoute = or.bestRoute.map(r => ({
56
63
  ...r,
57
- swaps: r.swaps.map(s => {
58
- return {
59
- ...s,
60
- swapExchanges: Object.keys(BalancerConfig).reduce(
61
- (acc, exchange) => fixSwap(acc, exchange, or.side),
62
- s.swapExchanges,
63
- ),
64
- };
65
- }),
64
+ swaps: fixSwap(r.swaps, or.side),
66
65
  }));
67
66
  return or;
68
67
  }