@paraswap/dex-lib 3.8.9-node-v20.0 → 3.8.9-trader-joe-v2.2.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.
@@ -93,7 +93,7 @@ const LegacyDexes = [
93
93
  dodo_v2_1.DodoV2,
94
94
  quickswap_v3_1.QuickSwapV3,
95
95
  thena_fusion_1.ThenaFusion,
96
- trader_joe_v2_1_1.TraderJoeV21,
96
+ trader_joe_v2_1_1.TraderJoeV20,
97
97
  lido_1.Lido,
98
98
  augustus_rfq_1.AugustusRFQOrder,
99
99
  etherfi_1.EtherFi,
@@ -0,0 +1,18 @@
1
+ import { SwapSide } from '../../constants';
2
+ import { AdapterExchangeParam, Address, DexExchangeParam, SimpleExchangeParam } from '../../types';
3
+ import { IDexTxBuilder } from '../idex';
4
+ import { IDexHelper } from '../../dex-helper';
5
+ import { SimpleExchange } from '../simple-exchange';
6
+ import { NumberAsString } from '@paraswap/core';
7
+ import { AsyncOrSync } from 'ts-essentials';
8
+ import { Interface } from '@ethersproject/abi';
9
+ import { TraderJoeV2Data, TraderJoeV2RouterParam } from './types';
10
+ export declare class BaseTraderJoeV2 extends SimpleExchange implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam> {
11
+ protected routerAddress: string;
12
+ protected versionIndex: string;
13
+ exchangeRouterInterface: Interface;
14
+ constructor(dexHelper: IDexHelper, dexKey: string, routerAddress: string, versionIndex: string);
15
+ getAdapterParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, data: TraderJoeV2Data, side: SwapSide): AdapterExchangeParam;
16
+ getSimpleParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, data: TraderJoeV2Data, side: SwapSide): AsyncOrSync<SimpleExchangeParam>;
17
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: TraderJoeV2Data, side: SwapSide): DexExchangeParam;
18
+ }
@@ -0,0 +1,99 @@
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.BaseTraderJoeV2 = void 0;
7
+ const constants_1 = require("../../constants");
8
+ const simple_exchange_1 = require("../simple-exchange");
9
+ const abi_1 = require("@ethersproject/abi");
10
+ const TraderJoeV21Router_json_1 = __importDefault(require("../../abi/TraderJoeV21Router.json"));
11
+ const types_1 = require("./types");
12
+ const utils_1 = require("../../executor/utils");
13
+ class BaseTraderJoeV2 extends simple_exchange_1.SimpleExchange {
14
+ constructor(dexHelper, dexKey, routerAddress, versionIndex) {
15
+ super(dexHelper, dexKey);
16
+ this.routerAddress = routerAddress;
17
+ this.versionIndex = versionIndex;
18
+ this.exchangeRouterInterface = new abi_1.Interface(TraderJoeV21Router_json_1.default);
19
+ }
20
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
21
+ let payload = this.abiCoder.encodeParameters(['tuple(tuple(uint256[],uint8[],address[]),uint256)'], [
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
+ ],
35
+ (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(), // _deadline: uint256
36
+ ],
37
+ ]);
38
+ return {
39
+ targetExchange: this.routerAddress,
40
+ payload,
41
+ networkFee: '0',
42
+ };
43
+ }
44
+ getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
45
+ const swapFunction = side === constants_1.SwapSide.SELL
46
+ ? types_1.TraderJoeV2RouterFunctions.swapExactTokensForTokens
47
+ : types_1.TraderJoeV2RouterFunctions.swapTokensForExactTokens;
48
+ const swapFunctionParams = side === constants_1.SwapSide.SELL
49
+ ? [
50
+ srcAmount,
51
+ destAmount,
52
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
53
+ this.augustusAddress,
54
+ (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
55
+ ]
56
+ : [
57
+ destAmount,
58
+ srcAmount,
59
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
60
+ this.augustusAddress,
61
+ (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
62
+ ];
63
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(swapFunction, swapFunctionParams);
64
+ return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, this.routerAddress);
65
+ }
66
+ getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
67
+ const swapFunction = side === constants_1.SwapSide.SELL
68
+ ? types_1.TraderJoeV2RouterFunctions.swapExactTokensForTokens
69
+ : types_1.TraderJoeV2RouterFunctions.swapTokensForExactTokens;
70
+ const placeholder = (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)();
71
+ const swapFunctionParams = side === constants_1.SwapSide.SELL
72
+ ? [
73
+ srcAmount,
74
+ destAmount,
75
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
76
+ recipient,
77
+ placeholder,
78
+ ]
79
+ : [
80
+ destAmount,
81
+ srcAmount,
82
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
83
+ recipient,
84
+ placeholder,
85
+ ];
86
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(swapFunction, swapFunctionParams);
87
+ return {
88
+ needWrapNative: this.needWrapNative,
89
+ dexFuncHasRecipient: true,
90
+ exchangeData: swapData,
91
+ targetExchange: this.routerAddress,
92
+ returnAmountPos: side === constants_1.SwapSide.SELL
93
+ ? (0, utils_1.extractReturnAmountPosition)(this.exchangeRouterInterface, swapFunction, 'amountOut')
94
+ : undefined,
95
+ };
96
+ }
97
+ }
98
+ exports.BaseTraderJoeV2 = BaseTraderJoeV2;
99
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/base.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import { Address } from '@paraswap/core';
2
+ export declare const TRADERJOE_V2_0_ROUTER_ADDRESS: {
3
+ [network: number]: Address;
4
+ };
2
5
  export declare const TRADERJOE_V2_1_ROUTER_ADDRESS: {
3
6
  [network: number]: Address;
4
7
  };
