@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
@@ -0,0 +1,148 @@
1
+ import { Network, SwapSide } from '../constants';
2
+ import { AdapterExchangeParam, Address, SimpleExchangeParam } from '../types';
3
+ import { IDexTxBuilder } from './idex';
4
+ import { IDexHelper } from '../dex-helper';
5
+ import {
6
+ getLocalDeadlineAsFriendlyPlaceholder,
7
+ SimpleExchange,
8
+ } from './simple-exchange';
9
+ import { NumberAsString } from '@paraswap/core';
10
+ import { AsyncOrSync } from 'ts-essentials';
11
+ import { Interface, JsonFragment } from '@ethersproject/abi';
12
+ import TraderJoeV2RouterABI from '../abi/TraderJoeV2Router.json';
13
+
14
+ const TRADERJOE_V2_ROUTER_ADDRESS: { [network: number]: Address } = {
15
+ [Network.AVALANCHE]: '0xE3Ffc583dC176575eEA7FD9dF2A7c65F7E23f4C3',
16
+ [Network.ARBITRUM]: '0x7BFd7192E76D950832c77BB412aaE841049D8D9B',
17
+ [Network.BSC]: '0xb66A2704a0dabC1660941628BE987B4418f7a9E8',
18
+ };
19
+
20
+ type TraderJoeV2RouterSellParams = [
21
+ _amountIn: NumberAsString,
22
+ _amountOutMin: NumberAsString,
23
+ _pairBinSteps: NumberAsString[],
24
+ _tokenPath: Address[],
25
+ to: Address,
26
+ _deadline: number,
27
+ ];
28
+
29
+ type TraderJoeV2RouterBuyParams = [
30
+ _amountOut: NumberAsString,
31
+ _amountInMax: NumberAsString,
32
+ _pairBinSteps: NumberAsString[],
33
+ _tokenPath: Address[],
34
+ to: Address,
35
+ _deadline: string,
36
+ ];
37
+
38
+ type TraderJoeV2RouterParam =
39
+ | TraderJoeV2RouterSellParams
40
+ | TraderJoeV2RouterBuyParams;
41
+
42
+ export type TraderJoeV2Data = {
43
+ tokenIn: string; // redundant
44
+ tokenOut: string; // redundant
45
+ binStep: string;
46
+ };
47
+
48
+ enum TraderJoeV2RouterFunctions {
49
+ swapExactTokensForTokens = 'swapExactTokensForTokens',
50
+ swapTokensForExactTokens = 'swapTokensForExactTokens',
51
+ }
52
+
53
+ export class TraderJoeV2
54
+ extends SimpleExchange
55
+ implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam>
56
+ {
57
+ static dexKeys = ['traderjoev2'];
58
+ protected routerAddress: string;
59
+ exchangeRouterInterface: Interface;
60
+ needWrapNative = true;
61
+
62
+ constructor(dexHelper: IDexHelper) {
63
+ super(dexHelper, 'traderjoev2');
64
+
65
+ this.routerAddress =
66
+ TRADERJOE_V2_ROUTER_ADDRESS[dexHelper.config.data.network];
67
+
68
+ this.exchangeRouterInterface = new Interface(
69
+ TraderJoeV2RouterABI as JsonFragment[],
70
+ );
71
+ }
72
+
73
+ getAdapterParam(
74
+ srcToken: Address,
75
+ destToken: Address,
76
+ srcAmount: NumberAsString,
77
+ destAmount: NumberAsString,
78
+ data: TraderJoeV2Data,
79
+ side: SwapSide,
80
+ ): AdapterExchangeParam {
81
+ const payload = this.abiCoder.encodeParameter(
82
+ {
83
+ ParentStruct: {
84
+ _pairBinSteps: 'uint256[]',
85
+ _tokenPath: 'address[]',
86
+ _deadline: 'uint256',
87
+ },
88
+ },
89
+ {
90
+ _pairBinSteps: [data.binStep],
91
+ _tokenPath: [data.tokenIn, data.tokenOut], // FIXME: redundant, shoot & read from contract
92
+ _deadline: getLocalDeadlineAsFriendlyPlaceholder(), // FIXME: more gas efficient to pass block.timestamp in adapter
93
+ },
94
+ );
95
+
96
+ return {
97
+ targetExchange: this.routerAddress,
98
+ payload,
99
+ networkFee: '0',
100
+ };
101
+ }
102
+
103
+ getSimpleParam(
104
+ srcToken: Address,
105
+ destToken: Address,
106
+ srcAmount: NumberAsString,
107
+ destAmount: NumberAsString,
108
+ data: TraderJoeV2Data,
109
+ side: SwapSide,
110
+ ): AsyncOrSync<SimpleExchangeParam> {
111
+ const swapFunction =
112
+ side === SwapSide.SELL
113
+ ? TraderJoeV2RouterFunctions.swapExactTokensForTokens
114
+ : TraderJoeV2RouterFunctions.swapTokensForExactTokens;
115
+
116
+ const swapFunctionParams: TraderJoeV2RouterParam =
117
+ side === SwapSide.SELL
118
+ ? [
119
+ srcAmount,
120
+ destAmount,
121
+ [data.binStep],
122
+ [srcToken, destToken],
123
+ this.augustusAddress,
124
+ getLocalDeadlineAsFriendlyPlaceholder(),
125
+ ]
126
+ : [
127
+ destAmount,
128
+ srcAmount,
129
+ [data.binStep],
130
+ [srcToken, destToken],
131
+ this.augustusAddress,
132
+ getLocalDeadlineAsFriendlyPlaceholder(),
133
+ ];
134
+ const swapData = this.exchangeRouterInterface.encodeFunctionData(
135
+ swapFunction,
136
+ swapFunctionParams,
137
+ );
138
+
139
+ return this.buildSimpleParamWithoutWETHConversion(
140
+ srcToken,
141
+ srcAmount,
142
+ destToken,
143
+ destAmount,
144
+ swapData,
145
+ this.routerAddress,
146
+ );
147
+ }
148
+ }
@@ -23,7 +23,7 @@ export class Oracle {
23
23
  ): OracleObservation {
24
24
  const delta = blockTimestamp - last.blockTimestamp;
25
25
  return {
26
- blockTimestamp: state.blockTimestamp,
26
+ blockTimestamp,
27
27
  tickCumulative: last.tickCumulative + BigInt.asIntN(56, tick) * delta,
28
28
  secondsPerLiquidityCumulativeX128:
29
29
  last.secondsPerLiquidityCumulativeX128 +
@@ -93,12 +93,12 @@ export class Oracle {
93
93
  let beforeOrAt;
94
94
  let atOrAfter;
95
95
  while (true) {
96
- i = (l + r) / 2;
96
+ i = Math.floor((l + r) / 2);
97
97
 
98
98
  beforeOrAt = state.observations[i % cardinality];
99
99
 
100
100
  // we've landed on an uninitialized tick, keep searching higher (more recently)
101
- if (!beforeOrAt.initialized) {
101
+ if (!beforeOrAt || !beforeOrAt.initialized) {
102
102
  l = i + 1;
103
103
  continue;
104
104
  }
@@ -150,7 +150,8 @@ export class Oracle {
150
150
  }
151
151
 
152
152
  beforeOrAt = state.observations[(index + 1) % cardinality];
153
- if (!beforeOrAt.initialized) beforeOrAt = state.observations[0];
153
+ if (!beforeOrAt || !beforeOrAt.initialized)
154
+ beforeOrAt = state.observations[0];
154
155
 
155
156
  _require(
156
157
  Oracle.lte(time, beforeOrAt.blockTimestamp, target),
@@ -0,0 +1,31 @@
1
+ import { Network } from '../../constants';
2
+
3
+ export const ZRX_EXCHANGE: Record<number, Record<number, string>> = {
4
+ [Network.MAINNET]: {
5
+ 2: '0x080bf510fcbf18b91105470639e9561022937712',
6
+ 3: '0x61935CbDd02287B511119DDb11Aeb42F1593b7Ef',
7
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
8
+ },
9
+ [Network.BSC]: {
10
+ 2: '0x3F93C3D9304a70c9104642AB8cD37b1E2a7c203A',
11
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
12
+ },
13
+ [Network.POLYGON]: {
14
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
15
+ },
16
+ };
17
+
18
+ export const ZRX_EXCHANGE_ERC20PROXY: Record<number, Record<number, string>> = {
19
+ [Network.MAINNET]: {
20
+ 1: '0x95E6F48254609A6ee006F7D493c8e5fB97094ceF',
21
+ 2: '0x95E6F48254609A6ee006F7D493c8e5fB97094ceF',
22
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
23
+ },
24
+ [Network.BSC]: {
25
+ 2: '0xCF21d4b7a265FF779accBA55Ace0F56C8cE6e379',
26
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
27
+ },
28
+ [Network.POLYGON]: {
29
+ 4: '0xdef1c0ded9bec7f1a1670819833240f027b25eff',
30
+ },
31
+ };
@@ -0,0 +1,328 @@
1
+ import { AbiEncoder } from '@0x/utils';
2
+ import { Interface } from '@ethersproject/abi';
3
+
4
+ import IParaswapAbi from '../../abi/IParaswap.json';
5
+ import ZRX_V2_ABI from '../../abi/zrx.v2.json';
6
+ import ZRX_V3_ABI from '../../abi/zrx.v3.json';
7
+ import ZRX_V4_ABI from '../../abi/zrx.v4.json';
8
+
9
+ import { SwapSide } from '../../constants';
10
+ import { SimpleExchange } from '../simple-exchange';
11
+ import { ZeroXOrder } from './order';
12
+
13
+ import type { IDexTxBuilder } from '../idex';
14
+ import type {
15
+ AdapterExchangeParam,
16
+ Address,
17
+ DexExchangeParam,
18
+ NumberAsString,
19
+ SimpleExchangeParam,
20
+ TxInfo,
21
+ } from '../../types';
22
+ import {
23
+ ZeroXFunctions,
24
+ type ZeroXData,
25
+ type ZeroXParam,
26
+ type ZeroXSignedOrderV2,
27
+ type ZeroXSignedOrderV4,
28
+ } from './types';
29
+ import { IDexHelper } from '../../dex-helper';
30
+ import { ZRX_EXCHANGE, ZRX_EXCHANGE_ERC20PROXY } from './config';
31
+
32
+ const ZRX_ABI: any = {
33
+ 2: ZRX_V2_ABI,
34
+ 3: ZRX_V3_ABI,
35
+ 4: ZRX_V4_ABI,
36
+ };
37
+
38
+ export class ZeroX
39
+ extends SimpleExchange
40
+ implements IDexTxBuilder<ZeroXData, ZeroXParam>
41
+ {
42
+ static dexKeys = ['zerox'];
43
+ routerInterface: Interface;
44
+ needWrapNative = true;
45
+
46
+ constructor(dexHelper: IDexHelper) {
47
+ super(dexHelper, 'zerox');
48
+ this.routerInterface = new Interface(IParaswapAbi);
49
+ }
50
+
51
+ private getExchange(data: ZeroXData) {
52
+ return ZRX_EXCHANGE[this.network][data.version];
53
+ }
54
+
55
+ protected buildSimpleSwapData(data: ZeroXData, srcAmount: NumberAsString) {
56
+ const zrxABI = ZRX_ABI[data.version];
57
+ const signature = data.order.signature;
58
+ const order = ZeroXOrder.formatOrders(data.order, data.version);
59
+
60
+ const methodAbi = zrxABI.find(
61
+ (m: any) =>
62
+ m.name ===
63
+ (data.version === 4 ? 'fillRfqOrder' : 'marketSellOrdersNoThrow'),
64
+ );
65
+
66
+ const abiEncoder = new AbiEncoder.Method(methodAbi);
67
+ // TODO: fillLimitOrder only accepts one order, find something that can accept multiple orders
68
+ return abiEncoder.encode(
69
+ data.version === 4
70
+ ? [order, signature, srcAmount]
71
+ : [[order], srcAmount, [signature]],
72
+ );
73
+ }
74
+
75
+ protected buildPayload(data: ZeroXData) {
76
+ const payload =
77
+ data.version === 4
78
+ ? this.abiCoder.encodeParameter(
79
+ {
80
+ ParentStruct: {
81
+ order: {
82
+ makerToken: 'address',
83
+ takerToken: 'address',
84
+ makerAmount: 'uint128',
85
+ takerAmount: 'uint128',
86
+ maker: 'address',
87
+ taker: 'address',
88
+ txOrigin: 'address',
89
+ pool: 'bytes32',
90
+ expiry: 'uint64',
91
+ salt: 'uint256',
92
+ },
93
+ signature: {
94
+ signatureType: 'uint8',
95
+ v: 'uint8',
96
+ r: 'bytes32',
97
+ s: 'bytes32',
98
+ },
99
+ },
100
+ },
101
+ {
102
+ order: ZeroXOrder.formatOrders(data.order, 4),
103
+ signature: data.order.signature,
104
+ },
105
+ )
106
+ : this.abiCoder.encodeParameter(
107
+ {
108
+ ParentStruct: {
109
+ 'orders[]': {
110
+ makerAddress: 'address', // Address that created the order.
111
+ takerAddress: 'address', // Address that is allowed to fill the order. If set to 0, any address is allowed to fill the order.
112
+ feeRecipientAddress: 'address', // Address that will receive fees when order is filled.
113
+ senderAddress: 'address', // Address that is allowed to call Exchange contract methods that affect this order. If set to 0, any address is allowed to call these methods.
114
+ makerAssetAmount: 'uint256', // Amount of makerAsset being offered by maker. Must be greater than 0.
115
+ takerAssetAmount: 'uint256', // Amount of takerAsset being bid on by maker. Must be greater than 0.
116
+ makerFee: 'uint256', // Fee paid to feeRecipient by maker when order is filled.
117
+ takerFee: 'uint256', // Fee paid to feeRecipient by taker when order is filled.
118
+ expirationTimeSeconds: 'uint256', // Timestamp in seconds at which order expires.
119
+ salt: 'uint256', // Arbitrary number to facilitate uniqueness of the order's hash.
120
+ makerAssetData: 'bytes', // Encoded data that can be decoded by a specified proxy contract when transferring makerAsset. The leading bytes4 references the id of the asset proxy.
121
+ takerAssetData: 'bytes',
122
+ },
123
+ signatures: 'bytes[]',
124
+ },
125
+ },
126
+ {
127
+ orders: [ZeroXOrder.formatOrders(data.order, 2)],
128
+ signatures: [data.order.signature],
129
+ },
130
+ );
131
+ return payload;
132
+ }
133
+
134
+ getAdapterParam(
135
+ srcToken: Address,
136
+ destToken: Address,
137
+ srcAmount: NumberAsString,
138
+ toAmount: NumberAsString, // required for buy case
139
+ data: ZeroXData,
140
+ side: SwapSide,
141
+ ): AdapterExchangeParam {
142
+ return {
143
+ targetExchange: this.getExchange(data),
144
+ payload: this.buildPayload(data),
145
+ networkFee: '0',
146
+ };
147
+ }
148
+
149
+ async getSimpleParam(
150
+ src: Address,
151
+ dest: Address,
152
+ srcAmount: NumberAsString,
153
+ destAmount: NumberAsString,
154
+ data: ZeroXData,
155
+ side: SwapSide,
156
+ ): Promise<SimpleExchangeParam> {
157
+ if (side === SwapSide.BUY) {
158
+ // Adjust the srcAmount according to the exact order price (rounding up)
159
+ if (data.version === 4) {
160
+ const order = data.order as ZeroXSignedOrderV4;
161
+ if (BigInt(destAmount) > BigInt(order.makerAmount)) {
162
+ throw new Error(
163
+ `ZeroX destAmount ${destAmount} > makerAmount ${order.makerAmount}`,
164
+ );
165
+ }
166
+ const calc =
167
+ (BigInt(destAmount) * BigInt(order.takerAmount) +
168
+ BigInt(order.makerAmount) -
169
+ 1n) /
170
+ BigInt(order.makerAmount);
171
+ if (calc > BigInt(srcAmount)) {
172
+ throw new Error(`ZeroX calc ${calc} > srcAmount ${srcAmount}`);
173
+ }
174
+ srcAmount = calc.toString();
175
+ } else {
176
+ const order = data.order as ZeroXSignedOrderV2;
177
+ if (BigInt(destAmount) > BigInt(order.makerAssetAmount)) {
178
+ throw new Error(
179
+ `ZeroX destAmount ${destAmount} > makerAmount ${order.makerAssetAmount}`,
180
+ );
181
+ }
182
+ const calc =
183
+ (BigInt(destAmount) * BigInt(order.takerAssetAmount) +
184
+ BigInt(order.makerAssetAmount) -
185
+ 1n) /
186
+ BigInt(order.makerAssetAmount);
187
+ if (calc > BigInt(srcAmount)) {
188
+ throw new Error(`ZeroX calc ${calc} > srcAmount ${srcAmount}`);
189
+ }
190
+ srcAmount = calc.toString();
191
+ }
192
+ }
193
+ const swapData = this.buildSimpleSwapData(data, srcAmount);
194
+ const networkFees = '0';
195
+
196
+ return this.buildSimpleParamWithoutWETHConversion(
197
+ src,
198
+ srcAmount,
199
+ dest,
200
+ destAmount,
201
+ swapData,
202
+ this.getExchange(data),
203
+ ZRX_EXCHANGE_ERC20PROXY[this.network][data.version],
204
+ networkFees,
205
+ );
206
+ }
207
+
208
+ getDexParam(
209
+ _srcToken: Address,
210
+ _destToken: Address,
211
+ srcAmount: NumberAsString,
212
+ destAmount: NumberAsString,
213
+ _recipient: Address,
214
+ data: ZeroXData,
215
+ side: SwapSide,
216
+ ): DexExchangeParam {
217
+ if (side === SwapSide.BUY) {
218
+ // Adjust the srcAmount according to the exact order price (rounding up)
219
+ if (data.version === 4) {
220
+ const order = data.order as ZeroXSignedOrderV4;
221
+ if (BigInt(destAmount) > BigInt(order.makerAmount)) {
222
+ throw new Error(
223
+ `ZeroX destAmount ${destAmount} > makerAmount ${order.makerAmount}`,
224
+ );
225
+ }
226
+ const calc =
227
+ (BigInt(destAmount) * BigInt(order.takerAmount) +
228
+ BigInt(order.makerAmount) -
229
+ 1n) /
230
+ BigInt(order.makerAmount);
231
+ if (calc > BigInt(srcAmount)) {
232
+ throw new Error(`ZeroX calc ${calc} > srcAmount ${srcAmount}`);
233
+ }
234
+ srcAmount = calc.toString();
235
+ } else {
236
+ const order = data.order as ZeroXSignedOrderV2;
237
+ if (BigInt(destAmount) > BigInt(order.makerAssetAmount)) {
238
+ throw new Error(
239
+ `ZeroX destAmount ${destAmount} > makerAmount ${order.makerAssetAmount}`,
240
+ );
241
+ }
242
+ const calc =
243
+ (BigInt(destAmount) * BigInt(order.takerAssetAmount) +
244
+ BigInt(order.makerAssetAmount) -
245
+ 1n) /
246
+ BigInt(order.makerAssetAmount);
247
+ if (calc > BigInt(srcAmount)) {
248
+ throw new Error(`ZeroX calc ${calc} > srcAmount ${srcAmount}`);
249
+ }
250
+ srcAmount = calc.toString();
251
+ }
252
+ }
253
+ const swapData = this.buildSimpleSwapData(data, srcAmount);
254
+
255
+ return {
256
+ needWrapNative: this.needWrapNative,
257
+ dexFuncHasRecipient: false,
258
+ exchangeData: swapData,
259
+ targetExchange: this.getExchange(data),
260
+ returnAmountPos: undefined,
261
+ };
262
+ }
263
+
264
+ getDirectParam(
265
+ srcToken: Address,
266
+ destToken: Address,
267
+ srcAmount: NumberAsString,
268
+ destAmount: NumberAsString,
269
+ expectedAmount: NumberAsString,
270
+ data: ZeroXData,
271
+ side: SwapSide,
272
+ permit: string,
273
+ uuid: string,
274
+ feePercent: NumberAsString,
275
+ deadline: NumberAsString,
276
+ partner: string,
277
+ beneficiary: string,
278
+ contractMethod: string,
279
+ ): TxInfo<ZeroXParam> {
280
+ const usePermit = permit !== '0x';
281
+ const encoder = (...params: ZeroXParam) => {
282
+ switch (data.version) {
283
+ case 2:
284
+ return this.routerInterface.encodeFunctionData(
285
+ usePermit
286
+ ? ZeroXFunctions.swapOnZeroXv2WithPermit
287
+ : ZeroXFunctions.swapOnZeroXv2,
288
+ params,
289
+ );
290
+ case 4:
291
+ return this.routerInterface.encodeFunctionData(
292
+ usePermit
293
+ ? ZeroXFunctions.swapOnZeroXv4WithPermit
294
+ : ZeroXFunctions.swapOnZeroXv4,
295
+ params,
296
+ );
297
+ default:
298
+ throw new Error(`ZeroX version ${data.version} is not supported!`);
299
+ }
300
+ };
301
+ return {
302
+ params: usePermit
303
+ ? [
304
+ srcToken,
305
+ destToken,
306
+ srcAmount,
307
+ destAmount,
308
+ this.getExchange(data),
309
+ this.buildPayload(data),
310
+ permit,
311
+ ]
312
+ : [
313
+ srcToken,
314
+ destToken,
315
+ srcAmount,
316
+ destAmount,
317
+ this.getExchange(data),
318
+ this.buildPayload(data),
319
+ ],
320
+ encoder,
321
+ networkFee: '0',
322
+ };
323
+ }
324
+
325
+ static getDirectFunctionName(): string[] {
326
+ return [ZeroXFunctions.swapOnZeroXv2, ZeroXFunctions.swapOnZeroXv4];
327
+ }
328
+ }
@@ -0,0 +1,62 @@
1
+ import {
2
+ ZeroXSignedOrder,
3
+ ZeroXSignedOrderV2,
4
+ ZeroXSignedOrderV4,
5
+ } from './types';
6
+
7
+ export class ZeroXOrder {
8
+ static formatOrderV4(order: ZeroXSignedOrderV4, version: number) {
9
+ return {
10
+ makerToken: order.makerToken,
11
+ takerToken: order.takerToken,
12
+ makerAmount: order.makerAmount,
13
+ takerAmount: order.takerAmount,
14
+ maker: order.maker,
15
+ taker: order.taker,
16
+ txOrigin: order.txOrigin,
17
+ pool: order.pool,
18
+ expiry: order.expiry,
19
+ salt: order.salt,
20
+ };
21
+ }
22
+
23
+ static formatOrderV23(order: ZeroXSignedOrderV2, version: number) {
24
+ const feeAssetData =
25
+ version === 3
26
+ ? {
27
+ makerFeeAssetData: order.makerFeeAssetData,
28
+ takerFeeAssetData: order.takerFeeAssetData,
29
+ }
30
+ : {};
31
+
32
+ return {
33
+ makerAddress: order.makerAddress,
34
+ takerAddress: order.takerAddress,
35
+ feeRecipientAddress: order.feeRecipientAddress,
36
+ senderAddress: order.senderAddress,
37
+ makerAssetAmount: order.makerAssetAmount,
38
+ takerAssetAmount: order.takerAssetAmount,
39
+ makerFee: order.makerFee,
40
+ takerFee: order.takerFee,
41
+ expirationTimeSeconds: order.expirationTimeSeconds,
42
+ salt: order.salt,
43
+ makerAssetData: order.makerAssetData,
44
+ takerAssetData: order.takerAssetData,
45
+ ...feeAssetData,
46
+ };
47
+ }
48
+
49
+ static formatOrders(order: ZeroXSignedOrder, version: number = 2) {
50
+ if (isV4Order(order, version)) {
51
+ return ZeroXOrder.formatOrderV4(order, version);
52
+ }
53
+ return ZeroXOrder.formatOrderV23(order, version);
54
+ }
55
+ }
56
+
57
+ function isV4Order(
58
+ order: ZeroXSignedOrder,
59
+ version: number = 2,
60
+ ): order is ZeroXSignedOrderV4 {
61
+ return version === 4;
62
+ }
@@ -0,0 +1,82 @@
1
+ import { Address } from '@paraswap/sdk';
2
+ import { NumberAsString } from '../../types';
3
+
4
+ export enum OrderStatus {
5
+ INVALID, // Default value
6
+ INVALID_MAKER_ASSET_AMOUNT, // Order does not have a valid maker asset amount
7
+ INVALID_TAKER_ASSET_AMOUNT, // Order does not have a valid taker asset amount
8
+ FILLABLE, // Order is fillable
9
+ EXPIRED, // Order has already expired
10
+ FULLY_FILLED, // Order is fully filled
11
+ CANCELLED, // Order has been cancelled
12
+ }
13
+
14
+ type Value = NumberAsString | number;
15
+
16
+ export interface ZeroXSignedOrderV2 {
17
+ senderAddress: string;
18
+ makerAddress: string;
19
+ takerAddress: string;
20
+ makerFee: Value;
21
+ takerFee: Value;
22
+ makerAssetAmount: Value;
23
+ takerAssetAmount: Value;
24
+ makerAssetData: string;
25
+ takerAssetData: string;
26
+ salt: Value;
27
+ exchangeAddress: string;
28
+ feeRecipientAddress: string;
29
+ expirationTimeSeconds: Value;
30
+ makerFeeAssetData: string;
31
+ takerFeeAssetData: string;
32
+ signature: string;
33
+ }
34
+
35
+ export interface ZeroXSignedOrderV4 {
36
+ makerToken: string;
37
+ takerToken: string;
38
+ makerAmount: Value;
39
+ takerAmount: Value;
40
+ maker: string;
41
+ taker: string;
42
+ txOrigin: string;
43
+ pool: string;
44
+ expiry: Value;
45
+ salt: Value;
46
+ signature: any; // TODO: fix type
47
+ }
48
+
49
+ export type ZeroXSignedOrder = ZeroXSignedOrderV2 | ZeroXSignedOrderV4;
50
+
51
+ export enum ZeroXFunctions {
52
+ swapOnZeroXv2 = 'swapOnZeroXv2',
53
+ swapOnZeroXv4 = 'swapOnZeroXv4',
54
+ swapOnZeroXv2WithPermit = 'swapOnZeroXv2WithPermit',
55
+ swapOnZeroXv4WithPermit = 'swapOnZeroXv4WithPermit',
56
+ }
57
+
58
+ export type ZeroXData = {
59
+ version: number;
60
+ order: ZeroXSignedOrder;
61
+ };
62
+
63
+ export type SwapOnZeroXParam = [
64
+ srcToken: Address,
65
+ destToken: Address,
66
+ srcAmount: NumberAsString,
67
+ destAmount: NumberAsString,
68
+ exchange: Address,
69
+ payload: string,
70
+ ];
71
+
72
+ export type SwapOnZeroXWithPermitParam = [
73
+ srcToken: Address,
74
+ destToken: Address,
75
+ srcAmount: NumberAsString,
76
+ destAmount: NumberAsString,
77
+ exchange: Address,
78
+ payload: string,
79
+ permit: string,
80
+ ];
81
+
82
+ export type ZeroXParam = SwapOnZeroXParam | SwapOnZeroXWithPermitParam;