@paraswap/dex-lib 3.8.2 → 3.8.3-integral-dex

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 (403) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscode/settings.json +3 -0
  3. package/build/abi/AaveV1_lending_pool.json +27 -0
  4. package/build/abi/Uncompressor.json +250 -0
  5. package/build/abi/integral/factory.json +333 -0
  6. package/build/abi/integral/oracle.json +501 -0
  7. package/build/abi/integral/pool.json +1041 -0
  8. package/build/abi/integral/relayer.json +1536 -0
  9. package/build/abi/oswap/oswap.abi.json +452 -0
  10. package/build/abi/platypus/asset.json +490 -0
  11. package/build/abi/platypus/avax-pool.json +820 -0
  12. package/build/abi/platypus/oracle.json +119 -0
  13. package/build/abi/platypus/pool.json +677 -0
  14. package/build/abi/smardex/all/smardex-router.json +648 -0
  15. package/build/abi/smardex/layer-1/smardex-factory.json +242 -0
  16. package/build/abi/smardex/layer-1/smardex-pool.json +506 -0
  17. package/build/abi/smardex/layer-2/smardex-factory.json +185 -0
  18. package/build/abi/smardex/layer-2/smardex-pool.json +578 -0
  19. package/build/abi/swaap-v1/pool.json +1346 -0
  20. package/build/config.js +1 -1
  21. package/build/dex/aave-v1/aave-v1.d.ts +33 -0
  22. package/build/dex/aave-v1/aave-v1.js +158 -0
  23. package/build/dex/aave-v1/aave-v1.js.map +1 -0
  24. package/build/dex/aave-v1/config.d.ts +11 -0
  25. package/build/dex/aave-v1/config.js +20 -0
  26. package/build/dex/aave-v1/config.js.map +1 -0
  27. package/build/dex/aave-v1/tokens-mainnet.json +134 -0
  28. package/build/dex/aave-v1/tokens.d.ts +3 -0
  29. package/build/dex/aave-v1/tokens.js +50 -0
  30. package/build/dex/aave-v1/tokens.js.map +1 -0
  31. package/build/dex/aave-v1/types.d.ts +12 -0
  32. package/build/dex/aave-v1/types.js +3 -0
  33. package/build/dex/aave-v1/types.js.map +1 -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-v1-factory/config.js +10 -47
  44. package/build/dex/curve-v1-factory/config.js.map +1 -1
  45. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +2 -2
  46. package/build/dex/curve-v1-factory/curve-v1-factory.js +36 -96
  47. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  48. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
  49. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js +1 -13
  50. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js.map +1 -1
  51. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.d.ts +2 -2
  52. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js +1 -1
  53. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js.map +1 -1
  54. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +1 -1
  55. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
  56. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.d.ts +3 -4
  57. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js +9 -24
  58. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js.map +1 -1
  59. package/build/dex/curve-v1-factory/types.d.ts +4 -20
  60. package/build/dex/curve-v1-factory/types.js +3 -11
  61. package/build/dex/curve-v1-factory/types.js.map +1 -1
  62. package/build/dex/curve-v1-stable-ng/config.js +0 -18
  63. package/build/dex/curve-v1-stable-ng/config.js.map +1 -1
  64. package/build/dex/curve-v2.d.ts +58 -0
  65. package/build/dex/curve-v2.js +180 -0
  66. package/build/dex/curve-v2.js.map +1 -0
  67. package/build/dex/dodo-v1.d.ts +33 -0
  68. package/build/dex/dodo-v1.js +63 -0
  69. package/build/dex/dodo-v1.js.map +1 -0
  70. package/build/dex/etherfi/etherfi.d.ts +26 -0
  71. package/build/dex/etherfi/etherfi.js +96 -0
  72. package/build/dex/etherfi/etherfi.js.map +1 -0
  73. package/build/dex/index.js +21 -3
  74. package/build/dex/index.js.map +1 -1
  75. package/build/dex/integral/config.d.ts +4 -0
  76. package/build/dex/integral/config.js +20 -0
  77. package/build/dex/integral/config.js.map +1 -0
  78. package/build/dex/integral/context.d.ts +40 -0
  79. package/build/dex/integral/context.js +158 -0
  80. package/build/dex/integral/context.js.map +1 -0
  81. package/build/dex/integral/helpers.d.ts +17 -0
  82. package/build/dex/integral/helpers.js +157 -0
  83. package/build/dex/integral/helpers.js.map +1 -0
  84. package/build/dex/integral/integral-factory.d.ts +21 -0
  85. package/build/dex/integral/integral-factory.js +92 -0
  86. package/build/dex/integral/integral-factory.js.map +1 -0
  87. package/build/dex/integral/integral-pool.d.ts +46 -0
  88. package/build/dex/integral/integral-pool.js +143 -0
  89. package/build/dex/integral/integral-pool.js.map +1 -0
  90. package/build/dex/integral/integral-pricing.d.ts +18 -0
  91. package/build/dex/integral/integral-pricing.js +114 -0
  92. package/build/dex/integral/integral-pricing.js.map +1 -0
  93. package/build/dex/integral/integral-relayer.d.ts +39 -0
  94. package/build/dex/integral/integral-relayer.js +189 -0
  95. package/build/dex/integral/integral-relayer.js.map +1 -0
  96. package/build/dex/integral/integral-token.d.ts +24 -0
  97. package/build/dex/integral/integral-token.js +56 -0
  98. package/build/dex/integral/integral-token.js.map +1 -0
  99. package/build/dex/integral/integral.d.ts +41 -0
  100. package/build/dex/integral/integral.js +377 -0
  101. package/build/dex/integral/integral.js.map +1 -0
  102. package/build/dex/integral/types.d.ts +84 -0
  103. package/build/dex/integral/types.js +9 -0
  104. package/build/dex/integral/types.js.map +1 -0
  105. package/build/dex/integral/utils-e2e.d.ts +9 -0
  106. package/build/dex/integral/utils-e2e.js +131 -0
  107. package/build/dex/integral/utils-e2e.js.map +1 -0
  108. package/build/dex/integral/utils.d.ts +17 -0
  109. package/build/dex/integral/utils.js +94 -0
  110. package/build/dex/integral/utils.js.map +1 -0
  111. package/build/dex/lido.d.ts +19 -0
  112. package/build/dex/lido.js +42 -0
  113. package/build/dex/lido.js.map +1 -0
  114. package/build/dex/onebit.d.ts +25 -0
  115. package/build/dex/onebit.js +42 -0
  116. package/build/dex/onebit.js.map +1 -0
  117. package/build/dex/oswap/config.d.ts +5 -0
  118. package/build/dex/oswap/config.js +31 -0
  119. package/build/dex/oswap/config.js.map +1 -0
  120. package/build/dex/oswap/oswap-pool.d.ts +51 -0
  121. package/build/dex/oswap/oswap-pool.js +150 -0
  122. package/build/dex/oswap/oswap-pool.js.map +1 -0
  123. package/build/dex/oswap/oswap.d.ts +46 -0
  124. package/build/dex/oswap/oswap.js +266 -0
  125. package/build/dex/oswap/oswap.js.map +1 -0
  126. package/build/dex/oswap/types.d.ts +20 -0
  127. package/build/dex/oswap/types.js +3 -0
  128. package/build/dex/oswap/types.js.map +1 -0
  129. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +0 -3
  130. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  131. package/build/dex/platypus/asset.d.ts +14 -0
  132. package/build/dex/platypus/asset.js +97 -0
  133. package/build/dex/platypus/asset.js.map +1 -0
  134. package/build/dex/platypus/config.d.ts +11 -0
  135. package/build/dex/platypus/config.js +69 -0
  136. package/build/dex/platypus/config.js.map +1 -0
  137. package/build/dex/platypus/platypus.d.ts +62 -0
  138. package/build/dex/platypus/platypus.js +442 -0
  139. package/build/dex/platypus/platypus.js.map +1 -0
  140. package/build/dex/platypus/pool-avax.d.ts +8 -0
  141. package/build/dex/platypus/pool-avax.js +54 -0
  142. package/build/dex/platypus/pool-avax.js.map +1 -0
  143. package/build/dex/platypus/pool-base.d.ts +19 -0
  144. package/build/dex/platypus/pool-base.js +86 -0
  145. package/build/dex/platypus/pool-base.js.map +1 -0
  146. package/build/dex/platypus/pool-pure.d.ts +8 -0
  147. package/build/dex/platypus/pool-pure.js +37 -0
  148. package/build/dex/platypus/pool-pure.js.map +1 -0
  149. package/build/dex/platypus/pool-subscriber.d.ts +14 -0
  150. package/build/dex/platypus/pool-subscriber.js +167 -0
  151. package/build/dex/platypus/pool-subscriber.js.map +1 -0
  152. package/build/dex/platypus/pool.d.ts +8 -0
  153. package/build/dex/platypus/pool.js +58 -0
  154. package/build/dex/platypus/pool.js.map +1 -0
  155. package/build/dex/platypus/types.d.ts +92 -0
  156. package/build/dex/platypus/types.js +10 -0
  157. package/build/dex/platypus/types.js.map +1 -0
  158. package/build/dex/quickswap/spiritswap-v3.d.ts +6 -0
  159. package/build/dex/quickswap/spiritswap-v3.js +19 -0
  160. package/build/dex/quickswap/spiritswap-v3.js.map +1 -0
  161. package/build/dex/sdai/config.d.ts +11 -0
  162. package/build/dex/sdai/config.js +21 -0
  163. package/build/dex/sdai/config.js.map +1 -0
  164. package/build/dex/sdai/constants.d.ts +2 -0
  165. package/build/dex/sdai/constants.js +6 -0
  166. package/build/dex/sdai/constants.js.map +1 -0
  167. package/build/dex/sdai/scripts/validate-state.d.ts +1 -0
  168. package/build/dex/sdai/scripts/validate-state.js +102 -0
  169. package/build/dex/sdai/scripts/validate-state.js.map +1 -0
  170. package/build/dex/sdai/sdai-pool.d.ts +16 -0
  171. package/build/dex/sdai/sdai-pool.js +85 -0
  172. package/build/dex/sdai/sdai-pool.js.map +1 -0
  173. package/build/dex/sdai/sdai.d.ts +51 -0
  174. package/build/dex/sdai/sdai.js +172 -0
  175. package/build/dex/sdai/sdai.js.map +1 -0
  176. package/build/dex/sdai/types.d.ts +21 -0
  177. package/build/dex/sdai/types.js +11 -0
  178. package/build/dex/sdai/types.js.map +1 -0
  179. package/build/dex/sdai/utils.d.ts +4 -0
  180. package/build/dex/sdai/utils.js +39 -0
  181. package/build/dex/sdai/utils.js.map +1 -0
  182. package/build/dex/smardex/config.d.ts +4 -0
  183. package/build/dex/smardex/config.js +64 -0
  184. package/build/dex/smardex/config.js.map +1 -0
  185. package/build/dex/smardex/constants.d.ts +18 -0
  186. package/build/dex/smardex/constants.js +33 -0
  187. package/build/dex/smardex/constants.js.map +1 -0
  188. package/build/dex/smardex/sdk/constants.d.ts +6 -0
  189. package/build/dex/smardex/sdk/constants.js +13 -0
  190. package/build/dex/smardex/sdk/constants.js.map +1 -0
  191. package/build/dex/smardex/sdk/core.d.ts +113 -0
  192. package/build/dex/smardex/sdk/core.js +499 -0
  193. package/build/dex/smardex/sdk/core.js.map +1 -0
  194. package/build/dex/smardex/sdk/errors.d.ts +15 -0
  195. package/build/dex/smardex/sdk/errors.js +22 -0
  196. package/build/dex/smardex/sdk/errors.js.map +1 -0
  197. package/build/dex/smardex/sdk/types.d.ts +62 -0
  198. package/build/dex/smardex/sdk/types.js +3 -0
  199. package/build/dex/smardex/sdk/types.js.map +1 -0
  200. package/build/dex/smardex/sdk/utils.d.ts +44 -0
  201. package/build/dex/smardex/sdk/utils.js +133 -0
  202. package/build/dex/smardex/sdk/utils.js.map +1 -0
  203. package/build/dex/smardex/smardex-event-pool.d.ts +28 -0
  204. package/build/dex/smardex/smardex-event-pool.js +119 -0
  205. package/build/dex/smardex/smardex-event-pool.js.map +1 -0
  206. package/build/dex/smardex/smardex.d.ts +65 -0
  207. package/build/dex/smardex/smardex.js +519 -0
  208. package/build/dex/smardex/smardex.js.map +1 -0
  209. package/build/dex/smardex/types.d.ts +55 -0
  210. package/build/dex/smardex/types.js +3 -0
  211. package/build/dex/smardex/types.js.map +1 -0
  212. package/build/dex/smoothy.d.ts +26 -0
  213. package/build/dex/smoothy.js +48 -0
  214. package/build/dex/smoothy.js.map +1 -0
  215. package/build/dex/solidly/forks-override/cone.d.ts +22 -0
  216. package/build/dex/solidly/forks-override/cone.js +53 -0
  217. package/build/dex/solidly/forks-override/cone.js.map +1 -0
  218. package/build/dex/solidly/forks-override/solisnek.d.ts +8 -0
  219. package/build/dex/solidly/forks-override/solisnek.js +15 -0
  220. package/build/dex/solidly/forks-override/solisnek.js.map +1 -0
  221. package/build/dex/stable-pool.d.ts +28 -0
  222. package/build/dex/stable-pool.js +62 -0
  223. package/build/dex/stable-pool.js.map +1 -0
  224. package/build/dex/swaap-v1/config.d.ts +17 -0
  225. package/build/dex/swaap-v1/config.js +56 -0
  226. package/build/dex/swaap-v1/config.js.map +1 -0
  227. package/build/dex/swaap-v1/constants.d.ts +6 -0
  228. package/build/dex/swaap-v1/constants.js +17 -0
  229. package/build/dex/swaap-v1/constants.js.map +1 -0
  230. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +25 -0
  231. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +62 -0
  232. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +1 -0
  233. package/build/dex/swaap-v1/libraries/Const.d.ts +18 -0
  234. package/build/dex/swaap-v1/libraries/Const.js +26 -0
  235. package/build/dex/swaap-v1/libraries/Const.js.map +1 -0
  236. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +77 -0
  237. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +316 -0
  238. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +1 -0
  239. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +75 -0
  240. package/build/dex/swaap-v1/libraries/LogExpMath.js +418 -0
  241. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +1 -0
  242. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +185 -0
  243. package/build/dex/swaap-v1/libraries/MathMMM.js +453 -0
  244. package/build/dex/swaap-v1/libraries/MathMMM.js.map +1 -0
  245. package/build/dex/swaap-v1/libraries/Num.d.ts +31 -0
  246. package/build/dex/swaap-v1/libraries/Num.js +167 -0
  247. package/build/dex/swaap-v1/libraries/Num.js.map +1 -0
  248. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +23 -0
  249. package/build/dex/swaap-v1/libraries/PoolQuotations.js +131 -0
  250. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +1 -0
  251. package/build/dex/swaap-v1/libraries/Struct.d.ts +56 -0
  252. package/build/dex/swaap-v1/libraries/Struct.js +3 -0
  253. package/build/dex/swaap-v1/libraries/Struct.js.map +1 -0
  254. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +45 -0
  255. package/build/dex/swaap-v1/swaap-v1-pool.js +656 -0
  256. package/build/dex/swaap-v1/swaap-v1-pool.js.map +1 -0
  257. package/build/dex/swaap-v1/swaap-v1.d.ts +61 -0
  258. package/build/dex/swaap-v1/swaap-v1.js +369 -0
  259. package/build/dex/swaap-v1/swaap-v1.js.map +1 -0
  260. package/build/dex/swaap-v1/types.d.ts +106 -0
  261. package/build/dex/swaap-v1/types.js +9 -0
  262. package/build/dex/swaap-v1/types.js.map +1 -0
  263. package/build/dex/trader-joe-v2.1.d.ts +43 -0
  264. package/build/dex/trader-joe-v2.1.js +79 -0
  265. package/build/dex/trader-joe-v2.1.js.map +1 -0
  266. package/build/dex/uniswap-v3/contract-math/Oracle.js +4 -4
  267. package/build/dex/uniswap-v3/contract-math/Oracle.js.map +1 -1
  268. package/build/executor/compressor/Compressor.d.ts +23 -0
  269. package/build/executor/compressor/Compressor.js +144 -0
  270. package/build/executor/compressor/Compressor.js.map +1 -0
  271. package/build/executor/compressor/compress.d.ts +17 -0
  272. package/build/executor/compressor/compress.js +187 -0
  273. package/build/executor/compressor/compress.js.map +1 -0
  274. package/build/executor/compressor/compress_functions/addressSubstitution.d.ts +6 -0
  275. package/build/executor/compressor/compress_functions/addressSubstitution.js +29 -0
  276. package/build/executor/compressor/compress_functions/addressSubstitution.js.map +1 -0
  277. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.d.ts +10 -0
  278. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js +40 -0
  279. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js.map +1 -0
  280. package/build/executor/compressor/compress_functions/byteSubstitution.d.ts +11 -0
  281. package/build/executor/compressor/compress_functions/byteSubstitution.js +64 -0
  282. package/build/executor/compressor/compress_functions/byteSubstitution.js.map +1 -0
  283. package/build/executor/compressor/compress_functions/ffSubstitution.d.ts +7 -0
  284. package/build/executor/compressor/compress_functions/ffSubstitution.js +54 -0
  285. package/build/executor/compressor/compress_functions/ffSubstitution.js.map +1 -0
  286. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.d.ts +8 -0
  287. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js +67 -0
  288. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js.map +1 -0
  289. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.d.ts +8 -0
  290. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js +61 -0
  291. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js.map +1 -0
  292. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.d.ts +6 -0
  293. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js +37 -0
  294. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js.map +1 -0
  295. package/build/executor/compressor/compress_functions/searchUnusedBytes.d.ts +9 -0
  296. package/build/executor/compressor/compress_functions/searchUnusedBytes.js +33 -0
  297. package/build/executor/compressor/compress_functions/searchUnusedBytes.js.map +1 -0
  298. package/build/executor/compressor/fetchSaved.d.ts +0 -0
  299. package/build/executor/compressor/fetchSaved.js +17 -0
  300. package/build/executor/compressor/fetchSaved.js.map +1 -0
  301. package/build/executor/compressor/utils/computeCostL2.d.ts +2 -0
  302. package/build/executor/compressor/utils/computeCostL2.js +14 -0
  303. package/build/executor/compressor/utils/computeCostL2.js.map +1 -0
  304. package/build/executor/compressor/utils/findLongestDuplicatedString.d.ts +2 -0
  305. package/build/executor/compressor/utils/findLongestDuplicatedString.js +30 -0
  306. package/build/executor/compressor/utils/findLongestDuplicatedString.js.map +1 -0
  307. package/build/executor/compressor/utils/getAllIndexes.d.ts +2 -0
  308. package/build/executor/compressor/utils/getAllIndexes.js +12 -0
  309. package/build/executor/compressor/utils/getAllIndexes.js.map +1 -0
  310. package/build/executor/compressor/utils/getByteForAddress.d.ts +2 -0
  311. package/build/executor/compressor/utils/getByteForAddress.js +14 -0
  312. package/build/executor/compressor/utils/getByteForAddress.js.map +1 -0
  313. package/build/executor/compressor/utils/intTo2Bytes.d.ts +2 -0
  314. package/build/executor/compressor/utils/intTo2Bytes.js +14 -0
  315. package/build/executor/compressor/utils/intTo2Bytes.js.map +1 -0
  316. package/build/executor/compressor/utils/intTo3Bytes.d.ts +2 -0
  317. package/build/executor/compressor/utils/intTo3Bytes.js +18 -0
  318. package/build/executor/compressor/utils/intTo3Bytes.js.map +1 -0
  319. package/build/executor/compressor/utils/intToByte.d.ts +2 -0
  320. package/build/executor/compressor/utils/intToByte.js +10 -0
  321. package/build/executor/compressor/utils/intToByte.js.map +1 -0
  322. package/build/generic-swap-transaction-builder.js +3 -1
  323. package/build/generic-swap-transaction-builder.js.map +1 -1
  324. package/build/router/simpleswap.js +3 -1
  325. package/build/router/simpleswap.js.map +1 -1
  326. package/package.json +2 -2
  327. package/src/abi/BProtocol.json +1155 -0
  328. package/src/abi/Jarvis.json +1172 -0
  329. package/src/abi/MStableAsset.json +1545 -0
  330. package/src/abi/OneInchLp.json +1304 -0
  331. package/src/abi/Onebit.json +736 -0
  332. package/src/abi/Shell.json +1294 -0
  333. package/src/abi/TraderJoeV2Router.json +50 -0
  334. package/src/abi/integral/factory.json +333 -0
  335. package/src/abi/integral/oracle.json +501 -0
  336. package/src/abi/integral/pool.json +1041 -0
  337. package/src/abi/integral/relayer.json +1536 -0
  338. package/src/abi/zrx.v2.json +1967 -0
  339. package/src/abi/zrx.v3.json +3454 -0
  340. package/src/abi/zrx.v4.json +2193 -0
  341. package/src/config.ts +1 -1
  342. package/src/dex/OneInchLp.ts +84 -0
  343. package/src/dex/bProtocol/bProtocol-e2e.test.ts +93 -0
  344. package/src/dex/bProtocol/bProtocol.ts +108 -0
  345. package/src/dex/bProtocol/types.ts +13 -0
  346. package/src/dex/curve-v1-factory/config.ts +10 -47
  347. package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +16 -92
  348. package/src/dex/curve-v1-factory/curve-v1-factory-integration.test.ts +5 -125
  349. package/src/dex/curve-v1-factory/curve-v1-factory.ts +45 -137
  350. package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +2 -0
  351. package/src/dex/curve-v1-factory/price-handlers/functions/get_dx.ts +1 -24
  352. package/src/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.ts +2 -3
  353. package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +0 -1
  354. package/src/dex/curve-v1-factory/state-polling-pools/pool-polling-base.ts +10 -31
  355. package/src/dex/curve-v1-factory/types.ts +6 -22
  356. package/src/dex/curve-v1-stable-ng/config.ts +0 -18
  357. package/src/dex/curve-v1-stable-ng/curve-v1-stable-ng-e2e.test.ts +0 -17
  358. package/src/dex/index.ts +20 -3
  359. package/src/dex/integral/config.ts +20 -0
  360. package/src/dex/integral/context.ts +287 -0
  361. package/src/dex/integral/integral-e2e.test.ts +86 -0
  362. package/src/dex/integral/integral-events.test.ts +412 -0
  363. package/src/dex/integral/integral-factory.ts +146 -0
  364. package/src/dex/integral/integral-integration.test.ts +221 -0
  365. package/src/dex/integral/integral-pool.ts +198 -0
  366. package/src/dex/integral/integral-pricing.ts +190 -0
  367. package/src/dex/integral/integral-relayer.ts +285 -0
  368. package/src/dex/integral/integral-token.ts +95 -0
  369. package/src/dex/integral/integral.ts +523 -0
  370. package/src/dex/integral/test-artifacts/configs.json +1 -0
  371. package/src/dex/integral/test-artifacts/logs.json +1 -0
  372. package/src/dex/integral/test-artifacts/states.json +1 -0
  373. package/src/dex/integral/types.ts +88 -0
  374. package/src/dex/integral/utils-e2e.ts +194 -0
  375. package/src/dex/integral/utils.ts +146 -0
  376. package/src/dex/jarvis.ts +262 -0
  377. package/src/dex/mStable.ts +147 -0
  378. package/src/dex/onebit/onebit.ts +113 -0
  379. package/src/dex/onebit/types.ts +17 -0
  380. package/src/dex/paraswap-limit-orders/paraswap-limit-orders-e2e.test.ts +68 -152
  381. package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +0 -3
  382. package/src/dex/shell.ts +84 -0
  383. package/src/dex/trader-joe-v2.ts +148 -0
  384. package/src/dex/uniswap-v3/contract-math/Oracle.ts +5 -4
  385. package/src/dex/zerox/config.ts +31 -0
  386. package/src/dex/zerox/index.ts +328 -0
  387. package/src/dex/zerox/order.ts +62 -0
  388. package/src/dex/zerox/types.ts +82 -0
  389. package/src/dex/zerox/zerox-e2e.test.ts +110 -0
  390. package/src/generic-swap-transaction-builder.ts +3 -1
  391. package/src/router/simpleswap.ts +3 -1
  392. package/tests/constants-e2e.ts +2 -2
  393. package/tests/utils-e2e.ts +0 -2
  394. package/.idea/aws.xml +0 -17
  395. package/.idea/codeStyles/Project.xml +0 -19
  396. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  397. package/.idea/misc.xml +0 -6
  398. package/.idea/modules.xml +0 -8
  399. package/.idea/paraswap-dex-lib.iml +0 -9
  400. package/.idea/prettier.xml +0 -7
  401. package/.idea/vcs.xml +0 -6
  402. package/src/abi/curve-v1-factory/CurveV1Router.abi.json +0 -331
  403. package/src/dex/curve-v1-factory/optimizer.ts +0 -61