8
+ export declare const TRADERJOE_V2_2_ROUTER_ADDRESS: {
9
+ [network: number]: Address;
10
+ };
@@ -1,11 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TRADERJOE_V2_1_ROUTER_ADDRESS = void 0;
3
+ exports.TRADERJOE_V2_2_ROUTER_ADDRESS = exports.TRADERJOE_V2_1_ROUTER_ADDRESS = exports.TRADERJOE_V2_0_ROUTER_ADDRESS = void 0;
4
4
  const constants_1 = require("../../constants");
5
+ exports.TRADERJOE_V2_0_ROUTER_ADDRESS = {
6
+ [constants_1.Network.AVALANCHE]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
7
+ [constants_1.Network.ARBITRUM]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
8
+ [constants_1.Network.BSC]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
9
+ [constants_1.Network.MAINNET]: '0x9A93a421b74F1c5755b83dD2C211614dC419C44b',
10
+ };
5
11
  exports.TRADERJOE_V2_1_ROUTER_ADDRESS = {
6
12
  [constants_1.Network.AVALANCHE]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
7
13
  [constants_1.Network.ARBITRUM]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
8
14
  [constants_1.Network.BSC]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
9
15
  [constants_1.Network.MAINNET]: '0x9A93a421b74F1c5755b83dD2C211614dC419C44b',
10
16
  };
17
+ exports.TRADERJOE_V2_2_ROUTER_ADDRESS = {
18
+ [constants_1.Network.AVALANCHE]: '0x18556da13313f3532c54711497a8fedac273220e',
19
+ [constants_1.Network.ARBITRUM]: '0x18556da13313f3532c54711497a8fedac273220e',
20
+ };
11
21
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/config.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE7B,QAAA,6BAA6B,GAAmC;IAC3E,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;IACjE,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IAChE,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;IAC3D,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;CAChE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/config.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE7B,QAAA,6BAA6B,GAAmC;IAC3E,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;IACjE,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IAChE,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;IAC3D,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;CAChE,CAAC;AAEW,QAAA,6BAA6B,GAAmC;IAC3E,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;IACjE,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IAChE,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;IAC3D,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;CAChE,CAAC;AAEW,QAAA,6BAA6B,GAAmC;IAC3E,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;IACjE,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;CACjE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { IDexHelper } from '../../dex-helper';
2
+ import { BaseTraderJoeV2 } from './base';
3
+ export declare class TraderJoeV21 extends BaseTraderJoeV2 {
4
+ static dexKeys: string[];
5
+ needWrapNative: boolean;
6
+ constructor(dexHelper: IDexHelper);
7
+ }
@@ -0,0 +1,20 @@
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.TraderJoeV21 = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const TraderJoeV21Router_json_1 = __importDefault(require("../../abi/TraderJoeV21Router.json"));
9
+ const config_1 = require("./config");
10
+ const base_1 = require("./base");
11
+ class TraderJoeV21 extends base_1.BaseTraderJoeV2 {
12
+ constructor(dexHelper) {
13
+ super(dexHelper, 'traderjoev2.1', config_1.TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network], '2');
14
+ this.needWrapNative = true;
15
+ this.exchangeRouterInterface = new abi_1.Interface(TraderJoeV21Router_json_1.default);
16
+ }
17
+ }
18
+ exports.TraderJoeV21 = TraderJoeV21;
19
+ TraderJoeV21.dexKeys = ['traderjoev2.1'];
20
+ //# sourceMappingURL=trader-joe-v2.1-new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trader-joe-v2.1-new.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/trader-joe-v2.1-new.ts"],"names":[],"mappings":";;;;;;AACA,4CAA6D;AAC7D,gGAAsE;AACtE,qCAAyD;AACzD,iCAAyC;AAEzC,MAAa,YAAa,SAAQ,sBAAe;IAI/C,YAAY,SAAqB;QAC/B,KAAK,CACH,SAAS,EACT,eAAe,EACf,sCAA6B,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5D,GAAG,CACJ,CAAC;QARJ,mBAAc,GAAG,IAAI,CAAC;QAUpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAS,CAC1C,iCAAuC,CACxC,CAAC;IACJ,CAAC;;AAfH,oCAgBC;AAfQ,oBAAO,GAAG,CAAC,eAAe,CAAC,CAAC"}
@@ -7,7 +7,7 @@ import { NumberAsString } from '@paraswap/core';
7
7
  import { AsyncOrSync } from 'ts-essentials';
