@paraswap/dex-lib 2.33.4-balancer-v2-multihop.0 → 2.33.4-balancer-v2-multihop.2

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.
@@ -5,12 +5,13 @@ const constants_1 = require("../../constants");
5
5
  const config_1 = require("./config");
6
6
  exports.AllBalancerV2Forks = Object.keys(config_1.BalancerConfig);
7
7
  function balancerV2Merge(or) {
8
- const fixSwap = (rawSwap, newBalancers, side) => {
8
+ const fixSwap = (rawSwap, accumulatedBalancers, side) => {
9
9
  let optimizedSwap = new Array();
10
+ const newBalancers = {};
10
11
  rawSwap.forEach((s) => {
11
12
  const exchangeKey = s.exchange.toLowerCase();
12
13
  if (exports.AllBalancerV2Forks.some(d => d.toLowerCase() === exchangeKey)) {
13
- if (!(exchangeKey in newBalancers)) {
14
+ if (!(exchangeKey in accumulatedBalancers)) {
14
15
  newBalancers[exchangeKey] = {
15
16
  exchange: s.exchange,
16
17
  srcAmount: '0',
@@ -22,18 +23,22 @@ function balancerV2Merge(or) {
22
23
  gasUSD: '0',
23
24
  },
24
25
  };
26
+ accumulatedBalancers[exchangeKey] = newBalancers[exchangeKey];
25
27
  }
26
- newBalancers[exchangeKey].srcAmount = (BigInt(newBalancers[exchangeKey].srcAmount) + BigInt(s.srcAmount)).toString();
27
- newBalancers[exchangeKey].destAmount = (BigInt(newBalancers[exchangeKey].destAmount) + BigInt(s.destAmount)).toString();
28
- newBalancers[exchangeKey].percent += s.percent;
29
- newBalancers[exchangeKey].data.exchangeProxy = s.data.exchangeProxy;
30
- newBalancers[exchangeKey].data.gasUSD = (parseFloat(newBalancers[exchangeKey].data.gasUSD) +
28
+ accumulatedBalancers[exchangeKey].srcAmount = (BigInt(accumulatedBalancers[exchangeKey].srcAmount) +
29
+ BigInt(s.srcAmount)).toString();
30
+ accumulatedBalancers[exchangeKey].destAmount = (BigInt(accumulatedBalancers[exchangeKey].destAmount) +
31
+ BigInt(s.destAmount)).toString();
32
+ accumulatedBalancers[exchangeKey].percent += s.percent;
33
+ accumulatedBalancers[exchangeKey].data.exchangeProxy =
34
+ s.data.exchangeProxy;
35
+ accumulatedBalancers[exchangeKey].data.gasUSD = (parseFloat(accumulatedBalancers[exchangeKey].data.gasUSD) +
31
36
  parseFloat(s.data.gasUSD)).toFixed(6);
32
- newBalancers[exchangeKey].data.swaps.push({
37
+ accumulatedBalancers[exchangeKey].data.swaps.push({
33
38
  poolId: s.data.poolId,
34
39
  amount: side === constants_1.SwapSide.SELL ? s.srcAmount : s.destAmount,
35
40
  });
36
- newBalancers[exchangeKey].poolAddresses.push(s.poolAddresses[0]);
41
+ accumulatedBalancers[exchangeKey].poolAddresses.push(s.poolAddresses[0]);
37
42
  }
38
43
  else {
39
44
  optimizedSwap.push(s);
@@ -43,13 +48,15 @@ function balancerV2Merge(or) {
43
48
  return optimizedSwap;
44
49
  };
45
50
  or.bestRoute = or.bestRoute.map(r => {
46
- const newBalancers = {};
51
+ const accumulatedBalancers = {};
47
52
  return {
48
53
  ...r,
49
- swaps: r.swaps.map(s => ({
54
+ swaps: r.swaps
55
+ .map(s => ({
50
56
  ...s,
51
- swapExchanges: fixSwap(s.swapExchanges, newBalancers, or.side),
52
- })),
57
+ swapExchanges: fixSwap(s.swapExchanges, accumulatedBalancers, or.side),
58
+ }))
59
+ .filter(s => s.swapExchanges.length > 0),
53
60
  };
54
61
  });
55
62
  return or;
@@ -1 +1 @@
1
- {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/optimizer.ts"],"names":[],"mappings":"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"}
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.33.4-balancer-v2-multihop.0",
3
+ "version": "2.33.4-balancer-v2-multihop.2",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -8,14 +8,15 @@ export const AllBalancerV2Forks = Object.keys(BalancerConfig);
8
8
  export function balancerV2Merge(or: UnoptimizedRate): UnoptimizedRate {
9
9
  const fixSwap = (
10
10
  rawSwap: OptimalSwapExchange<any>[],
11
- newBalancers: { [key: string]: OptimalSwapExchange<any> },
11
+ accumulatedBalancers: { [key: string]: OptimalSwapExchange<any> },
12
12
  side: SwapSide,
13
13
  ): OptimalSwapExchange<any>[] => {
14
14
  let optimizedSwap = new Array<OptimalSwapExchange<any>>();
15
+ const newBalancers: { [key: string]: OptimalSwapExchange<any> } = {};
15
16
  rawSwap.forEach((s: OptimalSwapExchange<any>) => {
16
17
  const exchangeKey = s.exchange.toLowerCase();
17
18
  if (AllBalancerV2Forks.some(d => d.toLowerCase() === exchangeKey)) {
18
- if (!(exchangeKey in newBalancers)) {
19
+ if (!(exchangeKey in accumulatedBalancers)) {
19
20
  newBalancers[exchangeKey] = {
20
21
  exchange: s.exchange,
21
22
  srcAmount: '0',
@@ -27,27 +28,33 @@ export function balancerV2Merge(or: UnoptimizedRate): UnoptimizedRate {
27
28
  gasUSD: '0',
28
29
  },
29
30
  };
31
+ accumulatedBalancers[exchangeKey] = newBalancers[exchangeKey];
30
32
  }
31
- newBalancers[exchangeKey].srcAmount = (
32
- BigInt(newBalancers[exchangeKey].srcAmount) + BigInt(s.srcAmount)
33
+ accumulatedBalancers[exchangeKey].srcAmount = (
34
+ BigInt(accumulatedBalancers[exchangeKey].srcAmount) +
35
+ BigInt(s.srcAmount)
33
36
  ).toString();
34
37
 
35
- newBalancers[exchangeKey].destAmount = (
36
- BigInt(newBalancers[exchangeKey].destAmount) + BigInt(s.destAmount)
38
+ accumulatedBalancers[exchangeKey].destAmount = (
39
+ BigInt(accumulatedBalancers[exchangeKey].destAmount) +
40
+ BigInt(s.destAmount)
37
41
  ).toString();
38
42
 
39
- newBalancers[exchangeKey].percent += s.percent;
40
- newBalancers[exchangeKey].data.exchangeProxy = s.data.exchangeProxy;
41
- newBalancers[exchangeKey].data.gasUSD = (
42
- parseFloat(newBalancers[exchangeKey].data.gasUSD) +
43
+ accumulatedBalancers[exchangeKey].percent += s.percent;
44
+ accumulatedBalancers[exchangeKey].data.exchangeProxy =
45
+ s.data.exchangeProxy;
46
+ accumulatedBalancers[exchangeKey].data.gasUSD = (
47
+ parseFloat(accumulatedBalancers[exchangeKey].data.gasUSD) +
43
48
  parseFloat(s.data.gasUSD)
44
49
  ).toFixed(6);
45
50
 
46
- newBalancers[exchangeKey].data.swaps.push({
51
+ accumulatedBalancers[exchangeKey].data.swaps.push({
47
52
  poolId: s.data.poolId,
48
53
  amount: side === SwapSide.SELL ? s.srcAmount : s.destAmount,
49
54
  });
50
- newBalancers[exchangeKey].poolAddresses!.push(s.poolAddresses![0]);
55
+ accumulatedBalancers[exchangeKey].poolAddresses!.push(
56
+ s.poolAddresses![0],
57
+ );
51
58
  } else {
52
59
  optimizedSwap.push(s);
53
60
  }
@@ -57,15 +64,21 @@ export function balancerV2Merge(or: UnoptimizedRate): UnoptimizedRate {
57
64
  };
58
65
 
59
66
  or.bestRoute = or.bestRoute.map(r => {
60
- const newBalancers: {
67
+ const accumulatedBalancers: {
61
68
  [key: string]: OptimalSwapExchange<any>;
62
69
  } = {};
63
70
  return {
64
71
  ...r,
65
- swaps: r.swaps.map(s => ({
66
- ...s,
67
- swapExchanges: fixSwap(s.swapExchanges, newBalancers, or.side),
68
- })),
72
+ swaps: r.swaps
73
+ .map(s => ({
74
+ ...s,
75
+ swapExchanges: fixSwap(
76
+ s.swapExchanges,
77
+ accumulatedBalancers,
78
+ or.side,
79
+ ),
80
+ }))
81
+ .filter(s => s.swapExchanges.length > 0),
69
82
  };
70
83
  });
71
84
  return or;