@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,7 +15,6 @@ export type PoolContextConstants = {
15
15
  // for all pools
16
16
  isWrapNative: boolean;
17
17
  isLending: boolean;
18
- isStable?: boolean;
19
18
 
20
19
  // Starting from this point, constants are context relevant for pricing
21
20
 
@@ -69,15 +68,10 @@ export type PoolStateWithUpdateInfo<T> = {
69
68
  };
70
69
 
71
70
  export type CurveV1FactoryData = {
72
- path: {
73
- tokenIn: Address;
74
- tokenOut: Address;
75
- exchange: Address;
76
- i: number;
77
- j: number;
78
- underlyingSwap: boolean;
79
- n_coins: number;
80
- }[];
71
+ exchange: Address;
72
+ i: number;
73
+ j: number;
74
+ underlyingSwap: boolean;
81
75
  isApproved?: boolean;
82
76
  };
83
77
 
@@ -124,6 +118,8 @@ export enum FactoryImplementationNames {
124
118
  FACTORY_PLAIN_4_OPTIMIZED = 'factory_plain_4_optimized',
125
119
 
126
120
  FACTORY_STABLE_NG = 'factory_stable_ng',
121
+ // FACTORY_STABLE_6_NG = 'factory_stable_6_ng',
122
+ // FACTORY_STABLE_8_NG = 'factory_stable_8_ng',
127
123
  }
128
124
 
129
125
  export enum CustomImplementationNames {
@@ -192,7 +188,6 @@ type DexParamFactory = {
192
188
 
193
189
  export type DexParams = {
194
190
  factories: DexParamFactory[] | null;
195
- router: Address;
196
191
  stateUpdatePeriodMs: number;
197
192
  factoryPoolImplementations: Record<Address, FactoryPoolImplementations>;
198
193
  customPools: Record<string, CustomPoolConfig>;
@@ -207,19 +202,8 @@ export enum CurveSwapFunctions {
207
202
  exchange_underlying = 'exchange_underlying',
208
203
  }
209
204
 
210
- export enum CurveRouterSwapType {
211
- exchange = 1,
212
- exchange_underlying = 2,
213
- }
214
-
215
- export enum CurveRouterPoolType {
216
- non_stable = 0,
217
- stable = 10,
218
- }
219
-
220
205
  export type CurveV1FactoryIfaces = {
221
206
  exchangeRouter: Interface;
222
- curveV1Router: Interface;
223
207
  factory: Interface;
224
208
  erc20: Interface;
225
209
  threePool: Interface;
@@ -13,7 +13,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
13
13
  isStableNg: true,
14
14
  },
15
15
  ],
16
- router: '0x16C6521Dff6baB339122a0FE25a9116693265353', // https://github.com/curvefi/curve-router-ng
17
16
  stateUpdatePeriodMs: 5 * 1000,
18
17
  disabledPools: new Set([]),
19
18
  disabledImplementations: new Set([]),
@@ -60,18 +59,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
60
59
  liquidityApiSlug: '/factory-stable-ng',
61
60
  isStoreRateSupported: true,
62
61
  },
63
- '0xc65cb3156225380beda366610bab18d5835a1647': {
64
- name: ImplementationNames.FACTORY_STABLE_NG,
65
- address: '0xc65cb3156225380beda366610bab18d5835a1647',
66
- liquidityApiSlug: '/factory-stable-ng',
67
- isStoreRateSupported: true,
68
- },
69
- '0xa0ec67a3c483674f77915893346a8ca3abe2b785': {
70
- name: ImplementationNames.FACTORY_STABLE_NG,
71
- address: '0xa0ec67a3c483674f77915893346a8ca3abe2b785',
72
- liquidityApiSlug: '/factory-stable-ng',
73
- isStoreRateSupported: true,
74
- },
75
62
  },
76
63
  customPools: {},
77
64
  },
@@ -82,7 +69,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
82
69
  isStableNg: true,
