@paraswap/dex-lib 3.8.15 → 3.8.16-oswap.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.
Files changed (118) hide show
  1. package/build/abi/lite-psm/dai.json +333 -0
  2. package/build/abi/lite-psm/psm.json +468 -0
  3. package/build/abi/lite-psm/usdc.json +814 -0
  4. package/build/config.js +1 -0
  5. package/build/config.js.map +1 -1
  6. package/build/dex/angle-transmuter/angle-transmuter.js +1 -1
  7. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -1
  8. package/build/dex/dexalot/config.js +3 -0
  9. package/build/dex/dexalot/config.js.map +1 -1
  10. package/build/dex/idex.d.ts +11 -7
  11. package/build/dex/index.js +6 -0
  12. package/build/dex/index.js.map +1 -1
  13. package/build/dex/integral/integral.js +8 -9
  14. package/build/dex/integral/integral.js.map +1 -1
  15. package/build/dex/integral/types.d.ts +1 -0
  16. package/build/dex/integral/types.js.map +1 -1
  17. package/build/dex/lite-psm/config.d.ts +3 -0
  18. package/build/dex/lite-psm/config.js +29 -0
  19. package/build/dex/lite-psm/config.js.map +1 -0
  20. package/build/dex/lite-psm/lite-psm-event-pool.d.ts +29 -0
  21. package/build/dex/lite-psm/lite-psm-event-pool.js +164 -0
  22. package/build/dex/lite-psm/lite-psm-event-pool.js.map +1 -0
  23. package/build/dex/lite-psm/lite-psm.d.ts +52 -0
  24. package/build/dex/lite-psm/lite-psm.js +341 -0
  25. package/build/dex/lite-psm/lite-psm.js.map +1 -0
  26. package/build/dex/lite-psm/types.d.ts +40 -0
  27. package/build/dex/lite-psm/types.js +3 -0
  28. package/build/dex/lite-psm/types.js.map +1 -0
  29. package/build/dex/maker-psm/maker-psm.js +4 -1
  30. package/build/dex/maker-psm/maker-psm.js.map +1 -1
  31. package/build/dex/maverick-v2/config.js +4 -0
  32. package/build/dex/maverick-v2/config.js.map +1 -1
  33. package/build/dex/maverick-v2/maverick-math/maverick-pool-math.js +4 -0
  34. package/build/dex/maverick-v2/maverick-math/maverick-pool-math.js.map +1 -1
  35. package/build/dex/maverick-v2/maverick-v2-pool.d.ts +1 -1
  36. package/build/dex/maverick-v2/maverick-v2-pool.js +8 -8
  37. package/build/dex/maverick-v2/maverick-v2-pool.js.map +1 -1
  38. package/build/dex/maverick-v2/maverick-v2.d.ts +5 -4
  39. package/build/dex/maverick-v2/maverick-v2.js +73 -63
  40. package/build/dex/maverick-v2/maverick-v2.js.map +1 -1
  41. package/build/dex/maverick-v2/types.d.ts +4 -0
  42. package/build/dex/oswap/oswap-pool.js +8 -8
  43. package/build/dex/oswap/oswap-pool.js.map +1 -1
  44. package/build/dex/oswap/oswap.d.ts +2 -2
  45. package/build/dex/oswap/oswap.js +51 -44
  46. package/build/dex/oswap/oswap.js.map +1 -1
  47. package/build/dex/oswap/types.d.ts +4 -4
  48. package/build/dex/solidly-v3/solidly-v3.js +7 -0
  49. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  50. package/build/dex/trader-joe-v2.1/base.d.ts +18 -0
  51. package/build/dex/trader-joe-v2.1/base.js +88 -0
  52. package/build/dex/trader-joe-v2.1/base.js.map +1 -0
  53. package/build/dex/trader-joe-v2.1/config.d.ts +3 -0
  54. package/build/dex/trader-joe-v2.1/config.js +7 -3
  55. package/build/dex/trader-joe-v2.1/config.js.map +1 -1
  56. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  57. package/build/dex/trader-joe-v2.1/optimizer.js +44 -0
  58. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  59. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.d.ts +2 -14
  60. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js +3 -85
  61. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js.map +1 -1
  62. package/build/dex/trader-joe-v2.1/trader-joe-v2.2.d.ts +7 -0
  63. package/build/dex/trader-joe-v2.1/trader-joe-v2.2.js +20 -0
  64. package/build/dex/trader-joe-v2.1/trader-joe-v2.2.js.map +1 -0
  65. package/build/dex/trader-joe-v2.1/types.d.ts +3 -3
  66. package/build/dex/weth/config.js +3 -0
  67. package/build/dex/weth/config.js.map +1 -1
  68. package/build/dex-helper/dummy-dex-helper.js +1 -1
  69. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  70. package/build/executor/types.d.ts +2 -1
  71. package/build/executor/types.js +1 -0
  72. package/build/executor/types.js.map +1 -1
  73. package/package.json +1 -1
  74. package/src/abi/lite-psm/dai.json +333 -0
  75. package/src/abi/lite-psm/psm.json +468 -0
  76. package/src/abi/lite-psm/usdc.json +814 -0
  77. package/src/abi/maverick-v2/MaverickV2Router.json +778 -0
  78. package/src/abi/oswap/oswap.abi.json +452 -0
  79. package/src/config.ts +1 -0
  80. package/src/dex/angle-transmuter/angle-transmuter.ts +1 -1
  81. package/src/dex/dexalot/config.ts +3 -0
  82. package/src/dex/dexalot/dexalot-e2e.test.ts +23 -1
  83. package/src/dex/dexalot/dexalot-integration.test.ts +122 -0
  84. package/src/dex/idex.ts +48 -41
  85. package/src/dex/index.ts +6 -0
  86. package/src/dex/lite-psm/config.ts +29 -0
  87. package/src/dex/lite-psm/lite-psm-e2e.test.ts +79 -0
  88. package/src/dex/lite-psm/lite-psm-event-pool.ts +216 -0
  89. package/src/dex/lite-psm/lite-psm-events.test.ts +61 -0
  90. package/src/dex/lite-psm/lite-psm-integration.test.ts +99 -0
  91. package/src/dex/lite-psm/lite-psm.ts +523 -0
  92. package/src/dex/lite-psm/types.ts +46 -0
  93. package/src/dex/maker-psm/maker-psm.ts +4 -1
  94. package/src/dex/maverick-v2/config.ts +4 -0
  95. package/src/dex/maverick-v2/maverick-math/maverick-pool-math.ts +5 -0
  96. package/src/dex/maverick-v2/maverick-v2-e2e.test.ts +21 -43
  97. package/src/dex/maverick-v2/maverick-v2-integration.test.ts +100 -96
  98. package/src/dex/maverick-v2/maverick-v2-pool.ts +8 -8
  99. package/src/dex/maverick-v2/maverick-v2.ts +111 -81
  100. package/src/dex/maverick-v2/types.ts +4 -0
  101. package/src/dex/oswap/config.ts +32 -0
  102. package/src/dex/oswap/oswap-e2e.test.ts +91 -0
  103. package/src/dex/oswap/oswap-events.test.ts +88 -0
  104. package/src/dex/oswap/oswap-integration.test.ts +269 -0
  105. package/src/dex/oswap/oswap-pool.ts +190 -0
  106. package/src/dex/oswap/oswap.ts +392 -0
  107. package/src/dex/oswap/types.ts +29 -0
  108. package/src/dex/solidly-v3/solidly-v3.ts +7 -0
  109. package/src/dex/trader-joe-v2.1/base.ts +167 -0
  110. package/src/dex/trader-joe-v2.1/config.ts +7 -2
  111. package/src/dex/trader-joe-v2.1/trader-joe-v2.1.ts +8 -165
  112. package/src/dex/trader-joe-v2.1/trader-joe-v2.2.ts +23 -0
  113. package/src/dex/trader-joe-v2.1/types.ts +3 -3
  114. package/src/dex/weth/config.ts +3 -0
  115. package/src/dex/weth/weth-e2e.test.ts +156 -0
  116. package/src/dex-helper/dummy-dex-helper.ts +1 -1
  117. package/src/executor/types.ts +1 -0
  118. package/tests/constants-e2e.ts +9 -0
