@paraswap/dex-lib 3.8.5 → 3.8.6-augustus-rfq.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 (211) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/AaveV1_lending_pool.json +27 -0
  5. package/build/abi/maverick-v2/MaverickV2Router.json +778 -0
  6. package/build/abi/platypus/asset.json +490 -0
  7. package/build/abi/platypus/avax-pool.json +820 -0
  8. package/build/abi/platypus/oracle.json +119 -0
  9. package/build/abi/platypus/pool.json +677 -0
  10. package/build/abi/smardex/all/smardex-router.json +648 -0
  11. package/build/abi/smardex/layer-1/smardex-factory.json +242 -0
  12. package/build/abi/smardex/layer-1/smardex-pool.json +506 -0
  13. package/build/abi/smardex/layer-2/smardex-factory.json +185 -0
  14. package/build/abi/smardex/layer-2/smardex-pool.json +578 -0
  15. package/build/abi/swaap-v1/pool.json +1346 -0
  16. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  17. package/build/abi/wombat/pool.json +1289 -0
  18. package/build/dex/aave-v1/aave-v1.d.ts +34 -0
  19. package/build/dex/aave-v1/aave-v1.js +181 -0
  20. package/build/dex/aave-v1/aave-v1.js.map +1 -0
  21. package/build/dex/aave-v1/config.d.ts +11 -0
  22. package/build/dex/aave-v1/config.js +20 -0
  23. package/build/dex/aave-v1/config.js.map +1 -0
  24. package/build/dex/aave-v1/tokens-mainnet.json +134 -0
  25. package/build/dex/aave-v1/tokens.d.ts +3 -0
  26. package/build/dex/aave-v1/tokens.js +50 -0
  27. package/build/dex/aave-v1/tokens.js.map +1 -0
  28. package/build/dex/aave-v1/types.d.ts +12 -0
  29. package/build/dex/aave-v1/types.js +3 -0
  30. package/build/dex/aave-v1/types.js.map +1 -0
  31. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  32. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  33. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  34. package/build/dex/bProtocol.d.ts +18 -0
  35. package/build/dex/bProtocol.js +39 -0
  36. package/build/dex/bProtocol.js.map +1 -0
  37. package/build/dex/bancor.d.ts +26 -0
  38. package/build/dex/bancor.js +58 -0
  39. package/build/dex/bancor.js.map +1 -0
  40. package/build/dex/compound.d.ts +18 -0
  41. package/build/dex/compound.js +46 -0
  42. package/build/dex/compound.js.map +1 -0
  43. package/build/dex/curve-v2.d.ts +58 -0
  44. package/build/dex/curve-v2.js +180 -0
  45. package/build/dex/curve-v2.js.map +1 -0
  46. package/build/dex/dodo-v1.d.ts +33 -0
  47. package/build/dex/dodo-v1.js +63 -0
  48. package/build/dex/dodo-v1.js.map +1 -0
  49. package/build/dex/generic-rfq/generic-rfq.js +11 -2
  50. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  51. package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -0
  52. package/build/dex/generic-rfq/rate-fetcher.js +13 -0
  53. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  54. package/build/dex/lido.d.ts +19 -0
  55. package/build/dex/lido.js +42 -0
  56. package/build/dex/lido.js.map +1 -0
  57. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  58. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  59. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  60. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  61. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  62. package/build/dex/maverick-v2/config.js +4 -0
  63. package/build/dex/maverick-v2/config.js.map +1 -1
  64. package/build/dex/maverick-v2/maverick-v2.d.ts +2 -1
  65. package/build/dex/maverick-v2/maverick-v2.js +47 -40
  66. package/build/dex/maverick-v2/maverick-v2.js.map +1 -1
  67. package/build/dex/maverick-v2/types.d.ts +1 -0
  68. package/build/dex/onebit.d.ts +25 -0
  69. package/build/dex/onebit.js +42 -0
  70. package/build/dex/onebit.js.map +1 -0
  71. package/build/dex/platypus/asset.d.ts +14 -0
  72. package/build/dex/platypus/asset.js +97 -0
  73. package/build/dex/platypus/asset.js.map +1 -0
  74. package/build/dex/platypus/config.d.ts +11 -0
  75. package/build/dex/platypus/config.js +69 -0
  76. package/build/dex/platypus/config.js.map +1 -0
  77. package/build/dex/platypus/platypus.d.ts +63 -0
  78. package/build/dex/platypus/platypus.js +487 -0
  79. package/build/dex/platypus/platypus.js.map +1 -0
  80. package/build/dex/platypus/pool-avax.d.ts +8 -0
  81. package/build/dex/platypus/pool-avax.js +54 -0
  82. package/build/dex/platypus/pool-avax.js.map +1 -0
  83. package/build/dex/platypus/pool-base.d.ts +19 -0
  84. package/build/dex/platypus/pool-base.js +86 -0
  85. package/build/dex/platypus/pool-base.js.map +1 -0
  86. package/build/dex/platypus/pool-pure.d.ts +8 -0
  87. package/build/dex/platypus/pool-pure.js +37 -0
  88. package/build/dex/platypus/pool-pure.js.map +1 -0
  89. package/build/dex/platypus/pool-subscriber.d.ts +14 -0
  90. package/build/dex/platypus/pool-subscriber.js +167 -0
  91. package/build/dex/platypus/pool-subscriber.js.map +1 -0
  92. package/build/dex/platypus/pool.d.ts +8 -0
  93. package/build/dex/platypus/pool.js +58 -0
  94. package/build/dex/platypus/pool.js.map +1 -0
  95. package/build/dex/platypus/types.d.ts +92 -0
  96. package/build/dex/platypus/types.js +10 -0
  97. package/build/dex/platypus/types.js.map +1 -0
  98. package/build/dex/quickswap/spiritswap-v3.d.ts +6 -0
  99. package/build/dex/quickswap/spiritswap-v3.js +19 -0
  100. package/build/dex/quickswap/spiritswap-v3.js.map +1 -0
  101. package/build/dex/smardex/config.d.ts +4 -0
  102. package/build/dex/smardex/config.js +64 -0
  103. package/build/dex/smardex/config.js.map +1 -0
  104. package/build/dex/smardex/constants.d.ts +18 -0
  105. package/build/dex/smardex/constants.js +33 -0
  106. package/build/dex/smardex/constants.js.map +1 -0
  107. package/build/dex/smardex/sdk/constants.d.ts +6 -0
  108. package/build/dex/smardex/sdk/constants.js +13 -0
  109. package/build/dex/smardex/sdk/constants.js.map +1 -0
  110. package/build/dex/smardex/sdk/core.d.ts +113 -0
  111. package/build/dex/smardex/sdk/core.js +499 -0
  112. package/build/dex/smardex/sdk/core.js.map +1 -0
  113. package/build/dex/smardex/sdk/errors.d.ts +15 -0
  114. package/build/dex/smardex/sdk/errors.js +22 -0
  115. package/build/dex/smardex/sdk/errors.js.map +1 -0
  116. package/build/dex/smardex/sdk/types.d.ts +62 -0
  117. package/build/dex/smardex/sdk/types.js +3 -0
  118. package/build/dex/smardex/sdk/types.js.map +1 -0
  119. package/build/dex/smardex/sdk/utils.d.ts +44 -0
  120. package/build/dex/smardex/sdk/utils.js +133 -0
  121. package/build/dex/smardex/sdk/utils.js.map +1 -0
  122. package/build/dex/smardex/smardex-event-pool.d.ts +28 -0
  123. package/build/dex/smardex/smardex-event-pool.js +119 -0
  124. package/build/dex/smardex/smardex-event-pool.js.map +1 -0
  125. package/build/dex/smardex/smardex.d.ts +65 -0
  126. package/build/dex/smardex/smardex.js +519 -0
  127. package/build/dex/smardex/smardex.js.map +1 -0
  128. package/build/dex/smardex/types.d.ts +55 -0
  129. package/build/dex/smardex/types.js +3 -0
  130. package/build/dex/smardex/types.js.map +1 -0
  131. package/build/dex/smoothy.d.ts +26 -0
  132. package/build/dex/smoothy.js +48 -0
  133. package/build/dex/smoothy.js.map +1 -0
  134. package/build/dex/solidly/forks-override/cone.d.ts +22 -0
  135. package/build/dex/solidly/forks-override/cone.js +53 -0
  136. package/build/dex/solidly/forks-override/cone.js.map +1 -0
  137. package/build/dex/solidly/forks-override/solisnek.d.ts +8 -0
  138. package/build/dex/solidly/forks-override/solisnek.js +15 -0
  139. package/build/dex/solidly/forks-override/solisnek.js.map +1 -0
  140. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  141. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  142. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  143. package/build/dex/stable-pool.d.ts +28 -0
  144. package/build/dex/stable-pool.js +55 -0
  145. package/build/dex/stable-pool.js.map +1 -0
  146. package/build/dex/swaap-v1/config.d.ts +17 -0
  147. package/build/dex/swaap-v1/config.js +56 -0
  148. package/build/dex/swaap-v1/config.js.map +1 -0
  149. package/build/dex/swaap-v1/constants.d.ts +6 -0
  150. package/build/dex/swaap-v1/constants.js +17 -0
  151. package/build/dex/swaap-v1/constants.js.map +1 -0
  152. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +25 -0
  153. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +62 -0
  154. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +1 -0
  155. package/build/dex/swaap-v1/libraries/Const.d.ts +18 -0
  156. package/build/dex/swaap-v1/libraries/Const.js +26 -0
  157. package/build/dex/swaap-v1/libraries/Const.js.map +1 -0
  158. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +77 -0
  159. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +316 -0
  160. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +1 -0
  161. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +75 -0
  162. package/build/dex/swaap-v1/libraries/LogExpMath.js +418 -0
  163. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +1 -0
  164. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +185 -0
  165. package/build/dex/swaap-v1/libraries/MathMMM.js +453 -0
  166. package/build/dex/swaap-v1/libraries/MathMMM.js.map +1 -0
  167. package/build/dex/swaap-v1/libraries/Num.d.ts +31 -0
  168. package/build/dex/swaap-v1/libraries/Num.js +167 -0
  169. package/build/dex/swaap-v1/libraries/Num.js.map +1 -0
  170. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +23 -0
  171. package/build/dex/swaap-v1/libraries/PoolQuotations.js +131 -0
  172. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +1 -0
  173. package/build/dex/swaap-v1/libraries/Struct.d.ts +56 -0
  174. package/build/dex/swaap-v1/libraries/Struct.js +3 -0
  175. package/build/dex/swaap-v1/libraries/Struct.js.map +1 -0
  176. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +45 -0
  177. package/build/dex/swaap-v1/swaap-v1-pool.js +656 -0
  178. package/build/dex/swaap-v1/swaap-v1-pool.js.map +1 -0
  179. package/build/dex/swaap-v1/swaap-v1.d.ts +62 -0
  180. package/build/dex/swaap-v1/swaap-v1.js +383 -0
  181. package/build/dex/swaap-v1/swaap-v1.js.map +1 -0
  182. package/build/dex/swaap-v1/types.d.ts +106 -0
  183. package/build/dex/swaap-v1/types.js +9 -0
  184. package/build/dex/swaap-v1/types.js.map +1 -0
  185. package/build/dex/trader-joe-v2.1.d.ts +43 -0
  186. package/build/dex/trader-joe-v2.1.js +79 -0
  187. package/build/dex/trader-joe-v2.1.js.map +1 -0
  188. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  189. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  190. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  191. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  192. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  193. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  194. package/config.ts +1946 -0
  195. package/package.json +1 -1
  196. package/src/abi/maverick-v2/MaverickV2Router.json +778 -0
  197. package/src/dex/dexs.txt +58 -0
  198. package/src/dex/generic-rfq/generic-rfq.ts +13 -2
  199. package/src/dex/generic-rfq/rate-fetcher.ts +28 -0
  200. package/src/dex/maverick-v2/config.ts +4 -0
  201. package/src/dex/maverick-v2/maverick-v2-e2e.test.ts +4 -1
  202. package/src/dex/maverick-v2/maverick-v2.ts +57 -45
  203. package/src/dex/maverick-v2/types.ts +1 -0
  204. package/.idea/aws.xml +0 -17
  205. package/.idea/codeStyles/Project.xml +0 -19
  206. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  207. package/.idea/misc.xml +0 -6
  208. package/.idea/modules.xml +0 -8
  209. package/.idea/paraswap-dex-lib.iml +0 -9
  210. package/.idea/prettier.xml +0 -7
  211. package/.idea/vcs.xml +0 -6