@@ -15,8 +15,6 @@ import {
15
15
  import { Tokens } from '../../../tests/constants-e2e';
16
16
  import { Address } from '@paraswap/core';
17
17
  import StableSwap3PoolABI from '../../abi/curve-v1/StableSwap3Pool.json';
18
- import CurveV1StableNgPoolAbi from '../../abi/curve-v1/CurveV1StableNg.json';
19
- import * as util from 'util';
20
18
 
21
19
  export function getReaderCalldata(
22
20
  exchangeAddress: string,
@@ -115,7 +113,7 @@ export async function testPricingOnNetwork(
115
113
  );
116
114
  console.log(
117
115
  `${srcTokenSymbol} <> ${destTokenSymbol} Pool Prices: `,
118
- util.inspect(poolPrices, false, null, true),
116
+ poolPrices,
119
117
  );
120
118
 
121
119
  expect(poolPrices).not.toBeNull();
@@ -128,15 +126,15 @@ export async function testPricingOnNetwork(
128
126
  // Check if onchain pricing equals to calculated ones
129
127
  await checkOnChainPricing(
130
128
  curveV1Factory,
131
- poolPrices![0].data.path[0].exchange,
132
- poolPrices![0].data.path[0].underlyingSwap
129
+ poolPrices![0].data.exchange,
130
+ poolPrices![0].data.underlyingSwap
133
131
  ? 'get_dy_underlying'
134
132
  : poolContractMethod,
135
133
  blockNumber,
136
134
  poolPrices![0].prices,
137
135
  amounts,
138
- poolPrices![0].data.path[0].i,
139
- poolPrices![0].data.path[0].j,
136
+ poolPrices![0].data.i,
137
+ poolPrices![0].data.j,
140
138
  readerIface,
141
139
  );
142
140
  }
@@ -228,10 +226,6 @@ describe('CurveV1Factory', function () {
228
226
  });
229
227
 
230
228
  describe(`crvUSD-GHO`, () => {
231
- const readerIface = new Interface(
232
- CurveV1StableNgPoolAbi as JsonFragment[],
233
- );
234
-
235
229
  const srcTokenSymbol = 'crvUSD';
236
230
  const destTokenSymbol = 'GHO';
237
231
  const amountsForSell = [
@@ -248,102 +242,6 @@ describe('CurveV1Factory', function () {
248
242
  10n * BI_POWS[tokens[srcTokenSymbol].decimals],
249
243
  ];
250
244
 
251
- const amountsForBuy = [
252
- 0n,
253
- 1n * BI_POWS[tokens[destTokenSymbol].decimals],
254
- 2n * BI_POWS[tokens[destTokenSymbol].decimals],
255
- 3n * BI_POWS[tokens[destTokenSymbol].decimals],
256
- 4n * BI_POWS[tokens[destTokenSymbol].decimals],
257
- 5n * BI_POWS[tokens[destTokenSymbol].decimals],
258
- ];
259
-
260
- it('getPoolIdentifiers and getPricesVolume SELL', async function () {
261
- await testPricingOnNetwork(
262
- curveV1Factory,
263
- network,
264
- dexKey,
265
- blockNumber,
266
- srcTokenSymbol,
267
- destTokenSymbol,
268
- SwapSide.SELL,
269
- amountsForSell,
270
- 'get_dy',
271
- readerIface,
272
- );
273
- });
274
-
275
- it('getPoolIdentifiers and getPricesVolume BUY', async function () {
276
- await testPricingOnNetwork(
277
- curveV1Factory,
278
- network,
279
- dexKey,
280
- blockNumber,
281
- srcTokenSymbol,
282
- destTokenSymbol,
283
- SwapSide.BUY,
284
- amountsForBuy,
285
- 'get_dx',
286
- readerIface,
287
- );
288
- });
289
-
290
- it('getTopPoolsForToken', async function () {
291
- // We have to check without calling initializePricing, because
292
- // pool-tracker is not calling that function
293
- const newCurveV1Factory = new CurveV1Factory(
294
- network,
295
- dexKey,
296
- dexHelper,
297
- );
298
- if (newCurveV1Factory.updatePoolState) {
299
- await newCurveV1Factory.updatePoolState();
300
- }
301
- const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
302
- tokens[srcTokenSymbol].address,
303
- 10,
304
- );
305
- console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
306
-
307
- if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
308
- checkPoolsLiquidity(
309
- poolLiquidity,
310
- Tokens[network][srcTokenSymbol].address,
311
- dexKey,
312
- );
313
- }
314
- });
315
- });
316
-
317
- describe(`crvUSD-USDT`, () => {
318
- const readerIface = new Interface(
319
- CurveV1StableNgPoolAbi as JsonFragment[],
320
- );
321
-
322
- const srcTokenSymbol = 'crvUSD';
323
- const destTokenSymbol = 'USDT';
324
- const amountsForSell = [
325
- 0n,
326
- 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
327
- 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
328
- 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
329
- 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
330
- 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
331
- 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
332
- 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
333
- 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
334
- 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
335
- 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
336
- ];
337
-
338
- const amountsForBuy = [
339
- 0n,
340
- 1n * BI_POWS[tokens[destTokenSymbol].decimals],
341
- 2n * BI_POWS[tokens[destTokenSymbol].decimals],
342
- 3n * BI_POWS[tokens[destTokenSymbol].decimals],
343
- 4n * BI_POWS[tokens[destTokenSymbol].decimals],
344
- 5n * BI_POWS[tokens[destTokenSymbol].decimals],
345
- ];
346
-
347
245
  it('getPoolIdentifiers and getPricesVolume SELL', async function () {
348
246
  await testPricingOnNetwork(
349
247
  curveV1Factory,
@@ -354,24 +252,6 @@ describe('CurveV1Factory', function () {
354
252
  destTokenSymbol,
355
253
  SwapSide.SELL,
356
254
  amountsForSell,
357
- 'get_dy',
358
- readerIface,
359
- );
360
- });
361
-
362
- it('getPoolIdentifiers and getPricesVolume BUY', async function () {
363
- console.log('amountsForBuy: ', amountsForBuy);
364
- await testPricingOnNetwork(
365
- curveV1Factory,
366
- network,
367
- dexKey,
368
- blockNumber,
369
- srcTokenSymbol,
370
- destTokenSymbol,
371
- SwapSide.BUY,
372
- amountsForBuy,
373
- 'get_dx',
374
- readerIface,
375
255
  );
376
256
  });
377
257
 
@@ -34,8 +34,6 @@ import {
34
34
  import { IDex } from '../idex';
35
35
  import { IDexHelper } from '../../dex-helper/idex-helper';
36
36
  import {
37
- CurveRouterPoolType,
38
- CurveRouterSwapType,
39
37
  CurveSwapFunctions,
40
38
  CurveV1FactoryData,
41
39
  CurveV1FactoryDirectSwap,
@@ -44,7 +42,6 @@ import {
44
42
  CustomImplementationNames,
45
43
  DirectCurveV1FactoryParamV6,
46
44
  DirectCurveV1Param,
47
- FactoryImplementationNames,
48
45
  ImplementationNames,
49
46
  PoolConstants,
50
47
  } from './types';
@@ -63,7 +60,6 @@ import {
63
60
  } from './constants';
64
61
  import { CurveV1FactoryPoolManager } from './curve-v1-pool-manager';
65
62
  import CurveABI from '../../abi/Curve.json';
66
- import CurveV1RouterABI from '../../abi/curve-v1-factory/CurveV1Router.abi.json';
67
63
  import DirectSwapABI from '../../abi/DirectSwap.json';
68
64
  import FactoryCurveV1ABI from '../../abi/curve-v1-factory/FactoryCurveV1.json';
69
65
  import ThreePoolABI from '../../abi/curve-v1-factory/ThreePool.json';
@@ -85,7 +81,6 @@ import { PriceHandler } from './price-handlers/price-handler';
85
81
  import { hexConcat, hexlify, hexZeroPad } from 'ethers/lib/utils';
86
82
  import { packCurveData } from '../../lib/curve/encoder';
87
83
  import { encodeCurveAssets } from '../curve-v1/packer';
88
- import { extractReturnAmountPosition } from '../../executor/utils';
89
84
 
90
85
  export const DefaultCoinsABI: AbiItem = {
91
86
  type: 'function',
@@ -127,12 +122,7 @@ export class CurveV1Factory
127
122
 
128
123
  readonly directSwapIface = new Interface(DirectSwapABI);
129
124
 
130
- protected factoryImplementationsSupportBuySide = new Set<ImplementationNames>(
131
- [
132
- FactoryImplementationNames.FACTORY_PLAIN_2_CRV_EMA,
133
- FactoryImplementationNames.FACTORY_STABLE_NG,
134
- ],
135
- );
125
+ protected buySideSupported: boolean = false;
136
126
 
137
127
  public static dexKeysWithNetwork: { key: string; networks: Network[] }[] =
138
128
  getDexKeysWithNetwork(CurveV1FactoryConfig);
@@ -154,7 +144,6 @@ export class CurveV1Factory
154
144
  this.config.factories?.map(e => e.address.toLowerCase()) || [];
155
145
  this.ifaces = {
156
146
  exchangeRouter: new Interface(CurveABI),
157
- curveV1Router: new Interface(CurveV1RouterABI),
158
147
  factory: new Interface(FactoryCurveV1ABI as JsonFragment[]),
159
148
  erc20: new Interface(ERC20ABI as JsonFragment[]),
160
149
  threePool: new Interface(ThreePoolABI as JsonFragment[]),
@@ -298,7 +287,7 @@ export class CurveV1Factory
298
287
  this.dexKey,
299
288
  this.dexHelper.config.data.network,
300
289
  this.cacheStateKey,
301
- customPool.name as CustomImplementationNames,
290
+ customPool.name,
302
291
  implementationAddress,
303
292
  customPool.address,
304
293
  this.config.stateUpdatePeriodMs,
@@ -319,7 +308,7 @@ export class CurveV1Factory
319
308
  this.dexKey,
320
309
  this.dexHelper.config.data.network,
321
310
  this.cacheStateKey,
322
- customPool.name as CustomImplementationNames,
311
+ customPool.name,
323
312
  implementationAddress,
324
313
  customPool.address,
325
314
  this.config.stateUpdatePeriodMs,
@@ -714,6 +703,10 @@ export class CurveV1Factory
714
703
  side: SwapSide,
715
704
  blockNumber: number,
716
705
  ): Promise<string[]> {
706
+ if (!this.buySideSupported && side === SwapSide.BUY) {
707
+ return [];
708
+ }
709
+
717
710
  const _srcToken = this.needWrapNative
718
711
  ? this.dexHelper.config.wrapETH(srcToken)
719
712
  : srcToken;
@@ -728,17 +721,11 @@ export class CurveV1Factory
728
721
  return [];
729
722
  }
730
723
 
731
- let pools = this.poolManager.getPoolsForPair(
724
+ const pools = this.poolManager.getPoolsForPair(
732
725
  srcTokenAddress,
733
726
  destTokenAddress,
734
727
  );
735
728
 
736
- if (side === SwapSide.BUY) {
737
- pools = pools.filter(pool =>
738
- this.factoryImplementationsSupportBuySide.has(pool.implementationName),
739
- );
740
- }
741
-
742
729
  return pools.map(pool =>
743
730
  this.getPoolIdentifier(pool.address, pool.isMetaPool),
744
731
  );
@@ -759,6 +746,10 @@ export class CurveV1Factory
759
746
  },
760
747
  ): Promise<null | ExchangePrices<CurveV1FactoryData>> {
761
748
  try {
749
+ if (!this.buySideSupported && side === SwapSide.BUY) {
750
+ return null;
751
+ }
752
+
762
753
  const _isSrcTokenTransferFeeToBeExchanged =
763
754
  isSrcTokenTransferFeeToBeExchanged(transferFees);
764
755
 
@@ -798,14 +789,6 @@ export class CurveV1Factory
798
789
  );
799
790
  }
800
791
 
801
- if (side === SwapSide.BUY) {
802
- pools = pools.filter(pool =>
803
- this.factoryImplementationsSupportBuySide.has(
804
- pool.implementationName,
805
- ),
806
- );
807
- }
808
-
809
792
  if (pools.length <= 0) {
810
793
  return null;
811
794
  }
@@ -876,9 +859,9 @@ export class CurveV1Factory
876
859
  side,
877
860
  state,
878
861
  amountsWithUnitAndFee,
879
- poolData.path[0].i,
880
- poolData.path[0].j,
881
- poolData.path[0].underlyingSwap,
862
+ poolData.i,
863
+ poolData.j,
864
+ poolData.underlyingSwap,
882
865
  );
883
866
 
884
867
  outputs = applyTransferFee(
@@ -940,11 +923,10 @@ export class CurveV1Factory
940
923
  data: CurveV1FactoryData,
941
924
  side: SwapSide,
942
925
  ): AdapterExchangeParam {
943
- if (data.path.length > 1) {
944
- throw new Error('Multihop is not supported by v5');
945
- }
926
+ if (!this.buySideSupported && side === SwapSide.BUY)
927
+ throw new Error(`Buy not supported`);
946
928
 
947
- const { i, j, underlyingSwap } = data.path[0];
929
+ const { i, j, underlyingSwap } = data;
948
930
  const payload = this.abiCoder.encodeParameter(
949
931
  {
950
932
  ParentStruct: {
@@ -958,7 +940,7 @@ export class CurveV1Factory
958
940
  );
959
941
 
960
942
  return {
961
- targetExchange: data.path[0].exchange,
943
+ targetExchange: data.exchange,
962
944
  payload,
963
945
  networkFee: '0',
964
946
  };
@@ -996,7 +978,7 @@ export class CurveV1Factory
996
978
  isApproved = await this.dexHelper.augustusApprovals.hasApproval(
997
979
  options.executionContractAddress,
998
980
  this.dexHelper.config.wrapETH(srcToken).address,
999
- optimalSwapExchange.data.path[0].exchange,
981
+ optimalSwapExchange.data.exchange,
1000
982
  );
1001
983
  } catch (e) {
1002
984
  this.logger.error(
@@ -1038,11 +1020,6 @@ export class CurveV1Factory
1038
1020
  if (contractMethod !== DIRECT_METHOD_NAME) {
1039
1021
  throw new Error(`Invalid contract method ${contractMethod}`);
1040
1022
  }
1041
-
1042
- if (data.path.length > 1) {
1043
- throw new Error('Multihop is not supported by v5');
1044
- }
1045
-
1046
1023
  assert(side === SwapSide.SELL, 'Buy not supported');
1047
1024
 
1048
1025
  let isApproved: boolean = !!data.isApproved;
@@ -1053,16 +1030,16 @@ export class CurveV1Factory
1053
1030
  const swapParams: DirectCurveV1Param = [
1054
1031
  srcToken,
1055
1032
  destToken,
1056
- data.path[0].exchange,
1033
+ data.exchange,
1057
1034
  srcAmount,
1058
1035
  destAmount,
1059
1036
  expectedAmount,
1060
1037
  feePercent,
1061
- data.path[0].i.toString(),
1062
- data.path[0].j.toString(),
1038
+ data.i.toString(),
1039
+ data.j.toString(),
1063
1040
  partner,
1064
1041
  isApproved,
1065
- data.path[0].underlyingSwap
1042
+ data.underlyingSwap
1066
1043
  ? CurveV1SwapType.EXCHANGE_UNDERLYING
1067
1044
  : CurveV1SwapType.EXCHANGE,
1068
1045
  beneficiary,
@@ -1103,11 +1080,6 @@ export class CurveV1Factory
1103
1080
  if (contractMethod !== DIRECT_METHOD_NAME_V6) {
1104
1081
  throw new Error(`Invalid contract method ${contractMethod}`);
1105
1082
  }
1106
-
1107
- if (data.path.length > 1) {
1108
- throw new Error('Multihop is not supported by direct method');
1109
- }
1110
-
1111
1083
  assert(side === SwapSide.SELL, 'Buy not supported');
1112
1084
 
1113
1085
  const metadata = hexConcat([
@@ -1117,14 +1089,14 @@ export class CurveV1Factory
1117
1089
 
1118
1090
  const swapParams: DirectCurveV1FactoryParamV6 = [
1119
1091
  packCurveData(
1120
- data.path[0].exchange,
1092
+ data.exchange,
1121
1093
  !data.isApproved, // approve flag, if not approved then set to true
1122
1094
  isETHAddress(destToken) ? 0 : isETHAddress(srcToken) ? 3 : 0,
1123
- data.path[0].underlyingSwap
1095
+ data.underlyingSwap
1124
1096
  ? CurveV1SwapType.EXCHANGE_UNDERLYING
1125
1097
  : CurveV1SwapType.EXCHANGE,
1126
1098
  ).toString(),
1127
- encodeCurveAssets(data.path[0].i, data.path[0].j).toString(),
1099
+ encodeCurveAssets(data.i, data.j).toString(),
1128
1100
  srcToken,
1129
1101
  destToken,
1130
1102
  fromAmount,
@@ -1166,11 +1138,10 @@ export class CurveV1Factory
1166
1138
  data: CurveV1FactoryData,
1167
1139
  side: SwapSide,
1168
1140
  ): Promise<SimpleExchangeParam> {
1169
- if (data.path.length > 1) {
1170
- throw new Error('Multihop is not supported by v5');
1171
- }
1141
+ if (!this.buySideSupported && side === SwapSide.BUY)
1142
+ throw new Error(`Buy not supported`);
1172
1143
 
1173
- const { exchange, i, j, underlyingSwap } = data.path[0];
1144
+ const { exchange, i, j, underlyingSwap } = data;
1174
1145
  const defaultArgs = [i, j, srcAmount, MIN_AMOUNT_TO_RECEIVE];
1175
1146
  const swapMethod = underlyingSwap
1176
1147
  ? CurveSwapFunctions.exchange_underlying
@@ -1204,93 +1175,30 @@ export class CurveV1Factory
1204
1175
  data: CurveV1FactoryData,
1205
1176
  side: SwapSide,
1206
1177
  ): DexExchangeParam {
1207
- if (data.path.length === 1) {
1208
- // Single pool encoding
1209
- const { exchange, i, j, underlyingSwap } = data.path[0];
1210
-
1211
- const minAmountToReceive =
1212
- side === SwapSide.SELL ? MIN_AMOUNT_TO_RECEIVE : destAmount;
1213
- const defaultArgs = [i, j, srcAmount, minAmountToReceive];
1214
-
1215
- const swapMethod = underlyingSwap
1216
- ? CurveSwapFunctions.exchange_underlying
1217
- : CurveSwapFunctions.exchange;
1218
-
1219
- const exchangeData = this.ifaces.exchangeRouter.encodeFunctionData(
1220
- swapMethod,
1221
- defaultArgs,
1222
- );
1178
+ if (!this.buySideSupported && side === SwapSide.BUY)
1179
+ throw new Error(`Buy not supported`);
1223
1180
 
1224
- return {
1225
- exchangeData,
1226
- needWrapNative: this.needWrapNative,
1227
- sendEthButSupportsInsertFromAmount: true,
1228
- dexFuncHasRecipient: false,
1229
- targetExchange: exchange,
1230
- returnAmountPos: undefined,
1231
- };
1232
- }
1181
+ const { exchange, i, j, underlyingSwap } = data;
1233
1182
 
1234
- // Multihop case encoding
1235
- // Curve Ng Router exchange function params description https://github.com/curvefi/curve-router-ng/blob/master/contracts/Router.vy#L180
1236
- const pathLength = 11;
1237
- const swapParamsLength = 5;
1238
- const poolsLength = 5;
1239
-
1240
- const path = data.path
1241
- .map((item, index) =>
1242
- index === 0
1243
- ? [item.tokenIn, item.exchange, item.tokenOut] // we need tokenIn only for the first item because there is no prev pool
1244
- : [item.exchange, item.tokenOut],
1245
- )
1246
- .flat();
1247
-
1248
- while (path.length < pathLength) {
1249
- path.push(NULL_ADDRESS);
1250
- }
1183
+ const minAmountToReceive =
1184
+ side === SwapSide.SELL ? MIN_AMOUNT_TO_RECEIVE : destAmount;
1185
+ const defaultArgs = [i, j, srcAmount, minAmountToReceive];
1251
1186
 
1252
- const swapParams = data.path.map(item => [
1253
- item.i,
1254
- item.j,
1255
- item.underlyingSwap
1256
- ? CurveRouterSwapType.exchange_underlying
1257
- : CurveRouterSwapType.exchange,
1258
- CurveRouterPoolType.stable,
1259
- item.n_coins,
1260
- ]);
1261
-
1262
- while (swapParams.length < swapParamsLength) {
1263
- swapParams.push([0, 0, 0, 0, 0]);
1264
- }
1265
-
1266
- const pools = [];
1267
-
1268
- while (pools.length < poolsLength) {
1269
- pools.push(NULL_ADDRESS);
1270
- }
1271
-
1272
- const exchangeData = this.ifaces.curveV1Router.encodeFunctionData(
1273
- `exchange(address[${pathLength}], uint256[5][${swapParamsLength}], uint256, uint256, address[${poolsLength}], address)`,
1274
- [
1275
- path,
1276
- swapParams,
1277
- srcAmount,
1278
- side === SwapSide.SELL ? MIN_AMOUNT_TO_RECEIVE : destAmount,
1279
- pools,
1280
- recipient,
1281
- ],
1187
+ const swapMethod = underlyingSwap
1188
+ ? CurveSwapFunctions.exchange_underlying
1189
+ : CurveSwapFunctions.exchange;
1190
+ const exchangeData = this.ifaces.exchangeRouter.encodeFunctionData(
1191
+ swapMethod,
1192
+ defaultArgs,
1282
1193
  );
1283
1194
 
1284
1195
  return {
1285
1196
  exchangeData,
1286
1197
  needWrapNative: this.needWrapNative,
1287
1198
  sendEthButSupportsInsertFromAmount: true,
1288
- dexFuncHasRecipient: true,
1289
- targetExchange: this.config.router,
1290
- returnAmountPos: extractReturnAmountPosition(
1291
- this.ifaces.curveV1Router,
1292
- `exchange(address[${pathLength}], uint256[5][${swapParamsLength}], uint256, uint256, address[${poolsLength}], address)`,
1293
- ),
1199
+ dexFuncHasRecipient: false,
1200
+ targetExchange: exchange,
1201
+ returnAmountPos: undefined,
1294
1202
  };
1295
1203
  }
1296
1204
 
@@ -1,4 +1,6 @@
1
+ import {} from 'ts-essentials';
1
2
  import { BI_POWS } from '../../../../bigint-constants';
3
+ import { PRECISION } from '../../../kyberdmm/fee-formula';
2
4
  import { ImplementationNames, PoolContextConstants } from '../../types';
3
5
 
4
6
  const implementationConstants: Record<
@@ -3,29 +3,6 @@ import { get_dx, IPoolContext } from '../types';
3
3
  import { requireValue, throwNotExist } from './utils';
4
4
  import _ from 'lodash';
5
5
 
6
- const factoryPlain2CrvEma: get_dx = (
7
- self: IPoolContext,
8
- state: PoolState,
9
- i: number,
10
- j: number,
11
- dy: bigint,
12
- ) => {
13
- const balances = requireValue(self, state, 'balances', 'factoryPlain2CrvEma');
14
- const fee = requireValue(self, state, 'fee', 'factoryPlain2CrvEma');
15
- const { PRECISION, FEE_DENOMINATOR } = self.constants;
16
- const { rate_multipliers: rates } = state.constants;
17
-
18
- const xp = self._xp_mem(self, rates, balances);
19
-
20
- const y =
21
- xp[j] -
22
- (((dy * rates[j]) / PRECISION + 1n) * FEE_DENOMINATOR) /
23
- (FEE_DENOMINATOR - fee);
24
- const x = self.get_y(self, state, j, i, y, xp, 0n, 0n);
25
-
26
- return ((x - xp[i]) * PRECISION) / rates[i];
27
- };
28
-
29
6
  const stableNg: get_dx = (
30
7
  self: IPoolContext,
31
8
  state: PoolState,
@@ -133,7 +110,7 @@ const implementations: Record<ImplementationNames, get_dx> = {
133
110
  [ImplementationNames.FACTORY_PLAIN_2_BASIC_EMA]: notExist,
134
111
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: notExist,
135
112
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: notExist,
136
- [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: factoryPlain2CrvEma,
113
+ [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: notExist,
137
114
 
138
115
  [ImplementationNames.FACTORY_STABLE_NG]: stableNg,
139
116
  };
@@ -2,7 +2,7 @@ import _ from 'lodash';
2
2
  import { Logger } from 'log4js';
3
3
  import { MultiCallParams } from '../../../lib/multi-wrapper';
4
4
  import {
5
- CustomImplementationNames,
5
+ ImplementationNames,
6
6
  PoolConstants,
7
7
  PoolContextConstants,
8
8
  PoolState,
@@ -101,7 +101,7 @@ export class CustomBasePoolForFactory extends PoolPollingBase {
101
101
  readonly dexKey: string,
102
102
  network: number,
103
103
  cacheStateKey: string,
104
- implementationName: CustomImplementationNames,
104
+ implementationName: ImplementationNames,
105
105
  implementationAddress: Address,
106
106
  address: Address,
107
107
  stateUpdatePeriodMs: number,
@@ -128,7 +128,6 @@ export class CustomBasePoolForFactory extends PoolPollingBase {
128
128
  stateUpdatePeriodMs,
129
129
  poolIdentifier,
130
130
  poolConstants,
131
- poolContextConstants,
132
131
  address,
133
132
  curveLiquidityApiSlug,
134
133
  isLendingPool,
@@ -67,7 +67,6 @@ export class FactoryStateHandler extends PoolPollingBase {
67
67
  config.stateUpdatePeriodMs,
68
68
  poolIdentifier,
69
69
  poolConstants,
70
- poolContextConstants,
71
70
  address,
72
71
  liquidityApiSlug,
73
72
  false,
@@ -5,13 +5,7 @@ import {
5
5
  MAX_ALLOWED_STATE_DELAY_FACTOR,
6
6
  MIN_LIQUIDITY_IN_USD,
7
7
  } from '../constants';
8
- import {
9
- CurveV1FactoryData,
10
- ImplementationNames,
11
- PoolConstants,
12
- PoolContextConstants,
13
- PoolState,
14
- } from '../types';
8
+ import { CurveV1FactoryData, PoolConstants, PoolState } from '../types';
15
9
  import { Address } from '@paraswap/core';
16
10
 
17
11
  export type MulticallReturnedTypes = bigint | bigint[];
@@ -44,12 +38,11 @@ export abstract class PoolPollingBase {
44
38
  readonly dexKey: string,
45
39
  readonly network: number,
46
40
  readonly cacheStateKey: string,
47
- readonly implementationName: ImplementationNames,
41
+ readonly implementationName: string,
48
42
  readonly implementationAddress: Address,
49
43
  readonly stateUpdatePeriodMs: number,
50
44
  readonly poolIdentifier: string,
51
45
  readonly poolConstants: PoolConstants,
52
- readonly poolContextConstants: PoolContextConstants,
53
46
  readonly address: Address,
54
47
  readonly curveLiquidityApiSlug: string,
55
48
  readonly isLendingPool: boolean,
@@ -127,17 +120,10 @@ export abstract class PoolPollingBase {
127
120
 
128
121
  if (iC !== undefined && jC !== undefined) {
129
122
  return {
130
- path: [
131
- {
132
- tokenIn: srcAddress,
133
- tokenOut: destAddress,
134
- exchange: this.address,
135
- i: iC,
136
- j: jC,
137
- underlyingSwap: false,
138
- n_coins: this.poolConstants.COINS.length,
139
- },
140
- ],
123
+ exchange: this.address,
124
+ i: iC,
125
+ j: jC,
126
+ underlyingSwap: false,
141
127
  };
142
128
  }
143
129
 
@@ -154,17 +140,10 @@ export abstract class PoolPollingBase {
154
140
  // I expect them to be included in old CurveV1 implementation
155
141
  if (iU !== undefined && jU !== undefined && !(iU > 0 && jU > 0)) {
156
142
  return {
157
- path: [
158
- {
159
- tokenIn: srcAddress,
160
- tokenOut: destAddress,
161
- exchange: this.address,
162
- i: iU,
163
- j: jU,
164
- underlyingSwap: true,
165
- n_coins: this.poolConstants.COINS.length,
166
- },
167
- ],
143
+ exchange: this.address,
144
+ i: iU,
145
+ j: jU,
146
+ underlyingSwap: true,
168
147
  };
169
148
  }
170
149
  }