@@ -1,180 +1,23 @@
1
- import { SwapSide } from '../../constants';
2
- import {
3
- AdapterExchangeParam,
4
- Address,
5
- DexExchangeParam,
6
- SimpleExchangeParam,
7
- } from '../../types';
8
- import { IDexTxBuilder } from '../idex';
9
1
  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
2
  import { Interface, JsonFragment } from '@ethersproject/abi';
17
3
  import TraderJoeV21RouterABI from '../../abi/TraderJoeV21Router.json';
18
- import {
19
- TraderJoeV2Data,
20
- TraderJoeV2RouterFunctions,
21
- TraderJoeV2RouterParam,
22
- } from './types';
23
4
  import { TRADERJOE_V2_1_ROUTER_ADDRESS } from './config';
24
- import { extractReturnAmountPosition } from '../../executor/utils';
5
+ import { BaseTraderJoeV2 } from './base';
25
6
 
26
- export class TraderJoeV21
27
- extends SimpleExchange
28
- implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam>
29
- {
7
+ export class TraderJoeV21 extends BaseTraderJoeV2 {
30
8
  static dexKeys = ['traderjoev2.1'];
31
- protected routerAddress: string;
32
- exchangeRouterInterface: Interface;
33
9
  needWrapNative = true;
34
10
 
35
11
  constructor(dexHelper: IDexHelper) {
36
- super(dexHelper, 'traderjoev2.1');
37
-
38
- this.routerAddress =
39
- TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network];
12
+ super(
13
+ dexHelper,
14
+ 'traderjoev2.1',
15
+ TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network],
16
+ '2',
17
+ );
40
18
 
41
19
  this.exchangeRouterInterface = new Interface(
42
20
  TraderJoeV21RouterABI as JsonFragment[],
43
21
  );
44
22
  }