@@ -0,0 +1,58 @@
1
+ aave-v2
2
+ aave-v3
3
+ aave-v3-stata
4
+ algebra
5
+ angle-staked-stable
6
+ angle-transmuter
7
+ augustus-approvals.ts
8
+ augustus-rfq.ts
9
+ balancer-v1
10
+ balancer-v2
11
+ bancor
12
+ camelot
13
+ compound
14
+ curve-v1
15
+ curve-v1-factory
16
+ curve-v1-stable-ng
17
+ curve-v2
18
+ dexalot
19
+ dexs.txt
20
+ dodo-v1
21
+ dodo-v2.ts
22
+ etherfi.ts
23
+ generic-rfq
24
+ gmx
25
+ hashflow
26
+ idex.ts
27
+ idle-dao
28
+ index.ts
29
+ jarvis-v6
30
+ kyberdmm
31
+ lido
32
+ limit-order-exchange.ts
33
+ maker-psm
34
+ maverick-v1
35
+ maverick-v2
36
+ nerve
37
+ pancakeswap-v3
38
+ paraswap-limit-orders
39
+ polygon-migrator
40
+ quick-perps
41
+ quickswap
42
+ simple-exchange.ts
43
+ smoothy
44
+ solidly
45
+ solidly-v3
46
+ spark
47
+ stable-pool
48
+ swaap-v2
49
+ swell
50
+ synthetix
51
+ trader-joe-v2.1
52
+ uniswap-v2
53
+ uniswap-v3
54
+ uniswap-v3.ts
55
+ weth
56
+ wombat
57
+ woo-fi-v2
58
+ wsteth
@@ -84,8 +84,19 @@ export class GenericRFQ extends ParaSwapLimitOrders {
84
84
  side: SwapSide,
85
85
  blockNumber: number,
86
86
  ): Promise<string[]> {
87
- const _destToken = this.dexHelper.config.wrapETH(destToken);
88
- return [this.getIdentifier(srcToken.address, _destToken.address)];
87
+ const _destToken = this.dexHelper.config
88
+ .wrapETH(destToken)
89
+ .address.toLowerCase();
90
+ const _srcToken = this.dexHelper.config
91
+ .wrapETH(srcToken)
92
+ .address.toLowerCase();
93
+
94
+ const currentPair = `${_srcToken}_${_destToken}`;
95
+ const availablePairs = await this.rateFetcher.getAvailablePairs();
96
+
97
+ return availablePairs
98
+ .filter(p => p === currentPair)
99
+ .map(_ => this.getIdentifier(_srcToken, _destToken));
89
100
  }
