@paraswap/dex-lib 3.8.20 → 3.8.21-traderjoe-multihop.0

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.
@@ -20,18 +20,7 @@ class BaseTraderJoeV2 extends simple_exchange_1.SimpleExchange {
20
20
  getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
21
21
  let payload = this.abiCoder.encodeParameters(['tuple(tuple(uint256[],uint8[],address[]),uint256)'], [
22
22
  [
23
- [
24
- [
25
- data.binStep, // _pairBinSteps: uint256[]
26
- ],
27
- [
28
- this.versionIndex, // _versions: uint8[]
29
- ],
30
- [
31
- data.tokenIn,
32
- data.tokenOut, // _tokenPath: address[]
33
- ],
34
- ],
23
+ [data.binSteps, data.versions, data.tokenPath],
35
24
  (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(), // _deadline: uint256
36
25
  ],
37
26
  ]);
@@ -49,14 +38,14 @@ class BaseTraderJoeV2 extends simple_exchange_1.SimpleExchange {
49
38
  ? [
50
39
  srcAmount,
51
40
  destAmount,
52
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
41
+ [data.binSteps, data.versions, data.tokenPath],
53
42
  this.augustusAddress,
54
43
  (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
55
44
  ]
56
45
  : [
57
46
  destAmount,
58
47
  srcAmount,
59
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
48
+ [data.binSteps, data.versions, data.tokenPath],
60
49
  this.augustusAddress,
61
50
  (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
62
51
  ];
@@ -72,14 +61,14 @@ class BaseTraderJoeV2 extends simple_exchange_1.SimpleExchange {
72
61
  ? [
73
62
  srcAmount,
74
63
  destAmount,
75
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
64
+ [data.binSteps, data.versions, data.tokenPath],
76
65
  recipient,
77
66
  placeholder,
78
67
  ]
79
68
  : [
80
69
  destAmount,
81
70
  srcAmount,
82
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
71
+ [data.binSteps, data.versions, data.tokenPath],
83
72
  recipient,
84
73
  placeholder,
85
74
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { UnoptimizedRate } from '../../types';
2
+ export declare function traderJoeMerge(or: UnoptimizedRate): UnoptimizedRate;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.traderJoeMerge = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ function traderJoeMerge(or) {
9
+ const fixRoute = (rawRate) => {
10
+ let lastExchange = false;
11
+ let optimizedRate = new Array();
12
+ rawRate.forEach((s) => {
13
+ if (s.swapExchanges.length !== 1) {
14
+ lastExchange = false;
15
+ optimizedRate.push(s);
16
+ }
17
+ else if (lastExchange &&
18
+ lodash_1.default.last(lastExchange.swapExchanges[0].data.tokenPath).toLowerCase() === s.swapExchanges[0].data.tokenPath[0].toLowerCase()) {
19
+ lastExchange.swapExchanges[0].data.tokenPath.push(s.swapExchanges[0].data.tokenPath[1]);
20
+ lastExchange.swapExchanges[0].data.binSteps.push(s.swapExchanges[0].data.binSteps[0]);
21
+ lastExchange.swapExchanges[0].data.versions.push(s.swapExchanges[0].data.versions[0]);
22
+ lastExchange.swapExchanges[0].poolAddresses.push(s.swapExchanges[0].poolAddresses[0]);
23
+ lastExchange.swapExchanges[0].data.gasUSD = (parseFloat(lastExchange.swapExchanges[0].data.gasUSD) +
24
+ parseFloat(s.swapExchanges[0].data.gasUSD)).toFixed(6);
25
+ lastExchange.destToken = s.destToken;
26
+ lastExchange.destDecimals = s.destDecimals;
27
+ lastExchange.swapExchanges[0].destAmount =
28
+ s.swapExchanges[0].destAmount;
29
+ }
30
+ else {
31
+ lastExchange = lodash_1.default.cloneDeep(s);
32
+ optimizedRate.push(lastExchange);
33
+ }
34
+ });
35
+ return optimizedRate;
36
+ };
37
+ or.bestRoute = or.bestRoute.map(r => ({
38
+ ...r,
39
+ swaps: fixRoute(r.swaps),
40
+ }));
41
+ return or;
42
+ }
43
+ exports.traderJoeMerge = traderJoeMerge;
44
+ //# sourceMappingURL=optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/optimizer.ts"],"names":[],"mappings":";;;;;;AACA,oDAAuB;AAEvB,SAAgB,cAAc,CAAC,EAAmB;IAChD,MAAM,QAAQ,GAAG,CAAC,OAAsB,EAAiB,EAAE;QACzD,IAAI,YAAY,GAAwB,KAAK,CAAC;QAC9C,IAAI,aAAa,GAAG,IAAI,KAAK,EAAe,CAAC;QAE7C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAc,EAAE,EAAE;YACjC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAChC,YAAY,GAAG,KAAK,CAAC;gBACrB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM,IACL,YAAY;gBACZ,gBAAC,CAAC,IAAI,CACO,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CACvD,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EACvE;gBACA,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAC/C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACrC,CAAC;gBACF,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC9C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpC,CAAC;gBACF,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC9C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpC,CAAC;gBACF,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAc,CAAC,IAAI,CAC/C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAc,CAAC,CAAC,CAAC,CACrC,CAAC;gBACF,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAC1C,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBACrD,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3C,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEb,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;gBACrC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;gBAC3C,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU;oBACtC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;aACjC;iBAAM;gBACL,YAAY,GAAG,gBAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9B,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IACF,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC;QACJ,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;KACzB,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,CAAC;AACZ,CAAC;AAhDD,wCAgDC"}
@@ -21,9 +21,9 @@ export declare type TraderJoeV2RouterBuyParams = [
21
21
  ];
22
22
  export declare type TraderJoeV2RouterParam = TraderJoeV2RouterSellParams | TraderJoeV2RouterBuyParams;
23
23
  export declare type TraderJoeV2Data = {
24
- tokenIn: string;
25
- tokenOut: string;
26
- binStep: string;
24
+ tokenPath: string[];
25
+ binSteps: string[];
26
+ versions: string[];
27
27
  };
28
28
  export declare enum TraderJoeV2RouterFunctions {
29
29
  swapExactTokensForTokens = "swapExactTokensForTokens",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "3.8.20",
3
+ "version": "3.8.21-traderjoe-multihop.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -53,18 +53,7 @@ export class BaseTraderJoeV2
53
53
  ['tuple(tuple(uint256[],uint8[],address[]),uint256)'],
54
54
  [
55
55
  [
56
- [
57
- [
58
- data.binStep, // _pairBinSteps: uint256[]
59
- ],
60
- [
61
- this.versionIndex, // _versions: uint8[]
62
- ],
63
- [
64
- data.tokenIn,
65
- data.tokenOut, // _tokenPath: address[]
66
- ],
67
- ],
56
+ [data.binSteps, data.versions, data.tokenPath],
68
57
  getLocalDeadlineAsFriendlyPlaceholder(), // _deadline: uint256
69
58
  ],
70
59
  ],
@@ -95,14 +84,14 @@ export class BaseTraderJoeV2
95
84
  ? [
96
85
  srcAmount,
97
86
  destAmount,
98
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
87
+ [data.binSteps, data.versions, data.tokenPath],
99
88
  this.augustusAddress,
100
89
  getLocalDeadlineAsFriendlyPlaceholder(),
101
90
  ]
102
91
  : [
103
92
  destAmount,
104
93
  srcAmount,
105
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
94
+ [data.binSteps, data.versions, data.tokenPath],
106
95
  this.augustusAddress,
107
96
  getLocalDeadlineAsFriendlyPlaceholder(),
108
97
  ];
@@ -143,14 +132,14 @@ export class BaseTraderJoeV2
143
132
  ? [
144
133
  srcAmount,
145
134
  destAmount,
146
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
135
+ [data.binSteps, data.versions, data.tokenPath],
147
136
  recipient,
148
137
  placeholder,
149
138
  ]
150
139
  : [
151
140
  destAmount,
152
141
  srcAmount,
153
- [[data.binStep], [this.versionIndex], [srcToken, destToken]],
142
+ [data.binSteps, data.versions, data.tokenPath],
154
143
  recipient,
155
144
  placeholder,
156
145
  ];
@@ -0,0 +1,52 @@
1
+ import { Address, OptimalSwap, UnoptimizedRate } from '../../types';
2
+ import _ from 'lodash';
3
+
4
+ export function traderJoeMerge(or: UnoptimizedRate): UnoptimizedRate {
5
+ const fixRoute = (rawRate: OptimalSwap[]): OptimalSwap[] => {
6
+ let lastExchange: false | OptimalSwap = false;
7
+ let optimizedRate = new Array<OptimalSwap>();
8
+
9
+ rawRate.forEach((s: OptimalSwap) => {
10
+ if (s.swapExchanges.length !== 1) {
11
+ lastExchange = false;
12
+ optimizedRate.push(s);
13
+ } else if (
14
+ lastExchange &&
15
+ _.last(
16
+ <Address[]>lastExchange.swapExchanges[0].data.tokenPath,
17
+ )!.toLowerCase() === s.swapExchanges[0].data.tokenPath[0].toLowerCase()
18
+ ) {
19
+ lastExchange.swapExchanges[0].data.tokenPath.push(
20
+ s.swapExchanges[0].data.tokenPath[1],
21
+ );
22
+ lastExchange.swapExchanges[0].data.binSteps.push(
23
+ s.swapExchanges[0].data.binSteps[0],
24
+ );
25
+ lastExchange.swapExchanges[0].data.versions.push(
26
+ s.swapExchanges[0].data.versions[0],
27
+ );
28
+ lastExchange.swapExchanges[0].poolAddresses!.push(
29
+ s.swapExchanges[0].poolAddresses![0],
30
+ );
31
+ lastExchange.swapExchanges[0].data.gasUSD = (
32
+ parseFloat(lastExchange.swapExchanges[0].data.gasUSD) +
33
+ parseFloat(s.swapExchanges[0].data.gasUSD)
34
+ ).toFixed(6);
35
+
36
+ lastExchange.destToken = s.destToken;
37
+ lastExchange.destDecimals = s.destDecimals;
38
+ lastExchange.swapExchanges[0].destAmount =
39
+ s.swapExchanges[0].destAmount;
40
+ } else {
41
+ lastExchange = _.cloneDeep(s);
42
+ optimizedRate.push(lastExchange);
43
+ }
44
+ });
45
+ return optimizedRate;
46
+ };
47
+ or.bestRoute = or.bestRoute.map(r => ({
48
+ ...r,
49
+ swaps: fixRoute(r.swaps),
50
+ }));
51
+ return or;
52
+ }
@@ -27,9 +27,9 @@ export type TraderJoeV2RouterParam =
27
27
  | TraderJoeV2RouterBuyParams;
28
28
 
29
29
  export type TraderJoeV2Data = {
30
- tokenIn: string; // redundant
31
- tokenOut: string; // redundant
32
- binStep: string;
30
+ tokenPath: string[];
31
+ binSteps: string[];
32
+ versions: string[];
33
33
  };
34
34
 
35
35
  export enum TraderJoeV2RouterFunctions {