45
-
46
- getAdapterParam(
47
- srcToken: Address,
48
- destToken: Address,
49
- srcAmount: NumberAsString,
50
- destAmount: NumberAsString,
51
- data: TraderJoeV2Data,
52
- side: SwapSide,
53
- ): AdapterExchangeParam {
54
- let payload = this.abiCoder.encodeParameters(
55
- ['tuple(tuple(uint256[],uint8[],address[]),uint256)'],
56
- [
57
- [
58
- [
59
- [
60
- data.binStep, // _pairBinSteps: uint256[]
61
- ],
62
- [
63
- 2, // _versions: uint8[]
64
- ],
65
- [
66
- data.tokenIn,
67
- data.tokenOut, // _tokenPath: address[]
68
- ],
69
- ],
70
- getLocalDeadlineAsFriendlyPlaceholder(), // _deadline: uint256
71
- ],
72
- ],
73
- );
74
-
75
- return {
76
- targetExchange: this.routerAddress,
77
- payload,
78
- networkFee: '0',
79
- };
80
- }
81
-
82
- getSimpleParam(
83
- srcToken: Address,
84
- destToken: Address,
85
- srcAmount: NumberAsString,
86
- destAmount: NumberAsString,
87
- data: TraderJoeV2Data,
88
- side: SwapSide,
89
- ): AsyncOrSync<SimpleExchangeParam> {
90
- const swapFunction =
91
- side === SwapSide.SELL
92
- ? TraderJoeV2RouterFunctions.swapExactTokensForTokens
93
- : TraderJoeV2RouterFunctions.swapTokensForExactTokens;
94
-
95
- const swapFunctionParams: TraderJoeV2RouterParam =
96
- side === SwapSide.SELL
97
- ? [
98
- srcAmount,
99
- destAmount,
100
- [[data.binStep], ['2'], [srcToken, destToken]],
101
- this.augustusAddress,
102
- getLocalDeadlineAsFriendlyPlaceholder(),
103
- ]
104
- : [
105
- destAmount,
106
- srcAmount,
107
- [[data.binStep], ['2'], [srcToken, destToken]],
108
- this.augustusAddress,
109
- getLocalDeadlineAsFriendlyPlaceholder(),
110
- ];
111
-
112
- const swapData = this.exchangeRouterInterface.encodeFunctionData(
113
- swapFunction,
114
- swapFunctionParams,
115
- );
116
-
117
- return this.buildSimpleParamWithoutWETHConversion(
118
- srcToken,
119
- srcAmount,
120
- destToken,
121
- destAmount,
122
- swapData,
123
- this.routerAddress,
124
- );
125
- }
126
-
127
- getDexParam(
128
- srcToken: Address,
129
- destToken: Address,
130
- srcAmount: NumberAsString,
131
- destAmount: NumberAsString,
132
- recipient: Address,
133
- data: TraderJoeV2Data,
134
- side: SwapSide,
135
- ): DexExchangeParam {
136
- const swapFunction =
137
- side === SwapSide.SELL
138
- ? TraderJoeV2RouterFunctions.swapExactTokensForTokens
139
- : TraderJoeV2RouterFunctions.swapTokensForExactTokens;
140
-
141
- const placeholder = getLocalDeadlineAsFriendlyPlaceholder();
142
-
143
- const swapFunctionParams: TraderJoeV2RouterParam =
144
- side === SwapSide.SELL
145
- ? [
146
- srcAmount,
147
- destAmount,
148
- [[data.binStep], ['2'], [srcToken, destToken]],
149
- recipient,
150
- placeholder,
151
- ]
152
- : [
153
- destAmount,
154
- srcAmount,
155
- [[data.binStep], ['2'], [srcToken, destToken]],
156
- recipient,
157
- placeholder,
158
- ];
159
-
160
- const swapData = this.exchangeRouterInterface.encodeFunctionData(
161
- swapFunction,
162
- swapFunctionParams,
163
- );
164
-
165
- return {
166
- needWrapNative: this.needWrapNative,
167
- dexFuncHasRecipient: true,
168
- exchangeData: swapData,
169
- targetExchange: this.routerAddress,
170
- returnAmountPos:
171
- side === SwapSide.SELL
172
- ? extractReturnAmountPosition(
173
- this.exchangeRouterInterface,
174
- swapFunction,
175
- 'amountOut',
176
- )
177
- : undefined,
178
- };
179
- }
180
23
  }