83
70
  },
84
71
  ],
85
- router: '0x0DCDED3545D565bA3B19E683431381007245d983', // https://github.com/curvefi/curve-router-ng
86
72
  stateUpdatePeriodMs: 2 * 1000,
87
73
  disabledPools: new Set([]),
88
74
  disabledImplementations: new Set([]),
@@ -109,7 +95,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
109
95
  isStableNg: true,
110
96
  },
111
97
  ],
112
- router: '0x0DCDED3545D565bA3B19E683431381007245d983', // https://github.com/curvefi/curve-router-ng
113
98
  stateUpdatePeriodMs: 2 * 1000,
114
99
  disabledPools: new Set([]),
115
100
  disabledImplementations: new Set([]),
@@ -130,7 +115,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
130
115
  isStableNg: true,
131
116
  },
132
117
  ],
133
- router: '0x2191718CD32d02B8E60BAdFFeA33E4B5DD9A0A0D', // https://github.com/curvefi/curve-router-ng
134
118
  stateUpdatePeriodMs: 2 * 1000,
135
119
  disabledPools: new Set([]),
136
120
  disabledImplementations: new Set([]),
@@ -157,7 +141,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
157
141
  isStableNg: true,
158
142
  },
159
143
  ],
160
- router: '0x0DCDED3545D565bA3B19E683431381007245d983', // https://github.com/curvefi/curve-router-ng
161
144
  stateUpdatePeriodMs: 2 * 1000,
162
145
  disabledPools: new Set([]),
163
146
  disabledImplementations: new Set([]),
@@ -178,7 +161,6 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
178
161
  isStableNg: true,
179
162
  },
180
163
  ],
181
- router: '0x4f37A9d177470499A2dD084621020b023fcffc1F', // https://github.com/curvefi/curve-router-ng
182
164
  stateUpdatePeriodMs: 2 * 1000,
183
165
  disabledPools: new Set([]),
184
166
  disabledImplementations: new Set([]),
@@ -63,23 +63,6 @@ describe('CurveV1StableNG E2E', () => {
63
63
  sidesToContractMethods,
64
64
  );
65
65
  });
66
-
67
- describe('GHO -> crvUSD', () => {
68
- const tokenASymbol: string = 'GHO';
69
- const tokenBSymbol: string = 'crvUSD';
70
-
71
- const tokenAAmount: string = '1000000000000000000';
72
- const tokenBAmount: string = '1000000000000000000';
73
-
74
- testForNetwork(
75
- network,
76
- dexKey,
77
- tokenASymbol,
78
- tokenBSymbol,
79
- tokenAAmount,
80
- tokenBAmount,
81
- );
82
- });
83
66
  });
84
67
 