90
101
 
91
102
  calcOutsFromAmounts(
@@ -228,6 +228,8 @@ export class RateFetcher {
228
228
 
229
229
  if (isEmpty(pairs)) return;
230
230
 
231
+ const currentPricePairs = new Set();
232
+
231
233
  Object.keys(resp.prices).forEach(pairName => {
232
234
  const pair = pairs[pairName];
233
235
  if (!pair) {
@@ -257,6 +259,7 @@ export class RateFetcher {
257
259
  this.config.rateConfig.dataTTLS,
258
260
  JSON.stringify(prices.bids),
259
261
  );
262
+ currentPricePairs.add(`${baseToken.address}_${quoteToken.address}`);
260
263
  }
261
264
 
262
265
  if (prices.asks.length) {
@@ -267,8 +270,19 @@ export class RateFetcher {
267
270
  this.config.rateConfig.dataTTLS,
268
271
  JSON.stringify(prices.asks),
269
272
  );
273
+ currentPricePairs.add(`${quoteToken.address}_${baseToken.address}`);
270
274
  }
271
275
  });
276
+
277
+ if (currentPricePairs.size > 0) {
278
+ this.dexHelper.cache.setex(
279
+ this.dexKey,
280
+ this.dexHelper.config.data.network,
281
+ `pairs`,
282
+ this.config.rateConfig.dataTTLS,
283
+ JSON.stringify(Array.from(currentPricePairs)),
284
+ );
285
+ }
272
286
  }
273
287
 
274
288
  checkHealth(): boolean {
@@ -307,6 +321,20 @@ export class RateFetcher {
307
321
  });
308
322
  }