8
8
  import { Interface } from '@ethersproject/abi';
9
9
  import { TraderJoeV2Data, TraderJoeV2RouterParam } from './types';
10
- export declare class TraderJoeV21 extends SimpleExchange implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam> {
10
+ export declare class TraderJoeV20 extends SimpleExchange implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam> {
11
11
  static dexKeys: string[];
12
12
  protected routerAddress: string;
13
13
  exchangeRouterInterface: Interface;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TraderJoeV21 = void 0;
6
+ exports.TraderJoeV20 = void 0;
7
7
  const constants_1 = require("../../constants");
8
8
  const simple_exchange_1 = require("../simple-exchange");
9
9
  const abi_1 = require("@ethersproject/abi");
@@ -11,12 +11,12 @@ const TraderJoeV21Router_json_1 = __importDefault(require("../../abi/TraderJoeV2
11
11
  const types_1 = require("./types");
12
12
  const config_1 = require("./config");
13
13
  const utils_1 = require("../../executor/utils");
14
- class TraderJoeV21 extends simple_exchange_1.SimpleExchange {
14
+ class TraderJoeV20 extends simple_exchange_1.SimpleExchange {
15
15
  constructor(dexHelper) {
16
- super(dexHelper, 'traderjoev2.1');
16
+ super(dexHelper, 'traderjoev2.0');
17
17
  this.needWrapNative = true;
18
18
  this.routerAddress =
19
- config_1.TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network];
19
+ config_1.TRADERJOE_V2_0_ROUTER_ADDRESS[dexHelper.config.data.network];
20
20
  this.exchangeRouterInterface = new abi_1.Interface(TraderJoeV21Router_json_1.default);
21
21
  }
22
22
  getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
@@ -97,6 +97,6 @@ class TraderJoeV21 extends simple_exchange_1.SimpleExchange {
97
97
  };
98
98
  }
99
99
  }
100
- exports.TraderJoeV21 = TraderJoeV21;
101
- TraderJoeV21.dexKeys = ['traderjoev2.1'];
100
+ exports.TraderJoeV20 = TraderJoeV20;
101
+ TraderJoeV20.dexKeys = ['traderjoev2.0'];
102
102
  //# sourceMappingURL=trader-joe-v2.1.js.map
@@ -0,0 +1,7 @@
1
+ import { IDexHelper } from '../../dex-helper';
2
+ import { BaseTraderJoeV2 } from './base';
3
+ export declare class TraderJoeV22 extends BaseTraderJoeV2 {
4
+ static dexKeys: string[];
5
+ needWrapNative: boolean;
6
+ constructor(dexHelper: IDexHelper);
7
+ }
@@ -0,0 +1,20 @@
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.TraderJoeV22 = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const TraderJoeV21Router_json_1 = __importDefault(require("../../abi/TraderJoeV21Router.json"));
9
+ const config_1 = require("./config");
10
+ const base_1 = require("./base");
11
+ class TraderJoeV22 extends base_1.BaseTraderJoeV2 {
12
+ constructor(dexHelper) {
13
+ super(dexHelper, 'traderjoev2.2', config_1.TRADERJOE_V2_2_ROUTER_ADDRESS[dexHelper.config.data.network], '3');
14
+ this.needWrapNative = true;
15
+ this.exchangeRouterInterface = new abi_1.Interface(TraderJoeV21Router_json_1.default);
16
+ }
17
+ }
18
+ exports.TraderJoeV22 = TraderJoeV22;
19
+ TraderJoeV22.dexKeys = ['traderjoev2.2'];
20
+ //# sourceMappingURL=trader-joe-v2.2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trader-joe-v2.2.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2.1/trader-joe-v2.2.ts"],"names":[],"mappings":";;;;;;AACA,4CAA6D;AAC7D,gGAAsE;AACtE,qCAAyD;AACzD,iCAAyC;AAEzC,MAAa,YAAa,SAAQ,sBAAe;IAI/C,YAAY,SAAqB;QAC/B,KAAK,CACH,SAAS,EACT,eAAe,EACf,sCAA6B,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5D,GAAG,CACJ,CAAC;QARJ,mBAAc,GAAG,IAAI,CAAC;QAUpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAS,CAC1C,iCAAuC,CACxC,CAAC;IACJ,CAAC;;AAfH,oCAgBC;AAfQ,oBAAO,GAAG,CAAC,eAAe,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "3.8.9-node-v20.0",
3
+ "version": "3.8.9-trader-joe-v2.2.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
package/src/dex/index.ts CHANGED
@@ -66,7 +66,7 @@ import { MaverickV2 } from './maverick-v2/maverick-v2';
66
66
  import { QuickSwapV3 } from './quickswap/quickswap-v3';
67
67
  import { ThenaFusion } from './quickswap/thena-fusion';
68
68
  import { SwaapV2 } from './swaap-v2/swaap-v2';
69
- import { TraderJoeV21 } from './trader-joe-v2.1/trader-joe-v2.1';
69
+ import { TraderJoeV20 } from './trader-joe-v2.1/trader-joe-v2.1';
70
70
  import { PancakeswapV3 } from './pancakeswap-v3/pancakeswap-v3';
71
71
  import { Algebra } from './algebra/algebra';
72
72
  import { AngleTransmuter } from './angle-transmuter/angle-transmuter';
@@ -92,7 +92,7 @@ const LegacyDexes = [
92
92
  DodoV2,
93
93
  QuickSwapV3,
94
94
  ThenaFusion,
95
- TraderJoeV21,
95
+ TraderJoeV20,
96
96
  Lido,
97
97
  AugustusRFQOrder,
98
98
  EtherFi,
@@ -0,0 +1,178 @@
1
+ import { SwapSide } from '../../constants';
2
+ import {
3
+ AdapterExchangeParam,
4
+ Address,
5
+ DexExchangeParam,
6
+ SimpleExchangeParam,
7
+ } from '../../types';
8
+ import { IDexTxBuilder } from '../idex';
9
+ import { IDexHelper } from '../../dex-helper';
10
+ import {
11
+ getLocalDeadlineAsFriendlyPlaceholder,
12
+ SimpleExchange,
13
+ } from '../simple-exchange';
14
+ import { NumberAsString } from '@paraswap/core';
15
+ import { AsyncOrSync } from 'ts-essentials';
16
+ import { Interface, JsonFragment } from '@ethersproject/abi';
17
+ import TraderJoeV21RouterABI from '../../abi/TraderJoeV21Router.json';
18
+ import {
19
+ TraderJoeV2Data,
20
+ TraderJoeV2RouterFunctions,
21
+ TraderJoeV2RouterParam,
22
+ } from './types';
23
+ import { extractReturnAmountPosition } from '../../executor/utils';
24
+
25
+ export class BaseTraderJoeV2
26
+ extends SimpleExchange
27
+ implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam>
28
+ {
29
+ exchangeRouterInterface: Interface;
30
+
31
+ constructor(
32
+ dexHelper: IDexHelper,
33
+ dexKey: string,
34
+ protected routerAddress: string,
35
+ protected versionIndex: string,
36
+ ) {
37
+ super(dexHelper, dexKey);
38
+
39
+ this.exchangeRouterInterface = new Interface(
40
+ TraderJoeV21RouterABI as JsonFragment[],
41
+ );
42
+ }
43
+
44
+ getAdapterParam(
45
+ srcToken: Address,
46
+ destToken: Address,
47
+ srcAmount: NumberAsString,
48
+ destAmount: NumberAsString,
49
+ data: TraderJoeV2Data,
50
+ side: SwapSide,
51
+ ): AdapterExchangeParam {
52
+ let payload = this.abiCoder.encodeParameters(
53
+ ['tuple(tuple(uint256[],uint8[],address[]),uint256)'],
54
+ [
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
+ ],
68
+ getLocalDeadlineAsFriendlyPlaceholder(), // _deadline: uint256
69
+ ],
70
+ ],
71
+ );
72
+
73
+ return {
74
+ targetExchange: this.routerAddress,
75
+ payload,
76
+ networkFee: '0',
77
+ };
78
+ }
79
+
80
+ getSimpleParam(
81
+ srcToken: Address,
82
+ destToken: Address,
83
+ srcAmount: NumberAsString,
84
+ destAmount: NumberAsString,
85
+ data: TraderJoeV2Data,
86
+ side: SwapSide,
87
+ ): AsyncOrSync<SimpleExchangeParam> {
88
+ const swapFunction =
89
+ side === SwapSide.SELL
90
+ ? TraderJoeV2RouterFunctions.swapExactTokensForTokens
91
+ : TraderJoeV2RouterFunctions.swapTokensForExactTokens;
92
+
93
+ const swapFunctionParams: TraderJoeV2RouterParam =
94
+ side === SwapSide.SELL
95
+ ? [
96
+ srcAmount,
97
+ destAmount,
98
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
99
+ this.augustusAddress,
100
+ getLocalDeadlineAsFriendlyPlaceholder(),
101
+ ]
102
+ : [
103
+ destAmount,
104
+ srcAmount,
105
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
106
+ this.augustusAddress,
107
+ getLocalDeadlineAsFriendlyPlaceholder(),
108
+ ];
109
+
110
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
111
+ swapFunction,
112
+ swapFunctionParams,
113
+ );
114
+
115
+ return this.buildSimpleParamWithoutWETHConversion(
116
+ srcToken,
117
+ srcAmount,
118
+ destToken,
119
+ destAmount,
120
+ swapData,
121
+ this.routerAddress,
122
+ );
123
+ }
124
+
125
+ getDexParam(
126
+ srcToken: Address,
127
+ destToken: Address,
128
+ srcAmount: NumberAsString,
129
+ destAmount: NumberAsString,
130
+ recipient: Address,
131
+ data: TraderJoeV2Data,
132
+ side: SwapSide,
133
+ ): DexExchangeParam {
134
+ const swapFunction =
135
+ side === SwapSide.SELL
136
+ ? TraderJoeV2RouterFunctions.swapExactTokensForTokens
137
+ : TraderJoeV2RouterFunctions.swapTokensForExactTokens;
138
+
139
+ const placeholder = getLocalDeadlineAsFriendlyPlaceholder();
140
+
141
+ const swapFunctionParams: TraderJoeV2RouterParam =
142
+ side === SwapSide.SELL
143
+ ? [
144
+ srcAmount,
145
+ destAmount,
146
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
147
+ recipient,
148
+ placeholder,
149
+ ]
150
+ : [
151
+ destAmount,
152
+ srcAmount,
153
+ [[data.binStep], [this.versionIndex], [srcToken, destToken]],
154
+ recipient,
155
+ placeholder,
156
+ ];
157
+
158
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
159
+ swapFunction,
160
+ swapFunctionParams,
161
+ );
162
+
163
+ return {
164
+ needWrapNative: this.needWrapNative,
165
+ dexFuncHasRecipient: true,
166
+ exchangeData: swapData,
167
+ targetExchange: this.routerAddress,
168
+ returnAmountPos:
169
+ side === SwapSide.SELL
170
+ ? extractReturnAmountPosition(
171
+ this.exchangeRouterInterface,
172
+ swapFunction,
173
+ 'amountOut',
174
+ )
175
+ : undefined,
176
+ };
177
+ }
178
+ }
@@ -1,9 +1,21 @@
1
1
  import { Address } from '@paraswap/core';