85
68
  describe('Polygon', () => {
package/src/dex/index.ts CHANGED
@@ -2,10 +2,12 @@ import _ from 'lodash';
2
2
  import { UnoptimizedRate } from '../types';
3
3
  import { CurveV2 } from './curve-v2/curve-v2';
4
4
  import { IDexTxBuilder, DexConstructor, IDex, IRouteOptimizer } from './idex';
5
+ import { Jarvis } from './jarvis';
5
6
  import { JarvisV6 } from './jarvis-v6/jarvis-v6';
6
7
  import { StablePool } from './stable-pool/stable-pool';
7
8
  import { Weth } from './weth/weth';
8
9
  import { PolygonMigrator } from './polygon-migrator/polygon-migrator';
10
+ import { ZeroX } from './zerox';
9
11
  import { UniswapV3 } from './uniswap-v3/uniswap-v3';
10
12
  import { BalancerV2 } from './balancer-v2/balancer-v2';
11
13
  import { balancerV2Merge } from './balancer-v2/optimizer';
@@ -16,10 +18,15 @@ import { BiSwap } from './uniswap-v2/biswap';
16
18
  import { MDEX } from './uniswap-v2/mdex';
17
19
  import { Dfyn } from './uniswap-v2/dfyn';
18
20
  import { Bancor } from './bancor/bancor';
21
+ import { BProtocol } from './bProtocol/bProtocol';
22
+ import { MStable } from './mStable';
23
+ import { Shell } from './shell';
24
+ import { Onebit } from './onebit/onebit';
19
25
  import { Compound } from './compound/compound';
20
26
  import { AaveV2 } from './aave-v2/aave-v2';
21
27
  import { AaveV3 } from './aave-v3/aave-v3';
22
28
  import { IdleDao } from './idle-dao/idle-dao';
29
+ import { OneInchLp } from './OneInchLp';
23
30
  import { DodoV1 } from './dodo-v1/dodo-v1';
24
31
  import { DodoV2 } from './dodo-v2';
25
32
  import { Smoothy } from './smoothy/smoothy';
@@ -55,7 +62,6 @@ import { CurveFork } from './curve-v1/forks/curve-forks/curve-forks';
55
62
  import { Swerve } from './curve-v1/forks/swerve/swerve';
56
63
  import { CurveV1Factory } from './curve-v1-factory/curve-v1-factory';
57
64
  import { CurveV1StableNg } from './curve-v1-stable-ng/curve-v1-stable-ng';
58
- import { curveV1Merge } from './curve-v1-factory/optimizer';
59
65
  import { GenericRFQ } from './generic-rfq/generic-rfq';
60
66
  import { WstETH } from './wsteth/wsteth';
61
67
  import { Camelot } from './camelot/camelot';
@@ -65,6 +71,7 @@ import { MaverickV1 } from './maverick-v1/maverick-v1';
65
71
  import { MaverickV2 } from './maverick-v2/maverick-v2';
66
72
  import { QuickSwapV3 } from './quickswap/quickswap-v3';
67
73
  import { ThenaFusion } from './quickswap/thena-fusion';
74
+ import { TraderJoeV2 } from './trader-joe-v2';
68
75
  import { SwaapV2 } from './swaap-v2/swaap-v2';
69
76
  import { TraderJoeV21 } from './trader-joe-v2.1/trader-joe-v2.1';
70
77
  import { PancakeswapV3 } from './pancakeswap-v3/pancakeswap-v3';
@@ -76,6 +83,7 @@ import { NomiswapV2 } from './uniswap-v2/nomiswap-v2';
76
83
  import { Dexalot } from './dexalot/dexalot';
77
84
  import { Wombat } from './wombat/wombat';
78
85
  import { Swell } from './swell/swell';
86
+ import { Integral } from './integral/integral';
79
87
  import { PharaohV1 } from './solidly/forks-override/pharaohV1';
80
88
  import { EtherFi } from './etherfi';
81
89
  import { Spark } from './spark/spark';
@@ -86,13 +94,21 @@ const LegacyDexes = [
86
94
  CurveV2,
87
95
  StablePool,
88
96
  Smoothy,
97
+ ZeroX,
89
98
  Bancor,
99
+ BProtocol,
100
+ MStable,
101
+ Shell,
102
+ Onebit,
90
103
  Compound,
104
+ OneInchLp,
91
105
  DodoV1,
92
106
  DodoV2,
93
107
  QuickSwapV3,
94
108
  ThenaFusion,
109
+ TraderJoeV2,
95
110
  TraderJoeV21,
111
+ Jarvis,
96
112
  Lido,
97
113
  AugustusRFQOrder,
98
114
  EtherFi,
@@ -154,6 +170,7 @@ const Dexes = [
154
170
  SolidlyV3,
155
171
  Wombat,
156
172
  Swell,
173
+ Integral,
157
174
  PharaohV1,
158
175
  Spark,
159
176
  AaveV3Stata,
@@ -188,7 +205,6 @@ export class DexAdapterService {
188
205
  balancerV1Merge,
189
206
  balancerV2Merge,
190
207
  uniswapMerge,
191
- curveV1Merge,
192
208
  ];
193
209
 
194
210
  constructor(
@@ -324,7 +340,8 @@ export class DexAdapterService {
324
340
  if (this.genericRFQDexKeys.has(dexKey)) {
325
341
  return dexKey;
326
342
  }
327
- if ('uniswapforkoptimized' === dexKey) {
343
+ if (!isAdapters && /^paraswappool(.*)/i.test(dexKey)) return 'zerox';
344
+ else if ('uniswapforkoptimized' === dexKey) {
328
345
  if (!this.uniswapV2Alias)
329
346
  throw new Error(
330
347
  `${dexKey} dex is not supported for network(${this.network})!`,
@@ -0,0 +1,20 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ import { Network } from '../../constants';
4
+
5
+ export const IntegralConfig: DexConfigMap<DexParams> = {
6
+ Integral: {
7
+ [Network.MAINNET]: {
8
+ factoryAddress: '0xC480b33eE5229DE3FbDFAD1D2DCD3F3BAD0C56c6',
9
+ relayerAddress: '0xd17b3c9784510E33cD5B87b490E79253BcD81e2E',
10
+ subgraphURL: 'ANd5QJuYtyfngmXvBMu9kZAv935vhcqp4xAGBkmCADN3',
11
+ },
12
+ [Network.ARBITRUM]: {
13
+ factoryAddress: '0x717EF162cf831db83c51134734A15D1EBe9E516a',
14
+ relayerAddress: '0x3c6951FDB433b5b8442e7aa126D50fBFB54b5f42',
15
+ subgraphURL: 'HXeVedRK7VgogXwbK5Sc4mjyLkhBAS5akskRvbSYnkHU',
16
+ },
17
+ },
18
+ };
19
+
20
+ export const Adapters: Record<number, AdapterMappings> = {};
@@ -0,0 +1,287 @@
1
+ import { Address } from '@paraswap/core';
2
+ import { IntegralEventPool } from './integral-pool';
3
+ import { IntegralPricing } from './integral-pricing';
4
+ import { IntegralFactory } from './integral-factory';
5
+ import { IntegralRelayer } from './integral-relayer';
6
+ import { Network } from '../../constants';
7
+ import { IDexHelper } from '../../dex-helper';
8
+ import { Logger } from 'log4js';
9
+ import { Interface } from '@ethersproject/abi';
10
+ import {
11
+ IntegralPool,
12
+ PoolInitProps,
13
+ RelayerPoolState,
14
+ RelayerState,
15
+ Requires,
16
+ } from './types';
17
+ import { IntegralToken } from './integral-token';
18
+ import { getPoolBackReferencedFrom, getPoolIdentifier } from './utils';
19
+ import _ from 'lodash';
20
+
21
+ export class IntegralContext {
22
+ static instances: { [network: number]: IntegralContext } = {};
23
+
24
+ pools: { [poolId: string]: IntegralPool } = {};
25
+ tokens: { [tokenAddress: Address]: IntegralToken } = {};
26
+ factory: IntegralFactory;
27
+ relayer: IntegralRelayer;
28
+
29
+ logger: Logger;
30
+
31
+ private constructor(
32
+ readonly network: Network,
33
+ readonly dexKey: string,
34
+ readonly dexHelper: IDexHelper,
35
+ readonly erc20Interface: Interface,
36
+ readonly factoryAddress: Address,
37
+ readonly relayerAddress: Address,
38
+ ) {
39
+ this.logger = dexHelper.getLogger(dexKey);
40
+ this.factory = new IntegralFactory(
41
+ dexHelper,
42
+ dexKey,
43
+ this.factoryAddress,
44
+ this.onPoolCreatedAddPool,
45
+ this.logger,
46
+ );
47
+ this.relayer = new IntegralRelayer(
48
+ dexHelper,
49
+ dexKey,
50
+ this.erc20Interface,
51
+ this.relayerAddress,
52
+ {},
53
+ this.onRelayerPoolEnabledSet,
54
+ this.logger,
55
+ );
56
+ }
57
+
58
+ async addPools(
59
+ pools: PoolInitProps,
60
+ blockNumber: number,
61
+ initPhase: boolean = false,
62
+ ) {
63
+ this.relayer.addPools(pools);
64
+ if (initPhase) {
65
+ await this.relayer.initialize(blockNumber);
66
+ }
67
+ const _relayerState = this.relayer.getState(blockNumber);
68
+ const relayerState = _relayerState
69
+ ? _relayerState
70
+ : await this.relayer.generateState(blockNumber);
71
+ if (!_relayerState) {
72
+ this.relayer.setState(relayerState, blockNumber);
73
+ }
74
+ const poolInitProps = this.removeDisabledPoolInitProps(relayerState, pools);
75
+
76
+ const bases = Object.entries(poolInitProps).map(([poolAddress, p]) => {
77
+ const poolId = getPoolIdentifier(this.dexKey, p.token0, p.token1);
78
+ const base =
79
+ (this.pools[poolId] && this.pools[poolId].base) ||
80
+ new IntegralEventPool(
81
+ this.dexKey,
82
+ this.network,
83
+ this.dexHelper,
84
+ poolAddress,
85
+ p.token0,
86
+ p.token1,
87
+ this.logger,
88
+ );
89
+ this.pools[poolId] = { base, enabled: true };
90
+ return base;
91
+ });
92
+ await Promise.all(
93
+ bases.map(base => !base.isInitialized && base.initialize(blockNumber)),
94
+ );
95
+
96
+ const pricings = await Promise.all(
97
+ bases.map(async base => {
98
+ const _poolState = base.getState(blockNumber);
99
+ const poolState = _poolState
100
+ ? _poolState
101
+ : await base.generateState(blockNumber);
102
+ const poolId = getPoolIdentifier(this.dexKey, base.token0, base.token1);
103
+ const pricing =
104
+ (this.pools[poolId] && this.pools[poolId].pricing) ||
105
+ new IntegralPricing(
106
+ this.dexHelper,
107
+ poolId,
108
+ this.erc20Interface,
109
+ poolState.uniswapPool,
110
+ base.token0,
111
+ base.token1,
112
+ poolState.uniswapPoolFee,
113
+ this.logger,
114
+ this.network,
115
+ );
116
+ this.pools[poolId].pricing = pricing;
117
+ return pricing;
118
+ }),
119
+ );
120
+ await Promise.all(
121
+ pricings.map(
122
+ pricing => !pricing.isInitialized && pricing.initialize(blockNumber),
123
+ ),
124
+ );
125
+
126
+ const initIntegralToken = (token: Address) =>
127
+ new IntegralToken(
128
+ this.network,
129
+ this.dexHelper,
130
+ this.dexKey,
131
+ this.erc20Interface,
132
+ token,
133
+ this.relayerAddress,
134
+ this.onTransferUpdateBalance,
135
+ this.logger,
136
+ );
137
+ bases.map(base => {
138
+ this.tokens[base.token0] =
139
+ this.tokens[base.token0] || initIntegralToken(base.token0);
140
+ this.tokens[base.token1] =
141
+ this.tokens[base.token1] || initIntegralToken(base.token1);
142
+ });
143
+ await Promise.all(
144
+ Object.values(this.tokens).map(
145
+ token => !token.isInitialized && token.initialize(blockNumber),
146
+ ),
147
+ );
148
+ }
149
+
150
+ getPoolAddresses() {
151
+ return Object.values(this.pools)
152
+ .filter(
153
+ (pool): pool is Requires<IntegralPool, 'base'> =>
154
+ !!pool.base && pool.enabled,
155
+ )
156
+ .map(({ base }) => base.poolAddress);
157
+ }
158
+
159
+ private removeDisabledPoolInitProps(
160
+ state: RelayerState,
161
+ props: PoolInitProps,
162
+ ) {
163
+ Object.entries(state.pools).forEach(
164
+ ([poolAddress, poolState]) =>
165
+ !poolState.isEnabled && delete props[poolAddress],
166
+ );
167
+ return props;
168
+ }
169
+
170
+ public static initialize(
171
+ network: Network,
172
+ dexKey: string,
173
+ dexHelper: IDexHelper,
174
+ erc20Interface: Interface,
175
+ factoryAddress: Address,
176
+ relayerAddress: Address,
177
+ ) {
178
+ if (!this.instances[network]) {
179
+ this.instances[network] = new IntegralContext(
180
+ network,
181
+ dexKey,
182
+ dexHelper,
183
+ erc20Interface,
184
+ factoryAddress,
185
+ relayerAddress,
186
+ );
187
+ }
188
+ return this.instances[network];
189
+ }
190
+
191
+ public static getInstance(network: Network) {
192
+ if (!this.instances[network]) {
193
+ throw new Error('IntegralContext instance not initialized');
194
+ }
195
+ return this.instances[network];
196
+ }
197
+
198
+ async onRelayerPoolEnabledSet(
199
+ poolAddress: Address,
200
+ state: RelayerPoolState,
201
+ blockNumber: number,
202
+ ) {
203
+ const poolEntry = getPoolBackReferencedFrom(this, poolAddress);
204
+ if (state.isEnabled && (!poolEntry || !poolEntry[1].enabled)) {
205
+ const _factoryState = this.factory.getStaleState();
206
+ const factoryState = _factoryState
207
+ ? _factoryState
208
+ : await this.factory.generateState(blockNumber);
209
+ const { token0, token1 } = factoryState.pools[poolAddress];
210
+ await this.addPools({ [poolAddress]: { token0, token1 } }, blockNumber);
211
+ } else if (!state.isEnabled && poolEntry && poolEntry[1].enabled) {
212
+ this.pools[poolEntry[0]].enabled = false;
213
+ }
214
+ }
215
+
216
+ onRebalanceSellOrderExecuted(blockNumber: number, orderId: bigint) {
217
+ this.relayer.executeOrder(orderId, blockNumber);
218
+ }
219
+
220
+ async onPoolCreatedAddPool(
221
+ token0: Address,
222
+ token1: Address,
223
+ poolAddress: Address,
224
+ blockNumber: number,
225
+ ) {
226
+ await this.addPools({ [poolAddress]: { token0, token1 } }, blockNumber);
227
+ }
228
+
229
+ async onPoolSwapForRelayer(
230
+ blockNumber: number,
231
+ poolAddress: Address,
232
+ recipient: Address,
233
+ amount0Out: bigint,
234
+ amount1Out: bigint,
235
+ ) {
236
+ if (recipient.toLowerCase() === this.relayerAddress.toLowerCase()) {
237
+ const pools = this.relayer.getPools();
238
+ if (pools[poolAddress.toLowerCase()]) {
239
+ const token0 = pools[poolAddress.toLowerCase()].token0;
240
+ const token1 = pools[poolAddress.toLowerCase()].token1;
241
+
242
+ let _state = this.relayer.getStaleState();
243
+ if (!_state) {
244
+ _state = await this.relayer.generateState(blockNumber);
245
+ this.relayer.setState(_state, blockNumber);
246
+ return;
247
+ } else {
248
+ blockNumber = this.relayer.getStateBlockNumber();
249
+ }
250
+
251
+ const state: RelayerState = _.cloneDeep(_state);
252
+ if (amount1Out > 0n) {
253
+ state.tokens[token1].balance += amount1Out;
254
+ } else {
255
+ state.tokens[token0].balance += amount0Out;
256
+ }
257
+ this.relayer.setState(state, blockNumber);
258
+ } else {
259
+ this.logger.error(
260
+ 'Integral Relayer: Pool address not found for',
261
+ poolAddress,
262
+ );
263
+ }
264
+ }
265
+ }
266
+
267
+ async onTransferUpdateBalance(
268
+ token: Address,
269
+ from: Address,
270
+ to: Address,
271
+ amount: bigint,
272
+ blockNumber: number,
273
+ ) {
274
+ let _state = this.relayer.getStaleState();
275
+ if (!_state) {
276
+ this.logger.error('Integral Token: Relayer stale state not found');
277
+ return;
278
+ }
279
+ const state: RelayerState = _.cloneDeep(_state);
280
+ if (this.relayer.relayerAddress.toLowerCase() === from) {
281
+ state.tokens[token].balance -= amount;
282
+ } else if (this.relayer.relayerAddress.toLowerCase() === to) {
283
+ state.tokens[token].balance += amount;
284
+ }
285
+ this.relayer.setState(state, blockNumber);
286
+ }
287
+ }
@@ -0,0 +1,86 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+
4
+ import { testE2E } from '../../../tests/utils-e2e';
5
+ import { Tokens, Holders } from '../../../tests/constants-e2e';
6
+ import { Network, ContractMethod, SwapSide } from '../../constants';
7
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
8
+ import { generateConfig } from '../../config';
9
+
10
+ jest.setTimeout(1000 * 60 * 3);
11
+
12
+ const testCases = [
13
+ {
14
+ network: Network.MAINNET,
15
+ side: SwapSide.SELL,
16
+ method: ContractMethod.swapExactAmountIn,
17
+ tokenASymbol: 'USDC',
18
+ tokenBSymbol: 'USDT',
19
+ tokenAAmount: '5100000000',
20
+ tokenBAmount: '5100000000',
21
+ },
22
+ {
23
+ network: Network.MAINNET,
24
+ side: SwapSide.BUY,
25
+ method: ContractMethod.swapExactAmountOut,
26
+ tokenASymbol: 'USDC',
27
+ tokenBSymbol: 'USDT',
28
+ tokenAAmount: '5100000000',
29
+ tokenBAmount: '5100000000',
30
+ },
31
+ {
32
+ network: Network.ARBITRUM,
33
+ side: SwapSide.SELL,
34
+ method: ContractMethod.swapExactAmountIn,
35
+ tokenASymbol: 'WETH',
36
+ tokenBSymbol: 'USDT',
37
+ tokenAAmount: '1000000000000000000',
38
+ tokenBAmount: '5100000000',
39
+ },
40
+ {
41
+ network: Network.ARBITRUM,
42
+ side: SwapSide.BUY,
43
+ method: ContractMethod.swapExactAmountOut,
44
+ tokenASymbol: 'WETH',
45
+ tokenBSymbol: 'USDT',
46
+ tokenAAmount: '1000000000000000000',
47
+ tokenBAmount: '5100000000',
48
+ },
49
+ ];
50
+
51
+ describe('Integral E2E', () => {
52
+ const dexKey = 'Integral';
53
+
54
+ testCases.forEach(
55
+ ({
56
+ network,
57
+ side,
58
+ method,
59
+ tokenASymbol,
60
+ tokenBSymbol,
61
+ tokenAAmount,
62
+ tokenBAmount,
63
+ }) => {
64
+ it(`${network}: ${tokenASymbol} -> ${tokenBSymbol} (${side} ${method})`, async () => {
65
+ const provider = new StaticJsonRpcProvider(
66
+ generateConfig(network).privateHttpProvider,
67
+ network,
68
+ );
69
+ const tokens = Tokens[network];
70
+ const holders = Holders[network];
71
+
72
+ await testE2E(
73
+ tokens[tokenASymbol],
74
+ tokens[tokenBSymbol],
75
+ holders[tokenASymbol],
76
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
77
+ side,
78
+ dexKey,
79
+ method,
80
+ network,
81
+ provider,
82
+ );
83
+ });
84
+ },
85
+ );
86
+ });