@paraswap/dex-lib 3.7.9-dex-deprecation.0 → 3.8.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.
Files changed (262) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/curve-v1-factory/CurveV1Router.abi.json +331 -0
  10. package/build/config.js +1 -1
  11. package/build/dex/curve-v1-factory/config.js +47 -10
  12. package/build/dex/curve-v1-factory/config.js.map +1 -1
  13. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +2 -2
  14. package/build/dex/curve-v1-factory/curve-v1-factory.js +96 -36
  15. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  16. package/build/dex/curve-v1-factory/optimizer.d.ts +2 -0
  17. package/build/dex/curve-v1-factory/optimizer.js +54 -0
  18. package/build/dex/curve-v1-factory/optimizer.js.map +1 -0
  19. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
  20. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js +13 -1
  21. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js.map +1 -1
  22. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.d.ts +2 -2
  23. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js +1 -1
  24. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js.map +1 -1
  25. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +1 -1
  26. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
  27. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.d.ts +4 -3
  28. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js +24 -9
  29. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js.map +1 -1
  30. package/build/dex/curve-v1-factory/types.d.ts +20 -4
  31. package/build/dex/curve-v1-factory/types.js +11 -3
  32. package/build/dex/curve-v1-factory/types.js.map +1 -1
  33. package/build/dex/curve-v1-stable-ng/config.js +18 -0
  34. package/build/dex/curve-v1-stable-ng/config.js.map +1 -1
  35. package/build/dex/index.js +18 -0
  36. package/build/dex/index.js.map +1 -1
  37. package/build/utils.d.ts +1 -1
  38. package/package.json +2 -2
  39. package/src/abi/BProtocol.json +1155 -0
  40. package/src/abi/Jarvis.json +1172 -0
  41. package/src/abi/MStableAsset.json +1545 -0
  42. package/src/abi/OneInchLp.json +1304 -0
  43. package/src/abi/Onebit.json +736 -0
  44. package/src/abi/Shell.json +1294 -0
  45. package/src/abi/TraderJoeV2Router.json +50 -0
  46. package/src/abi/curve-v1-factory/CurveV1Router.abi.json +331 -0
  47. package/src/abi/zrx.v2.json +1967 -0
  48. package/src/abi/zrx.v3.json +3454 -0
  49. package/src/abi/zrx.v4.json +2193 -0
  50. package/src/config.ts +1 -1
  51. package/src/dex/OneInchLp.ts +84 -0
  52. package/src/dex/bProtocol/bProtocol-e2e.test.ts +93 -0
  53. package/src/dex/bProtocol/bProtocol.ts +108 -0
  54. package/src/dex/bProtocol/types.ts +13 -0
  55. package/src/dex/curve-v1-factory/config.ts +47 -10
  56. package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +92 -16
  57. package/src/dex/curve-v1-factory/curve-v1-factory-integration.test.ts +125 -5
  58. package/src/dex/curve-v1-factory/curve-v1-factory.ts +137 -45
  59. package/src/dex/curve-v1-factory/optimizer.ts +61 -0
  60. package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +0 -2
  61. package/src/dex/curve-v1-factory/price-handlers/functions/get_dx.ts +24 -1
  62. package/src/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.ts +3 -2
  63. package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +1 -0
  64. package/src/dex/curve-v1-factory/state-polling-pools/pool-polling-base.ts +31 -10
  65. package/src/dex/curve-v1-factory/types.ts +22 -6
  66. package/src/dex/curve-v1-stable-ng/config.ts +18 -0
  67. package/src/dex/curve-v1-stable-ng/curve-v1-stable-ng-e2e.test.ts +17 -0
  68. package/src/dex/index.ts +18 -0
  69. package/src/dex/jarvis.ts +262 -0
  70. package/src/dex/mStable.ts +147 -0
  71. package/src/dex/onebit/onebit.ts +113 -0
  72. package/src/dex/onebit/types.ts +17 -0
  73. package/src/dex/shell.ts +84 -0
  74. package/src/dex/trader-joe-v2.ts +148 -0
  75. package/src/dex/zerox/config.ts +31 -0
  76. package/src/dex/zerox/index.ts +328 -0
  77. package/src/dex/zerox/order.ts +62 -0
  78. package/src/dex/zerox/types.ts +82 -0
  79. package/src/dex/zerox/zerox-e2e.test.ts +110 -0
  80. package/tests/constants-e2e.ts +1 -1
  81. package/tests/utils-e2e.ts +2 -0
  82. package/.vscode/launch.json +0 -53
  83. package/.vscode/settings.json +0 -2
  84. package/.vscode/tasks.json +0 -15
  85. package/build/abi/AaveV1_lending_pool.json +0 -27
  86. package/build/abi/platypus/asset.json +0 -490
  87. package/build/abi/platypus/avax-pool.json +0 -820
  88. package/build/abi/platypus/oracle.json +0 -119
  89. package/build/abi/platypus/pool.json +0 -677
  90. package/build/abi/smardex/all/smardex-router.json +0 -648
  91. package/build/abi/smardex/layer-1/smardex-factory.json +0 -242
  92. package/build/abi/smardex/layer-1/smardex-pool.json +0 -506
  93. package/build/abi/smardex/layer-2/smardex-factory.json +0 -185
  94. package/build/abi/smardex/layer-2/smardex-pool.json +0 -578
  95. package/build/abi/swaap-v1/pool.json +0 -1346
  96. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  97. package/build/abi/wombat/pool.json +0 -1289
  98. package/build/dex/aave-v1/aave-v1.d.ts +0 -34
  99. package/build/dex/aave-v1/aave-v1.js +0 -181
  100. package/build/dex/aave-v1/aave-v1.js.map +0 -1
  101. package/build/dex/aave-v1/config.d.ts +0 -11
  102. package/build/dex/aave-v1/config.js +0 -20
  103. package/build/dex/aave-v1/config.js.map +0 -1
  104. package/build/dex/aave-v1/tokens-mainnet.json +0 -134
  105. package/build/dex/aave-v1/tokens.d.ts +0 -3
  106. package/build/dex/aave-v1/tokens.js +0 -50
  107. package/build/dex/aave-v1/tokens.js.map +0 -1
  108. package/build/dex/aave-v1/types.d.ts +0 -12
  109. package/build/dex/aave-v1/types.js +0 -3
  110. package/build/dex/aave-v1/types.js.map +0 -1
  111. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  112. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  113. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  114. package/build/dex/bProtocol.d.ts +0 -18
  115. package/build/dex/bProtocol.js +0 -39
  116. package/build/dex/bProtocol.js.map +0 -1
  117. package/build/dex/bancor.d.ts +0 -26
  118. package/build/dex/bancor.js +0 -58
  119. package/build/dex/bancor.js.map +0 -1
  120. package/build/dex/compound.d.ts +0 -18
  121. package/build/dex/compound.js +0 -46
  122. package/build/dex/compound.js.map +0 -1
  123. package/build/dex/curve-v2.d.ts +0 -58
  124. package/build/dex/curve-v2.js +0 -180
  125. package/build/dex/curve-v2.js.map +0 -1
  126. package/build/dex/dodo-v1.d.ts +0 -33
  127. package/build/dex/dodo-v1.js +0 -63
  128. package/build/dex/dodo-v1.js.map +0 -1
  129. package/build/dex/lido.d.ts +0 -19
  130. package/build/dex/lido.js +0 -42
  131. package/build/dex/lido.js.map +0 -1
  132. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  133. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  134. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  135. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  136. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  137. package/build/dex/onebit.d.ts +0 -25
  138. package/build/dex/onebit.js +0 -42
  139. package/build/dex/onebit.js.map +0 -1
  140. package/build/dex/platypus/asset.d.ts +0 -14
  141. package/build/dex/platypus/asset.js +0 -97
  142. package/build/dex/platypus/asset.js.map +0 -1
  143. package/build/dex/platypus/config.d.ts +0 -11
  144. package/build/dex/platypus/config.js +0 -69
  145. package/build/dex/platypus/config.js.map +0 -1
  146. package/build/dex/platypus/platypus.d.ts +0 -63
  147. package/build/dex/platypus/platypus.js +0 -487
  148. package/build/dex/platypus/platypus.js.map +0 -1
  149. package/build/dex/platypus/pool-avax.d.ts +0 -8
  150. package/build/dex/platypus/pool-avax.js +0 -54
  151. package/build/dex/platypus/pool-avax.js.map +0 -1
  152. package/build/dex/platypus/pool-base.d.ts +0 -19
  153. package/build/dex/platypus/pool-base.js +0 -86
  154. package/build/dex/platypus/pool-base.js.map +0 -1
  155. package/build/dex/platypus/pool-pure.d.ts +0 -8
  156. package/build/dex/platypus/pool-pure.js +0 -37
  157. package/build/dex/platypus/pool-pure.js.map +0 -1
  158. package/build/dex/platypus/pool-subscriber.d.ts +0 -14
  159. package/build/dex/platypus/pool-subscriber.js +0 -167
  160. package/build/dex/platypus/pool-subscriber.js.map +0 -1
  161. package/build/dex/platypus/pool.d.ts +0 -8
  162. package/build/dex/platypus/pool.js +0 -58
  163. package/build/dex/platypus/pool.js.map +0 -1
  164. package/build/dex/platypus/types.d.ts +0 -92
  165. package/build/dex/platypus/types.js +0 -10
  166. package/build/dex/platypus/types.js.map +0 -1
  167. package/build/dex/quickswap/spiritswap-v3.d.ts +0 -6
  168. package/build/dex/quickswap/spiritswap-v3.js +0 -19
  169. package/build/dex/quickswap/spiritswap-v3.js.map +0 -1
  170. package/build/dex/smardex/config.d.ts +0 -4
  171. package/build/dex/smardex/config.js +0 -64
  172. package/build/dex/smardex/config.js.map +0 -1
  173. package/build/dex/smardex/constants.d.ts +0 -18
  174. package/build/dex/smardex/constants.js +0 -33
  175. package/build/dex/smardex/constants.js.map +0 -1
  176. package/build/dex/smardex/sdk/constants.d.ts +0 -6
  177. package/build/dex/smardex/sdk/constants.js +0 -13
  178. package/build/dex/smardex/sdk/constants.js.map +0 -1
  179. package/build/dex/smardex/sdk/core.d.ts +0 -113
  180. package/build/dex/smardex/sdk/core.js +0 -499
  181. package/build/dex/smardex/sdk/core.js.map +0 -1
  182. package/build/dex/smardex/sdk/errors.d.ts +0 -15
  183. package/build/dex/smardex/sdk/errors.js +0 -22
  184. package/build/dex/smardex/sdk/errors.js.map +0 -1
  185. package/build/dex/smardex/sdk/types.d.ts +0 -62
  186. package/build/dex/smardex/sdk/types.js +0 -3
  187. package/build/dex/smardex/sdk/types.js.map +0 -1
  188. package/build/dex/smardex/sdk/utils.d.ts +0 -44
  189. package/build/dex/smardex/sdk/utils.js +0 -133
  190. package/build/dex/smardex/sdk/utils.js.map +0 -1
  191. package/build/dex/smardex/smardex-event-pool.d.ts +0 -28
  192. package/build/dex/smardex/smardex-event-pool.js +0 -119
  193. package/build/dex/smardex/smardex-event-pool.js.map +0 -1
  194. package/build/dex/smardex/smardex.d.ts +0 -65
  195. package/build/dex/smardex/smardex.js +0 -519
  196. package/build/dex/smardex/smardex.js.map +0 -1
  197. package/build/dex/smardex/types.d.ts +0 -55
  198. package/build/dex/smardex/types.js +0 -3
  199. package/build/dex/smardex/types.js.map +0 -1
  200. package/build/dex/smoothy.d.ts +0 -26
  201. package/build/dex/smoothy.js +0 -48
  202. package/build/dex/smoothy.js.map +0 -1
  203. package/build/dex/solidly/forks-override/cone.d.ts +0 -22
  204. package/build/dex/solidly/forks-override/cone.js +0 -53
  205. package/build/dex/solidly/forks-override/cone.js.map +0 -1
  206. package/build/dex/solidly/forks-override/solisnek.d.ts +0 -8
  207. package/build/dex/solidly/forks-override/solisnek.js +0 -15
  208. package/build/dex/solidly/forks-override/solisnek.js.map +0 -1
  209. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  210. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  211. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  212. package/build/dex/stable-pool.d.ts +0 -28
  213. package/build/dex/stable-pool.js +0 -55
  214. package/build/dex/stable-pool.js.map +0 -1
  215. package/build/dex/swaap-v1/config.d.ts +0 -17
  216. package/build/dex/swaap-v1/config.js +0 -56
  217. package/build/dex/swaap-v1/config.js.map +0 -1
  218. package/build/dex/swaap-v1/constants.d.ts +0 -6
  219. package/build/dex/swaap-v1/constants.js +0 -17
  220. package/build/dex/swaap-v1/constants.js.map +0 -1
  221. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +0 -25
  222. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +0 -62
  223. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +0 -1
  224. package/build/dex/swaap-v1/libraries/Const.d.ts +0 -18
  225. package/build/dex/swaap-v1/libraries/Const.js +0 -26
  226. package/build/dex/swaap-v1/libraries/Const.js.map +0 -1
  227. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +0 -77
  228. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +0 -316
  229. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +0 -1
  230. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +0 -75
  231. package/build/dex/swaap-v1/libraries/LogExpMath.js +0 -418
  232. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +0 -1
  233. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +0 -185
  234. package/build/dex/swaap-v1/libraries/MathMMM.js +0 -453
  235. package/build/dex/swaap-v1/libraries/MathMMM.js.map +0 -1
  236. package/build/dex/swaap-v1/libraries/Num.d.ts +0 -31
  237. package/build/dex/swaap-v1/libraries/Num.js +0 -167
  238. package/build/dex/swaap-v1/libraries/Num.js.map +0 -1
  239. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +0 -23
  240. package/build/dex/swaap-v1/libraries/PoolQuotations.js +0 -131
  241. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +0 -1
  242. package/build/dex/swaap-v1/libraries/Struct.d.ts +0 -56
  243. package/build/dex/swaap-v1/libraries/Struct.js +0 -3
  244. package/build/dex/swaap-v1/libraries/Struct.js.map +0 -1
  245. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +0 -45
  246. package/build/dex/swaap-v1/swaap-v1-pool.js +0 -656
  247. package/build/dex/swaap-v1/swaap-v1-pool.js.map +0 -1
  248. package/build/dex/swaap-v1/swaap-v1.d.ts +0 -62
  249. package/build/dex/swaap-v1/swaap-v1.js +0 -383
  250. package/build/dex/swaap-v1/swaap-v1.js.map +0 -1
  251. package/build/dex/swaap-v1/types.d.ts +0 -106
  252. package/build/dex/swaap-v1/types.js +0 -9
  253. package/build/dex/swaap-v1/types.js.map +0 -1
  254. package/build/dex/trader-joe-v2.1.d.ts +0 -43
  255. package/build/dex/trader-joe-v2.1.js +0 -79
  256. package/build/dex/trader-joe-v2.1.js.map +0 -1
  257. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  258. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  259. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  260. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  261. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  262. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