@@ -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
+ }
@@ -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 {
@@ -73,4 +73,7 @@ export const Adapters: {
73
73
  [Network.BASE]: {
74
74
  [SwapSide.SELL]: [{ name: 'BaseAdapter02', index: 2 }],
75
75
  },
76
+ [Network.ZKEVM]: {
77
+ [SwapSide.SELL]: [{ name: 'PolygonZkEvmAdapter01', index: 3 }],
78
+ },
76
79
  };
@@ -873,4 +873,160 @@ describe('Weth E2E', () => {
873
873
  });
874
874
  });
875
875
  });
876
+
877
+ describe('Weth ZKEvm', () => {
878
+ const dexKey = 'Weth';
879
+ const network = Network.ZKEVM;
880
+
881
+ const nativeTokenSymbol = 'ETH';
882
+ const wrappedTokenSymbol = 'WETH';
883
+
884
+ const nativeAmount = '1000000000000000000';
885
+ const wrappedAmount = '1000000000000000000';
886
+
887
+ const tokens = Tokens[network];
888
+ const holders = Holders[network];
889
+ const provider = new StaticJsonRpcProvider(
890
+ generateConfig(network).privateHttpProvider,
891
+ network,
892
+ );
893
+
894
+ const nativeToken = tokens[nativeTokenSymbol];
895
+ const wrappedToken = tokens[wrappedTokenSymbol];
896
+
897
+ const nativeHolder = holders[nativeTokenSymbol];
898
+ const wrappedHolder = holders[wrappedTokenSymbol];
899
+
900
+ describe('SimpleSwap SELL', () => {
901
+ const contractMethod = ContractMethod.simpleSwap;
902
+ const side = SwapSide.SELL;
903
+
904
+ it('native -> wrapped', async () => {
905
+ await testE2E(
906
+ nativeToken,
907
+ wrappedToken,
908
+ nativeHolder,
909
+ nativeAmount,
910
+ side,
911
+ dexKey,
912
+ contractMethod,
913
+ network,
914
+ provider,
915
+ undefined,
916
+ undefined,
917
+ undefined,
918
+ undefined,
919
+ undefined,
920
+ true,
921
+ );
922
+ });
923
+ it('wrapped -> native', async () => {
924
+ await testE2E(
925
+ wrappedToken,
926
+ nativeToken,
927
+ wrappedHolder,
928
+ wrappedAmount,
929
+ side,
930
+ dexKey,
931
+ contractMethod,
932
+ network,
933
+ provider,
934
+ undefined,
935
+ undefined,
936
+ undefined,
937
+ undefined,
938
+ undefined,
939
+ true,
940
+ );
941
+ });
942
+ });
943
+
944
+ describe('MultiSwap SELL', () => {
945
+ const contractMethod = ContractMethod.multiSwap;
946
+ const side = SwapSide.SELL;
947
+
948
+ it('native -> wrapped', async () => {
949
+ await testE2E(
950
+ nativeToken,
951
+ wrappedToken,
952
+ nativeHolder,
953
+ nativeAmount,
954
+ side,
955
+ dexKey,
956
+ contractMethod,
957
+ network,
958
+ provider,
959
+ undefined,
960
+ undefined,
961
+ undefined,
962
+ undefined,
963
+ undefined,
964
+ true,
965
+ );
966
+ });
967
+ it('wrapped -> native', async () => {
968
+ await testE2E(
969
+ wrappedToken,
970
+ nativeToken,
971
+ wrappedHolder,
972
+ wrappedAmount,
973
+ side,
974
+ dexKey,
975
+ contractMethod,
976
+ network,
977
+ provider,
978
+ undefined,
979
+ undefined,
980
+ undefined,
981
+ undefined,
982
+ undefined,
983
+ true,
984
+ );
985
+ });
986
+ });
987
+
988
+ describe('MegaSwap SELL', () => {
989
+ const contractMethod = ContractMethod.megaSwap;
990
+ const side = SwapSide.SELL;
991
+
992
+ it('native -> wrapped', async () => {
993
+ await testE2E(
994
+ nativeToken,
995
+ wrappedToken,
996
+ nativeHolder,
997
+ nativeAmount,
998
+ side,
999
+ dexKey,
1000
+ contractMethod,
1001
+ network,
1002
+ provider,
1003
+ undefined,
1004
+ undefined,
1005
+ undefined,
1006
+ undefined,
1007
+ undefined,
1008
+ true,
1009
+ );
1010
+ });
1011
+ it('wrapped -> native', async () => {
1012
+ await testE2E(
1013
+ wrappedToken,
1014
+ nativeToken,
1015
+ wrappedHolder,
1016
+ wrappedAmount,
1017
+ side,
1018
+ dexKey,
1019
+ contractMethod,
1020
+ network,
1021
+ provider,
1022
+ undefined,
1023
+ undefined,
1024
+ undefined,
1025
+ undefined,
1026
+ undefined,
1027
+ true,
1028
+ );
1029
+ });
1030
+ });
1031
+ });
876
1032
  });