2
2
  import { Network } from '../../constants';
3
3
 
4
+ export const TRADERJOE_V2_0_ROUTER_ADDRESS: { [network: number]: Address } = {
5
+ [Network.AVALANCHE]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
6
+ [Network.ARBITRUM]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
7
+ [Network.BSC]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
8
+ [Network.MAINNET]: '0x9A93a421b74F1c5755b83dD2C211614dC419C44b',
9
+ };
10
+
4
11
  export const TRADERJOE_V2_1_ROUTER_ADDRESS: { [network: number]: Address } = {
5
12
  [Network.AVALANCHE]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
6
13
  [Network.ARBITRUM]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
7
14
  [Network.BSC]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
8
15
  [Network.MAINNET]: '0x9A93a421b74F1c5755b83dD2C211614dC419C44b',
9
16
  };
17
+
18
+ export const TRADERJOE_V2_2_ROUTER_ADDRESS: { [network: number]: Address } = {
19
+ [Network.AVALANCHE]: '0x18556da13313f3532c54711497a8fedac273220e',
20
+ [Network.ARBITRUM]: '0x18556da13313f3532c54711497a8fedac273220e',
21
+ };
@@ -0,0 +1,23 @@
1
+ import { IDexHelper } from '../../dex-helper';
2
+ import { Interface, JsonFragment } from '@ethersproject/abi';
3
+ import TraderJoeV21RouterABI from '../../abi/TraderJoeV21Router.json';
4
+ import { TRADERJOE_V2_1_ROUTER_ADDRESS } from './config';
5
+ import { BaseTraderJoeV2 } from './base';
6
+
7
+ export class TraderJoeV21 extends BaseTraderJoeV2 {
8
+ static dexKeys = ['traderjoev2.1'];
9
+ needWrapNative = true;
10
+
11
+ constructor(dexHelper: IDexHelper) {
12
+ super(
13
+ dexHelper,
14
+ 'traderjoev2.1',
15
+ TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network],
16
+ '2',
17
+ );
18
+
19
+ this.exchangeRouterInterface = new Interface(
20
+ TraderJoeV21RouterABI as JsonFragment[],
21
+ );
22
+ }
23
+ }
@@ -20,23 +20,23 @@ import {
20
20
  TraderJoeV2RouterFunctions,
21
21
  TraderJoeV2RouterParam,
22
22
  } from './types';
