@paraswap/dex-lib 2.28.7-balancer-v2-multihop.0 → 2.28.7-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.
|
@@ -1,53 +1,54 @@
|
|
|
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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
11
|
+
const balancerForksList = Object.keys(config_1.BalancerConfig).map(b => b.toLowerCase());
|
|
12
|
+
const fixSwap = (rawRate, side) => {
|
|
13
|
+
let lastExchange = false;
|
|
14
|
+
let optimizedRate = new Array();
|
|
15
|
+
rawRate.forEach((s) => {
|
|
16
|
+
if (s.swapExchanges.length !== 1 ||
|
|
17
|
+
!balancerForksList.includes(s.swapExchanges[0].exchange.toLowerCase())) {
|
|
18
|
+
lastExchange = false;
|
|
19
|
+
optimizedRate.push(s);
|
|
20
|
+
}
|
|
21
|
+
else if (lastExchange &&
|
|
22
|
+
lastExchange.swapExchanges[0].exchange.toLowerCase() ===
|
|
23
|
+
s.swapExchanges[0].exchange.toLowerCase() &&
|
|
24
|
+
lodash_1.default.last(lastExchange.swapExchanges[0].data.path).tokenOut.toLowerCase() ===
|
|
25
|
+
s.swapExchanges[0].data.path[0].tokenIn.toLowerCase()) {
|
|
26
|
+
const [lastExchangeSwap] = lastExchange.swapExchanges;
|
|
27
|
+
const [currentSwap] = s.swapExchanges;
|
|
28
|
+
lastExchangeSwap.srcAmount = (BigInt(lastExchangeSwap.srcAmount) + BigInt(currentSwap.srcAmount)).toString();
|
|
29
|
+
lastExchangeSwap.destAmount = (BigInt(lastExchangeSwap.destAmount) + BigInt(currentSwap.destAmount)).toString();
|
|
30
|
+
lastExchangeSwap.percent += currentSwap.percent;
|
|
31
|
+
lastExchangeSwap.data.exchangeProxy = currentSwap.data.exchangeProxy;
|
|
32
|
+
lastExchangeSwap.data.gasUSD = (parseFloat(lastExchangeSwap.data.gasUSD) +
|
|
33
|
+
parseFloat(currentSwap.data.gasUSD)).toFixed(6);
|
|
34
|
+
lastExchangeSwap.data.swaps.push({
|
|
35
|
+
poolId: currentSwap.data.poolId,
|
|
36
|
+
amount: side === constants_1.SwapSide.SELL
|
|
37
|
+
? currentSwap.srcAmount
|
|
38
|
+
: currentSwap.destAmount,
|
|
32
39
|
});
|
|
33
|
-
|
|
40
|
+
lastExchangeSwap.poolAddresses.push(currentSwap.poolAddresses[0]);
|
|
34
41
|
}
|
|
35
42
|
else {
|
|
36
|
-
|
|
43
|
+
lastExchange = lodash_1.default.cloneDeep(s);
|
|
44
|
+
optimizedRate.push(lastExchange);
|
|
37
45
|
}
|
|
38
46
|
});
|
|
39
|
-
|
|
40
|
-
optimizedSwap.push(newBalancer);
|
|
41
|
-
return optimizedSwap;
|
|
47
|
+
return optimizedRate;
|
|
42
48
|
};
|
|
43
49
|
or.bestRoute = or.bestRoute.map(r => ({
|
|
44
50
|
...r,
|
|
45
|
-
swaps: r.swaps.
|
|
46
|
-
return {
|
|
47
|
-
...s,
|
|
48
|
-
swapExchanges: Object.keys(config_1.BalancerConfig).reduce((acc, exchange) => fixSwap(acc, exchange, or.side), s.swapExchanges),
|
|
49
|
-
};
|
|
50
|
-
}),
|
|
51
|
+
swaps: fixSwap(r.swaps, or.side),
|
|
51
52
|
}));
|
|
52
53
|
return or;
|
|
53
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/optimizer.ts"],"names":[],"mappings":"
|
|
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,68 +1,68 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
8
|
+
const balancerForksList = Object.keys(BalancerConfig).map(b =>
|
|
9
|
+
b.toLowerCase(),
|
|
10
|
+
);
|
|
11
|
+
const fixSwap = (rawRate: OptimalSwap[], side: SwapSide): OptimalSwap[] => {
|
|
12
|
+
let lastExchange: false | OptimalSwap = false;
|
|
13
|
+
let optimizedRate = new Array<OptimalSwap>();
|
|
14
|
+
rawRate.forEach((s: OptimalSwap) => {
|
|
15
|
+
if (
|
|
16
|
+
s.swapExchanges.length !== 1 ||
|
|
17
|
+
!balancerForksList.includes(s.swapExchanges[0].exchange.toLowerCase())
|
|
18
|
+
) {
|
|
19
|
+
lastExchange = false;
|
|
20
|
+
optimizedRate.push(s);
|
|
21
|
+
} else if (
|
|
22
|
+
lastExchange &&
|
|
23
|
+
lastExchange.swapExchanges[0].exchange.toLowerCase() ===
|
|
24
|
+
s.swapExchanges[0].exchange.toLowerCase() &&
|
|
25
|
+
_.last(
|
|
26
|
+
<any[]>lastExchange.swapExchanges[0].data.path,
|
|
27
|
+
)!.tokenOut.toLowerCase() ===
|
|
28
|
+
s.swapExchanges[0].data.path[0].tokenIn.toLowerCase()
|
|
29
|
+
) {
|
|
30
|
+
const [lastExchangeSwap] = lastExchange.swapExchanges;
|
|
31
|
+
const [currentSwap] = s.swapExchanges;
|
|
32
|
+
lastExchangeSwap.srcAmount = (
|
|
33
|
+
BigInt(lastExchangeSwap.srcAmount) + BigInt(currentSwap.srcAmount)
|
|
30
34
|
).toString();
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
BigInt(
|
|
36
|
+
lastExchangeSwap.destAmount = (
|
|
37
|
+
BigInt(lastExchangeSwap.destAmount) + BigInt(currentSwap.destAmount)
|
|
34
38
|
).toString();
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
parseFloat(
|
|
40
|
+
lastExchangeSwap.percent += currentSwap.percent;
|
|
41
|
+
lastExchangeSwap.data.exchangeProxy = currentSwap.data.exchangeProxy;
|
|
42
|
+
lastExchangeSwap.data.gasUSD = (
|
|
43
|
+
parseFloat(lastExchangeSwap.data.gasUSD) +
|
|
44
|
+
parseFloat(currentSwap.data.gasUSD)
|
|
40
45
|
).toFixed(6);
|
|
41
46
|
|
|
42
|
-
|
|
43
|
-
poolId:
|
|
44
|
-
amount:
|
|
47
|
+
lastExchangeSwap.data.swaps.push({
|
|
48
|
+
poolId: currentSwap.data.poolId,
|
|
49
|
+
amount:
|
|
50
|
+
side === SwapSide.SELL
|
|
51
|
+
? currentSwap.srcAmount
|
|
52
|
+
: currentSwap.destAmount,
|
|
45
53
|
});
|
|
46
|
-
|
|
54
|
+
lastExchangeSwap.poolAddresses!.push(currentSwap.poolAddresses![0]);
|
|
47
55
|
} else {
|
|
48
|
-
|
|
56
|
+
lastExchange = _.cloneDeep(s);
|
|
57
|
+
optimizedRate.push(lastExchange);
|
|
49
58
|
}
|
|
50
59
|
});
|
|
51
|
-
|
|
52
|
-
return optimizedSwap;
|
|
60
|
+
return optimizedRate;
|
|
53
61
|
};
|
|
54
62
|
|
|
55
63
|
or.bestRoute = or.bestRoute.map(r => ({
|
|
56
64
|
...r,
|
|
57
|
-
swaps: r.swaps.
|
|
58
|
-
return {
|
|
59
|
-
...s,
|
|
60
|
-
swapExchanges: Object.keys(BalancerConfig).reduce(
|
|
61
|
-
(acc, exchange) => fixSwap(acc, exchange, or.side),
|
|
62
|
-
s.swapExchanges,
|
|
63
|
-
),
|
|
64
|
-
};
|
|
65
|
-
}),
|
|
65
|
+
swaps: fixSwap(r.swaps, or.side),
|
|
66
66
|
}));
|
|
67
67
|
return or;
|
|
68
68
|
}
|