@@ -261,7 +261,7 @@ export class DummyRequestWrapper implements IRequestWrapper {
261
261
  }
262
262
 
263
263
  class DummyBlockManager implements IBlockManager {
264
- constructor(public _blockNumber: number = 42) {}
264
+ constructor(public _blockNumber: number = 20569333) {}
265
265
 
266
266
  subscribeToLogs(
267
267
  subscriber: EventSubscriber,
@@ -24,6 +24,7 @@ export enum SpecialDex {
24
24
  SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK_WITH_FEE = 8,
25
25
  SWAP_ON_AUGUSTUS_RFQ = 9, // swapOnAugustusRFQ
26
26
  EXECUTE_VERTICAL_BRANCHING = 10, // execute vertical branching
27
+ BUY_ON_SOLIDLY_V3 = 11,
27
28
  }
28
29
 
29
30
  export enum Executors {
@@ -1248,6 +1248,10 @@ export const Tokens: {
1248
1248
  address: '0x6ab707aca953edaefbc4fd23ba73294241490620',
1249
1249
  decimals: 6,
1250
1250
  },
1251
+ GHO: {
1252
+ address: '0x7dff72693f6a4149b17e7c6314655f6a9f7c8b33',
1253
+ decimals: 18,
1254
+ },
1251
1255
  },
1252
1256
  [Network.OPTIMISM]: {
1253
1257
  DAI: {
@@ -1381,6 +1385,10 @@ export const Tokens: {
1381
1385
  },
1382
1386
  },
1383
1387
  [Network.BASE]: {
1388
+ wstETH: {
1389
+ address: `0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452`,
1390
+ decimals: 18,
1391
+ },
1384
1392
  PRIME: {
1385
1393
  address: '0xfA980cEd6895AC314E7dE34Ef1bFAE90a5AdD21b',
1386
1394
  decimals: 18,
@@ -1755,6 +1763,7 @@ export const Holders: {
1755
1763
  stataUSDT: '0xc5042f9d9a18e95547864438455c8f05b4987399',
1756
1764
  aaveUSDT: '0xAfa788fab589fe61C23DF76905558f4734444D67',
1757
1765
  crvUSD: '0x9755e99bdb99495d3d31d953785d993c6df8552e',
1766
+ GHO: '0xda39E48523770197EF3CbB70C1bf1cCCF9B4b1E7',
1758
1767
  },
1759
1768
  [Network.OPTIMISM]: {
1760
1769
  ETH: '0xF6D4E5a7c5215F91f59a95065190CCa24bf64554',