309
323
 
324
+ public async getAvailablePairs(): Promise<string[]> {
325
+ const pairs = await this.dexHelper.cache.get(
326
+ this.dexKey,
327
+ this.dexHelper.config.data.network,
328
+ `pairs`,
329
+ );
330
+
331
+ if (!pairs) {
332
+ return [];
333
+ }
334
+
335
+ return JSON.parse(pairs) as string[];
336
+ }
337
+
310
338
  public async getOrderPrice(
311
339
  srcToken: Token,
312
340
  destToken: Token,
@@ -9,18 +9,22 @@ export const MAVERICK_API_URL = `https://v2-api.mav.xyz/`;
9
9
  export const MaverickV2Config: DexConfigMap<DexParams> = {
10
10
  MaverickV2: {
11
11
  [Network.BASE]: {
12
+ routerAddress: `0x5eDEd0d7E76C563FF081Ca01D9d12D6B404Df527`,
12
13
  quoterAddress: `0xb40AfdB85a07f37aE217E7D6462e609900dD8D7A`,
13
14
  poolLensAddress: `0x942646b0A8B42Af1e1044439013436a9a3e080b5`,
14
15
  },
15
16
  [Network.MAINNET]: {
17
+ routerAddress: `0x62e31802c6145A2D5E842EeD8efe01fC224422fA`,
16
18
  quoterAddress: `0xb40AfdB85a07f37aE217E7D6462e609900dD8D7A`,
17
19
  poolLensAddress: `0x942646b0A8B42Af1e1044439013436a9a3e080b5`,
18
20
  },
19
21
  [Network.BSC]: {
22
+ routerAddress: `0x374bFCc264678c67a582D067AD91f1951bC6b20f`,
20
23
  quoterAddress: `0xb40AfdB85a07f37aE217E7D6462e609900dD8D7A`,
21
24
  poolLensAddress: `0x942646b0A8B42Af1e1044439013436a9a3e080b5`,
22
25
  },
23
26
  [Network.ARBITRUM]: {
27
+ routerAddress: `0x5c3b380e5Aeec389d1014Da3Eb372FA2C9e0fc76`,
24
28
  quoterAddress: `0xb40AfdB85a07f37aE217E7D6462e609900dD8D7A`,
25
29
  poolLensAddress: `0x942646b0A8B42Af1e1044439013436a9a3e080b5`,
26
30
  },
@@ -74,7 +74,10 @@ function testForNetwork(
74
74
  SwapSide.SELL,
75
75
  [ContractMethod.simpleSwap, ContractMethod.swapExactAmountIn],
76
76
  ],
77
- // [SwapSide.BUY, [ContractMethod.simpleBuy]],
77
+ [
78
+ SwapSide.BUY,
79
+ [ContractMethod.simpleBuy, ContractMethod.swapExactAmountOut],
80
+ ],
78
81
  ]);
79
82
 
80
83
  describe(`${network}`, () => {
@@ -27,6 +27,7 @@ import { MaverickV2EventPool } from './maverick-v2-pool';
27
27
  import { SUBGRAPH_TIMEOUT } from '../../constants';
28
28
  import { Interface } from '@ethersproject/abi';
29
29
  import MaverickV2PoolABI from '../../abi/maverick-v2/MaverickV2Pool.json';
30
+ import MaverickV2RouterABI from '../../abi/maverick-v2/MaverickV2Router.json';
30
31
  import ERC20ABI from '../../abi/erc20.json';
31
32
  import { extractReturnAmountPosition } from '../../executor/utils';
32
33
  const EFFICIENCY_FACTOR = 3;
@@ -52,6 +53,7 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
52
53
  protected adapters = {},
53
54
  protected config = MaverickV2Config[dexKey][network],
54
55
  protected maverickV2Iface = new Interface(MaverickV2PoolABI),
56
+ protected maverickV2RouterIface = new Interface(MaverickV2RouterABI),
55
57
  ) {
56
58
  super(dexHelper, dexKey);
57
59
  this.logger = dexHelper.getLogger(dexKey);
@@ -103,9 +105,6 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
103
105
  side: SwapSide,
104
106
  blockNumber: number,
105
107
  ): Promise<string[]> {
106
- // TODO:
107
- if (side === SwapSide.BUY) return [];
108
-
109
108
  const from = this.dexHelper.config.wrapETH(srcToken);
110
109
  const to = this.dexHelper.config.wrapETH(destToken);
111
110
 
@@ -148,9 +147,6 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
148
147
  return null;
149
148
  }
150
149
 
151
- // TODO:
152
- if (side === SwapSide.BUY) return null;
153
-
154
150
  const allPools = await this.getPools(from, to);
155
151
 
156
152
  const allowedPools = limitPools
@@ -159,11 +155,9 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
159
155
 
160
156
  if (!allowedPools.length) return null;
161
157
 
162
- // const unitAmount = getBigIntPow(
163
- // side === SwapSide.BUY ? to.decimals : from.decimals,
164
- // );
165
-
166
- const unitAmount = getBigIntPow(from.decimals);
158
+ const unitAmount = getBigIntPow(
159
+ side === SwapSide.BUY ? to.decimals : from.decimals,
160
+ );
167
161
 
168
162
  const tasks = allowedPools.map(async (pool: MaverickV2EventPool) => {
169
163
  try {
@@ -173,8 +167,7 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
173
167
  return null;
174
168
  }
175
169
 
176
- // const [unit] = pool.swap(unitAmount, from, to, side === SwapSide.BUY);
177
- const [unit] = pool.swap(unitAmount, from, to, false);
170
+ const [unit] = pool.swap(unitAmount, from, to, side === SwapSide.BUY);
178
171
  let lastOutput = 1n;
179
172
 
180
173
  const dataList: [bigint, bigint][] = amounts.map(amount => {
@@ -182,8 +175,7 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
182
175
  return [0n, 0n];
183
176
  }
184
177
 
185
- // const output = pool.swap(amount, from, to, side === SwapSide.BUY);
186
- const output = pool.swap(amount, from, to, false);
178
+ const output = pool.swap(amount, from, to, side === SwapSide.BUY);
187
179
  lastOutput = output[0];
188
180
  return output;
189
181
  });
@@ -262,45 +254,65 @@ export class MaverickV2 extends SimpleExchange implements IDex<MaverickV2Data> {
262
254
  _: Context,
263
255
  executorAddress: Address,
264
256
  ): DexExchangeParam {
265
- // TODO:
266
- if (side === SwapSide.BUY) throw new Error(`Buy not supported`);
267
-
268
257
  const { pool } = data;
269
258
 
270
259
  srcToken = this.dexHelper.config.wrapETH(srcToken);
271
260
  destToken = this.dexHelper.config.wrapETH(destToken);
272
261
 
273
- const exchangeData = this.maverickV2Iface.encodeFunctionData('swap', [
274
- recipient,
275
- {
276
- amount: side === SwapSide.SELL ? srcAmount : destAmount,
277
- tokenAIn: data.tokenA.toLowerCase() === srcToken.toLowerCase(),
278
- // exactOutput: side === SwapSide.BUY,
279
- exactOutput: false,
280
- tickLimit:
262
+ if (side === SwapSide.SELL) {
263
+ // Perform direct swap for SELL side
264
+
265
+ const exchangeData = this.maverickV2Iface.encodeFunctionData('swap', [
266
+ recipient,
267
+ {
268
+ amount: srcAmount,
269
+ tokenAIn: data.tokenA.toLowerCase() === srcToken.toLowerCase(),
270
+ exactOutput: false,
271
+ tickLimit:
272
+ data.tokenA.toLowerCase() === srcToken.toLowerCase()
273
+ ? BigInt(data.activeTick) + 100n
274
+ : BigInt(data.activeTick) - 100n,
275
+ },
276
+ '0x',
277
+ ]);
278
+
279
+ return {
280
+ needWrapNative: this.needWrapNative,
281
+ transferSrcTokenBeforeSwap: pool,
282
+ skipApproval: true,
283
+ targetExchange: pool,
284
+ dexFuncHasRecipient: true,
285
+ exchangeData,
286
+ returnAmountPos: extractReturnAmountPosition(
287
+ this.maverickV2Iface,
288
+ 'swap',
289
+ 'amountOut',
290
+ ),
291
+ };
292
+ } else {
293
+ // perform "exactOutputSingleMinimal" via MaverickV2's Router
294
+
295
+ const exchangeData = this.maverickV2RouterIface.encodeFunctionData(
296
+ 'exactOutputSingleMinimal',
297
+ [
298
+ recipient,
299
+ pool,
300
+ data.tokenA.toLowerCase() === srcToken.toLowerCase(),
301
+ destAmount,
281
302
  data.tokenA.toLowerCase() === srcToken.toLowerCase()
282
303
  ? BigInt(data.activeTick) + 100n
283
304
  : BigInt(data.activeTick) - 100n,
284
- },
285
- '0x',
286
- ]);
305
+ ],
306
+ );
287
307
 
288
- return {
289
- needWrapNative: this.needWrapNative,
290
- transferSrcTokenBeforeSwap: pool,
291
- // skipApproval: true,
292
- targetExchange: pool,
293
- dexFuncHasRecipient: true,
294
- exchangeData,
295
- returnAmountPos:
296
- side === SwapSide.SELL
297
- ? extractReturnAmountPosition(
298
- this.maverickV2Iface,
299
- 'swap',
300
- 'amountOut',
301
- )
302
- : undefined,
303
- };
308
+ return {
309
+ needWrapNative: this.needWrapNative,
310
+ targetExchange: this.config.routerAddress,
311
+ dexFuncHasRecipient: true,
312
+ exchangeData,
313
+ returnAmountPos: undefined,
314
+ };
315
+ }
304
316
  }
305
317
 
306
318
  // This is called once before getTopPoolsForToken is
@@ -120,6 +120,7 @@ export type MaverickV2Param = {
120
120
  };
121
121
 
122
122
  export type DexParams = {
123
+ routerAddress: string;
123
124
  quoterAddress: string;
124
125
  poolLensAddress: string;
125
126
  };
package/.idea/aws.xml DELETED
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="accountSettings">
4
- <option name="activeProfile" value="profile:default" />
5
- <option name="activeRegion" value="us-east-1" />
6
- <option name="recentlyUsedProfiles">
7
- <list>
8
- <option value="profile:default" />
9
- </list>
10
- </option>
11
- <option name="recentlyUsedRegions">
12
- <list>
13
- <option value="us-east-1" />
14
- </list>
15
- </option>
16
- </component>
17
- </project>
@@ -1,19 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <ScalaCodeStyleSettings>
4
- <option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
5
- </ScalaCodeStyleSettings>
6
- <TypeScriptCodeStyleSettings version="0">
7
- <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACKETS" value="true" />
8
- <option name="USE_DOUBLE_QUOTES" value="false" />
9
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
10
- </TypeScriptCodeStyleSettings>
11
- <codeStyleSettings language="TypeScript">
12
- <indentOptions>
13
- <option name="INDENT_SIZE" value="2" />
14
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
15
- <option name="TAB_SIZE" value="2" />
16
- </indentOptions>
17
- </codeStyleSettings>
18
- </code_scheme>
19
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
4
- </state>
5
- </component>
package/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager">
4
- <output url="file://$PROJECT_DIR$/out" />
5
- </component>
6
- </project>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" filepath="$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="JAVA_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="true">
4
- <exclude-output />
5
- <content url="file://$MODULE_DIR$" />
6
- <orderEntry type="inheritedJdk" />
7
- <orderEntry type="sourceFolder" forTests="false" />
8
- </component>
9
- </module>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="PrettierConfiguration">
4
- <option name="myRunOnSave" value="true" />
5
- <option name="myRunOnReformat" value="true" />
6
- </component>
7
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>