23
- import { TRADERJOE_V2_1_ROUTER_ADDRESS } from './config';
23
+ import { TRADERJOE_V2_0_ROUTER_ADDRESS } from './config';
24
24
  import { extractReturnAmountPosition } from '../../executor/utils';
25
25
 
26
- export class TraderJoeV21
26
+ export class TraderJoeV20
27
27
  extends SimpleExchange
28
28
  implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam>
29
29
  {
30
- static dexKeys = ['traderjoev2.1'];
30
+ static dexKeys = ['traderjoev2.0'];
31
31
  protected routerAddress: string;
32
32
  exchangeRouterInterface: Interface;
33
33
  needWrapNative = true;
34
34
 
35
35
  constructor(dexHelper: IDexHelper) {
36
- super(dexHelper, 'traderjoev2.1');
36
+ super(dexHelper, 'traderjoev2.0');
37
37
 
38
38
  this.routerAddress =
39
- TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network];
39
+ TRADERJOE_V2_0_ROUTER_ADDRESS[dexHelper.config.data.network];
40
40
 
41
41
  this.exchangeRouterInterface = new Interface(
42
42
  TraderJoeV21RouterABI as JsonFragment[],
@@ -0,0 +1,23 @@
1
+ import { IDexHelper } from '../../dex-helper';
2
+ import { Interface, JsonFragment } from '@ethersproject/abi';
3
+ import TraderJoeV21RouterABI from '../../abi/TraderJoeV21Router.json';
4
+ import { TRADERJOE_V2_2_ROUTER_ADDRESS } from './config';
5
+ import { BaseTraderJoeV2 } from './base';
6
+
7
+ export class TraderJoeV22 extends BaseTraderJoeV2 {
8
+ static dexKeys = ['traderjoev2.2'];
9
+ needWrapNative = true;
10
+
11
+ constructor(dexHelper: IDexHelper) {
12
+ super(
13
+ dexHelper,
14
+ 'traderjoev2.2',
15
+ TRADERJOE_V2_2_ROUTER_ADDRESS[dexHelper.config.data.network],
16
+ '3',
17
+ );
18
+
19
+ this.exchangeRouterInterface = new Interface(
20
+ TraderJoeV21RouterABI as JsonFragment[],
21
+ );
22
+ }
23
+ }