@@ -0,0 +1,113 @@
1
+ import { Interface, JsonFragment } from '@ethersproject/abi';
2
+ import { Provider } from '@ethersproject/providers';
3
+ import { SwapSide } from '../../constants';
4
+ import {
5
+ AdapterExchangeParam,
6
+ Address,
7
+ DexExchangeParam,
8
+ NumberAsString,
9
+ SimpleExchangeParam,
10
+ } from '../../types';
11
+ import { IDexTxBuilder } from '../idex';
12
+ import { SimpleExchange } from '../simple-exchange';
13
+ import OnebitABI from '../../abi/Onebit.json';
14
+ import { IDexHelper } from '../../dex-helper';
15
+ import { OnebitData, OnebitFunctions, OnebitParam } from './types';
16
+ import { extractReturnAmountPosition } from '../../executor/utils';
17
+
18
+ export class Onebit
19
+ extends SimpleExchange
20
+ implements IDexTxBuilder<OnebitData, OnebitParam>
21
+ {
22
+ static dexKeys = ['omm1'];
23
+ exchangeRouterInterface: Interface;
24
+ needWrapNative = true;
25
+
26
+ constructor(dexHelper: IDexHelper) {
27
+ super(dexHelper, 'omm1');
28
+ this.exchangeRouterInterface = new Interface(OnebitABI as JsonFragment[]);
29
+ }
30
+
31
+ getAdapterParam(
32
+ srcToken: string,
33
+ destToken: string,
34
+ srcAmount: string,
35
+ destAmount: string,
36
+ data: OnebitData,
37
+ side: SwapSide,
38
+ ): AdapterExchangeParam {
39
+ return {
40
+ targetExchange: data.router,
41
+ payload: '0x',
42
+ networkFee: '0',
43
+ };
44
+ }
45
+
46
+ async getSimpleParam(
47
+ srcToken: string,
48
+ destToken: string,
49
+ srcAmount: string,
50
+ destAmount: string,
51
+ data: OnebitData,
52
+ side: SwapSide,
53
+ ): Promise<SimpleExchangeParam> {
54
+ const swapFunction = OnebitFunctions.swapTokensWithTrust;
55
+ const swapFunctionParams: OnebitParam = [
56
+ srcToken,
57
+ destToken,
58
+ srcAmount,
59
+ destAmount,
60
+ this.augustusAddress,
61
+ ];
62
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
63
+ swapFunction,
64
+ swapFunctionParams,
65
+ );
66
+
67
+ return this.buildSimpleParamWithoutWETHConversion(
68
+ srcToken,
69
+ srcAmount,
70
+ destToken,
71
+ destAmount,
72
+ swapData,
73
+ data.router,
74
+ );
75
+ }
76
+
77
+ getDexParam(
78
+ srcToken: Address,
79
+ destToken: Address,
80
+ srcAmount: NumberAsString,
81
+ destAmount: NumberAsString,
82
+ recipient: Address,
83
+ data: OnebitData,
84
+ _side: SwapSide,
85
+ ): DexExchangeParam {
86
+ const swapFunction = OnebitFunctions.swapTokensWithTrust;
87
+ const swapFunctionParams: OnebitParam = [
88
+ srcToken,
89
+ destToken,
90
+ srcAmount,
91
+ destAmount,
92
+ recipient,
93
+ ];
94
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
95
+ swapFunction,
96
+ swapFunctionParams,
97
+ );
98
+
99
+ return {
100
+ needWrapNative: this.needWrapNative,
101
+ dexFuncHasRecipient: true,
102
+ exchangeData: swapData,
103
+ targetExchange: data.router,
104
+ returnAmountPos:
105
+ _side === SwapSide.SELL
106
+ ? extractReturnAmountPosition(
107
+ this.exchangeRouterInterface,
108
+ swapFunction,
109
+ )
110
+ : undefined,
111
+ };
112
+ }
113
+ }
@@ -0,0 +1,17 @@
1
+ import { Address } from '@paraswap/core';
2
+
3
+ export type OnebitData = {
4
+ router: Address;
5
+ };
6
+
7
+ export type OnebitParam = [
8
+ srcToken: string,
9
+ destToken: string,
10
+ srcAmount: string,
11
+ destAmountMin: string,
12
+ to: string,
13
+ ];
14
+
15
+ export enum OnebitFunctions {
16
+ swapTokensWithTrust = 'swapTokensWithTrust',
17
+ }
@@ -0,0 +1,84 @@
1
+ import { Interface, JsonFragment } from '@ethersproject/abi';
2
+ import { SwapSide } from '../constants';
3
+ import { AdapterExchangeParam, Address, SimpleExchangeParam } from '../types';
4
+ import { IDexTxBuilder } from './idex';
5
+ import {
6
+ getLocalDeadlineAsFriendlyPlaceholder,
7
+ SimpleExchange,
8
+ } from './simple-exchange';
9
+ import ShellABI from '../abi/Shell.json';
10
+ import { IDexHelper } from '../dex-helper';
11
+
12
+ export type ShellData = {
13
+ exchange: Address;
14
+ deadline?: number;
15
+ };
16
+ type ShellParam = [
17
+ _origin: string,
18
+ _target: string,
19
+ _originAmount: string,
20
+ _minTargetAmount: string,
21
+ _deadline: string,
22
+ ];
23
+ enum ShellFunctions {
24
+ originSwap = 'originSwap',
25
+ }
26
+
27
+ export class Shell
28
+ extends SimpleExchange
29
+ implements IDexTxBuilder<ShellData, ShellParam>
30
+ {
31
+ static dexKeys = ['shell'];
32
+ exchangeRouterInterface: Interface;
33
+
34
+ constructor(dexHelper: IDexHelper) {
35
+ super(dexHelper, 'shell');
36
+ this.exchangeRouterInterface = new Interface(ShellABI as JsonFragment[]);
37
+ }
38
+
39
+ getAdapterParam(
40
+ srcToken: string,
41
+ destToken: string,
42
+ srcAmount: string,
43
+ destAmount: string,
44
+ data: ShellData,
45
+ side: SwapSide,
46
+ ): AdapterExchangeParam {
47
+ return {
48
+ targetExchange: data.exchange,
49
+ payload: '0x',
50
+ networkFee: '0',
51
+ };
52
+ }
53
+
54
+ async getSimpleParam(
55
+ srcToken: string,
56
+ destToken: string,
57
+ srcAmount: string,
58
+ destAmount: string,
59
+ data: ShellData,
60
+ side: SwapSide,
61
+ ): Promise<SimpleExchangeParam> {
62
+ const swapFunction = ShellFunctions.originSwap;
63
+ const swapFunctionParams: ShellParam = [
64
+ srcToken,
65
+ destToken,
66
+ srcAmount,
67
+ destAmount,
68
+ getLocalDeadlineAsFriendlyPlaceholder(),
69
+ ];
70
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
71
+ swapFunction,
72
+ swapFunctionParams,
73
+ );
74
+
75
+ return this.buildSimpleParamWithoutWETHConversion(
76
+ srcToken,
77
+ srcAmount,
78
+ destToken,
79
+ destAmount,
80
+ swapData,
81
+ data.exchange,
82
+ );
83
+ }
84
+ }
@@ -0,0 +1,148 @@
1
+ import { Network, SwapSide } from '../constants';
2
+ import { AdapterExchangeParam, Address, SimpleExchangeParam } from '../types';
3
+ import { IDexTxBuilder } from './idex';
4
+ import { IDexHelper } from '../dex-helper';
5
+ import {
6
+ getLocalDeadlineAsFriendlyPlaceholder,
7
+ SimpleExchange,
8
+ } from './simple-exchange';
9
+ import { NumberAsString } from '@paraswap/core';
10
+ import { AsyncOrSync } from 'ts-essentials';
11
+ import { Interface, JsonFragment } from '@ethersproject/abi';
12
+ import TraderJoeV2RouterABI from '../abi/TraderJoeV2Router.json';
13
+
14
+ const TRADERJOE_V2_ROUTER_ADDRESS: { [network: number]: Address } = {
15
+ [Network.AVALANCHE]: '0xE3Ffc583dC176575eEA7FD9dF2A7c65F7E23f4C3',
16
+ [Network.ARBITRUM]: '0x7BFd7192E76D950832c77BB412aaE841049D8D9B',
17
+ [Network.BSC]: '0xb66A2704a0dabC1660941628BE987B4418f7a9E8',
18
+ };
19
+
20
+ type TraderJoeV2RouterSellParams = [
21
+ _amountIn: NumberAsString,
22
+ _amountOutMin: NumberAsString,
23
+ _pairBinSteps: NumberAsString[],
24
+ _tokenPath: Address[],
25
+ to: Address,
26
+ _deadline: number,
27
+ ];
28
+
29
+ type TraderJoeV2RouterBuyParams = [
30
+ _amountOut: NumberAsString,
31
+ _amountInMax: NumberAsString,
32
+ _pairBinSteps: NumberAsString[],
33
+ _tokenPath: Address[],
34
+ to: Address,
35
+ _deadline: string,
36
+ ];
37
+
38
+ type TraderJoeV2RouterParam =
39
+ | TraderJoeV2RouterSellParams
40
+ | TraderJoeV2RouterBuyParams;
41
+
42
+ export type TraderJoeV2Data = {
43
+ tokenIn: string; // redundant
44
+ tokenOut: string; // redundant
45
+ binStep: string;
46
+ };
47
+
48
+ enum TraderJoeV2RouterFunctions {
49
+ swapExactTokensForTokens = 'swapExactTokensForTokens',
50
+ swapTokensForExactTokens = 'swapTokensForExactTokens',
51
+ }
52
+
53
+ export class TraderJoeV2
54
+ extends SimpleExchange
55
+ implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam>
56
+ {
57
+ static dexKeys = ['traderjoev2'];
58
+ protected routerAddress: string;
59
+ exchangeRouterInterface: Interface;
60
+ needWrapNative = true;
61
+
62
+ constructor(dexHelper: IDexHelper) {
63
+ super(dexHelper, 'traderjoev2');
64
+
65
+ this.routerAddress =
66
+ TRADERJOE_V2_ROUTER_ADDRESS[dexHelper.config.data.network];
67
+
68
+ this.exchangeRouterInterface = new Interface(
69
+ TraderJoeV2RouterABI as JsonFragment[],
70
+ );
71
+ }
72
+
73
+ getAdapterParam(
74
+ srcToken: Address,
75
+ destToken: Address,
76
+ srcAmount: NumberAsString,
77
+ destAmount: NumberAsString,
78
+ data: TraderJoeV2Data,
79
+ side: SwapSide,
80
+ ): AdapterExchangeParam {
81
+ const payload = this.abiCoder.encodeParameter(
82
+ {
83
+ ParentStruct: {
84
+ _pairBinSteps: 'uint256[]',
85
+ _tokenPath: 'address[]',
86
+ _deadline: 'uint256',
87
+ },
88
+ },
89
+ {
90
+ _pairBinSteps: [data.binStep],
91
+ _tokenPath: [data.tokenIn, data.tokenOut], // FIXME: redundant, shoot & read from contract
92
+ _deadline: getLocalDeadlineAsFriendlyPlaceholder(), // FIXME: more gas efficient to pass block.timestamp in adapter
93
+ },
94
+ );
95
+
96
+ return {
97
+ targetExchange: this.routerAddress,
98
+ payload,
99
+ networkFee: '0',
100
+ };
101
+ }
102
+
103
+ getSimpleParam(
104
+ srcToken: Address,
105
+ destToken: Address,
106
+ srcAmount: NumberAsString,
107
+ destAmount: NumberAsString,
108
+ data: TraderJoeV2Data,
109
+ side: SwapSide,
110
+ ): AsyncOrSync<SimpleExchangeParam> {
111
+ const swapFunction =
112
+ side === SwapSide.SELL
113
+ ? TraderJoeV2RouterFunctions.swapExactTokensForTokens
114
+ : TraderJoeV2RouterFunctions.swapTokensForExactTokens;
115
+
116
+ const swapFunctionParams: TraderJoeV2RouterParam =
117
+ side === SwapSide.SELL
118
+ ? [
119
+ srcAmount,
120
+ destAmount,
121
+ [data.binStep],
122
+ [srcToken, destToken],
123
+ this.augustusAddress,
124
+ getLocalDeadlineAsFriendlyPlaceholder(),
125
+ ]
126
+ : [
127
+ destAmount,
128
+ srcAmount,
129
+ [data.binStep],
130
+ [srcToken, destToken],
131
+ this.augustusAddress,
132
+ getLocalDeadlineAsFriendlyPlaceholder(),
133
+ ];
134
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
135
+ swapFunction,
136
+ swapFunctionParams,
137
+ );
138
+
139
+ return this.buildSimpleParamWithoutWETHConversion(
140
+ srcToken,
141
+ srcAmount,
142
+ destToken,
143
+ destAmount,
144
+ swapData,
145
+ this.routerAddress,
146
+ );
147
+ }
148
+ }
@@ -0,0 +1,31 @@
1
+ import { Network } from '../../constants';
2
+
3
+ export const ZRX_EXCHANGE: Record<number, Record<number, string>> = {
4
+ [Network.MAINNET]: {
5
+ 2: '0x080bf510fcbf18b91105470639e9561022937712',
6
+ 3: '0x61935CbDd02287B511119DDb11Aeb42F1593b7Ef',
7
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
8
+ },
9
+ [Network.BSC]: {
10
+ 2: '0x3F93C3D9304a70c9104642AB8cD37b1E2a7c203A',
11
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
12
+ },
13
+ [Network.POLYGON]: {
14
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
15
+ },
16
+ };
17
+
18
+ export const ZRX_EXCHANGE_ERC20PROXY: Record<number, Record<number, string>> = {
19
+ [Network.MAINNET]: {
20
+ 1: '0x95E6F48254609A6ee006F7D493c8e5fB97094ceF',
21
+ 2: '0x95E6F48254609A6ee006F7D493c8e5fB97094ceF',
22
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
23
+ },
24
+ [Network.BSC]: {
25
+ 2: '0xCF21d4b7a265FF779accBA55Ace0F56C8cE6e379',
26
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
27
+ },
28
+ [Network.POLYGON]: {
29
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
30
+ },
31
+ };