@paraswap/dex-lib 4.0.1-cables.0 → 4.0.2

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 (919) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/{integral/pool.json → inception/inception-ineth-pool.json} +558 -537
  5. package/build/abi/inception/inception-ratio-feed.json +329 -0
  6. package/build/abi/inception/inception-vault.json +991 -0
  7. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  8. package/build/abi/usual-m-smart-m/usualM.abi.json +483 -0
  9. package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +681 -0
  10. package/build/abi/{integral/relayer.json → wombat/pool.json} +474 -721
  11. package/build/bigint-constants.d.ts +1 -0
  12. package/build/bigint-constants.js +2 -1
  13. package/build/bigint-constants.js.map +1 -1
  14. package/build/bignumber-constants.js +2 -2
  15. package/build/bignumber-constants.js.map +1 -1
  16. package/build/calldata-gas-cost.js +2 -2
  17. package/build/calldata-gas-cost.js.map +1 -1
  18. package/build/composed-event-subscriber.js.map +1 -1
  19. package/build/config.js +33 -5
  20. package/build/config.js.map +1 -1
  21. package/build/constants.d.ts +2 -0
  22. package/build/constants.js +6 -3
  23. package/build/constants.js.map +1 -1
  24. package/build/dex/aave-gsm/aave-gsm-pool.js.map +1 -1
  25. package/build/dex/aave-gsm/aave-gsm.js +17 -7
  26. package/build/dex/aave-gsm/aave-gsm.js.map +1 -1
  27. package/build/dex/aave-gsm/types.d.ts +3 -3
  28. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  29. package/build/dex/aave-v1/aave-v1.js +23 -0
  30. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  31. package/build/dex/aave-v2/aave-v2.js +17 -7
  32. package/build/dex/aave-v2/aave-v2.js.map +1 -1
  33. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  34. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  35. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  36. package/build/dex/aave-v2/tokens.js +3 -3
  37. package/build/dex/aave-v2/tokens.js.map +1 -1
  38. package/build/dex/aave-v2/types.d.ts +8 -8
  39. package/build/dex/aave-v2/types.js +1 -1
  40. package/build/dex/aave-v2/types.js.map +1 -1
  41. package/build/dex/aave-v3/aave-v3.js +17 -7
  42. package/build/dex/aave-v3/aave-v3.js.map +1 -1
  43. package/build/dex/aave-v3/tokens.js +4 -4
  44. package/build/dex/aave-v3/tokens.js.map +1 -1
  45. package/build/dex/aave-v3/types.d.ts +8 -8
  46. package/build/dex/aave-v3/types.js +1 -1
  47. package/build/dex/aave-v3/types.js.map +1 -1
  48. package/build/dex/aave-v3/utils.js.map +1 -1
  49. package/build/dex/aave-v3-stata/aave-v3-stata.js +23 -13
  50. package/build/dex/aave-v3-stata/aave-v3-stata.js.map +1 -1
  51. package/build/dex/aave-v3-stata/tokens.js +4 -4
  52. package/build/dex/aave-v3-stata/tokens.js.map +1 -1
  53. package/build/dex/aave-v3-stata/types.d.ts +7 -7
  54. package/build/dex/aave-v3-stata/types.js +3 -3
  55. package/build/dex/aave-v3-stata/types.js.map +1 -1
  56. package/build/dex/aave-v3-stata/utils.d.ts +1 -1
  57. package/build/dex/aave-v3-stata/utils.js.map +1 -1
  58. package/build/dex/algebra/algebra-factory.d.ts +1 -1
  59. package/build/dex/algebra/algebra-factory.js.map +1 -1
  60. package/build/dex/algebra/algebra-pool-v1_1.js.map +1 -1
  61. package/build/dex/algebra/algebra-pool-v1_9.js.map +1 -1
  62. package/build/dex/algebra/algebra.d.ts +1 -2
  63. package/build/dex/algebra/algebra.js +18 -8
  64. package/build/dex/algebra/algebra.js.map +1 -1
  65. package/build/dex/algebra/lib/AlgebraMath.js +2 -2
  66. package/build/dex/algebra/lib/AlgebraMath.js.map +1 -1
  67. package/build/dex/algebra/lib/TickManager.js.map +1 -1
  68. package/build/dex/algebra/lib/TickTable.js.map +1 -1
  69. package/build/dex/algebra/scripts/validate-state.js.map +1 -1
  70. package/build/dex/algebra/types.d.ts +17 -17
  71. package/build/dex/algebra/types.js +1 -1
  72. package/build/dex/algebra/types.js.map +1 -1
  73. package/build/dex/algebra/utils.js +4 -5
  74. package/build/dex/algebra/utils.js.map +1 -1
  75. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +1 -1
  76. package/build/dex/angle-staked-stable/angle-staked-stable.js +17 -7
  77. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -1
  78. package/build/dex/angle-staked-stable/types.d.ts +3 -3
  79. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +0 -1
  80. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -1
  81. package/build/dex/angle-transmuter/angle-transmuter.js +17 -7
  82. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -1
  83. package/build/dex/angle-transmuter/morphoOracle.js.map +1 -1
  84. package/build/dex/angle-transmuter/morphoVault.js.map +1 -1
  85. package/build/dex/angle-transmuter/transmuter.js.map +1 -1
  86. package/build/dex/angle-transmuter/types.d.ts +24 -24
  87. package/build/dex/angle-transmuter/types.js +3 -3
  88. package/build/dex/angle-transmuter/types.js.map +1 -1
  89. package/build/dex/angle-transmuter/utils.js +6 -7
  90. package/build/dex/angle-transmuter/utils.js.map +1 -1
  91. package/build/dex/augustus-approvals.d.ts +3 -2
  92. package/build/dex/augustus-approvals.js +35 -16
  93. package/build/dex/augustus-approvals.js.map +1 -1
  94. package/build/dex/augustus-rfq.d.ts +6 -6
  95. package/build/dex/augustus-rfq.js.map +1 -1
  96. package/build/dex/balancer-v1/balancer-v1-math.js +2 -3
  97. package/build/dex/balancer-v1/balancer-v1-math.js.map +1 -1
  98. package/build/dex/balancer-v1/balancer-v1-pool.js.map +1 -1
  99. package/build/dex/balancer-v1/balancer-v1.js +17 -7
  100. package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
  101. package/build/dex/balancer-v1/optimizer.js +1 -2
  102. package/build/dex/balancer-v1/optimizer.js.map +1 -1
  103. package/build/dex/balancer-v1/types.d.ts +16 -16
  104. package/build/dex/balancer-v1/types.js +1 -1
  105. package/build/dex/balancer-v1/types.js.map +1 -1
  106. package/build/dex/balancer-v1/utils.js +1 -2
  107. package/build/dex/balancer-v1/utils.js.map +1 -1
  108. package/build/dex/balancer-v2/balancer-v2-math.js.map +1 -1
  109. package/build/dex/balancer-v2/balancer-v2.d.ts +0 -1
  110. package/build/dex/balancer-v2/balancer-v2.js +17 -7
  111. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  112. package/build/dex/balancer-v2/constants.js +2 -2
  113. package/build/dex/balancer-v2/constants.js.map +1 -1
  114. package/build/dex/balancer-v2/optimizer.js +1 -2
  115. package/build/dex/balancer-v2/optimizer.js.map +1 -1
  116. package/build/dex/balancer-v2/pools/balancer-v2-pool.js.map +1 -1
  117. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +1 -1
  118. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -1
  119. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +1 -1
  120. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -1
  121. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js +2 -3
  122. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js.map +1 -1
  123. package/build/dex/balancer-v2/pools/linear/LinearMath.d.ts +1 -1
  124. package/build/dex/balancer-v2/pools/linear/LinearMath.js +13 -14
  125. package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -1
  126. package/build/dex/balancer-v2/pools/linear/LinearPool.d.ts +1 -1
  127. package/build/dex/balancer-v2/pools/linear/LinearPool.js +18 -8
  128. package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -1
  129. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js +10 -11
  130. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -1
  131. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.d.ts +1 -1
  132. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js +17 -7
  133. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -1
  134. package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -1
  135. package/build/dex/balancer-v2/pools/stable/StablePool.d.ts +1 -1
  136. package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -1
  137. package/build/dex/balancer-v2/pools/weighted/WeightedPool.d.ts +1 -1
  138. package/build/dex/balancer-v2/queryOnChain.js +1 -2
  139. package/build/dex/balancer-v2/queryOnChain.js.map +1 -1
  140. package/build/dex/balancer-v2/types.d.ts +17 -17
  141. package/build/dex/balancer-v2/types.js +2 -2
  142. package/build/dex/balancer-v2/types.js.map +1 -1
  143. package/build/dex/balancer-v2/utils.js +7 -7
  144. package/build/dex/balancer-v2/utils.js.map +1 -1
  145. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
  146. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
  147. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
  148. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
  149. package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
  150. package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
  151. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
  152. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
  153. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
  154. package/build/dex/balancer-v3/balancer-v3-pool.d.ts +1 -1
  155. package/build/dex/balancer-v3/balancer-v3-pool.js +12 -4
  156. package/build/dex/balancer-v3/balancer-v3-pool.js.map +1 -1
  157. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
  158. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
  159. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
  160. package/build/dex/balancer-v3/balancer-v3.d.ts +5 -3
  161. package/build/dex/balancer-v3/balancer-v3.js +109 -27
  162. package/build/dex/balancer-v3/balancer-v3.js.map +1 -1
  163. package/build/dex/balancer-v3/config.js +6 -2
  164. package/build/dex/balancer-v3/config.js.map +1 -1
  165. package/build/dex/balancer-v3/getGasCost.js +1 -2
  166. package/build/dex/balancer-v3/getGasCost.js.map +1 -1
  167. package/build/dex/balancer-v3/getOnChainState.js +2 -3
  168. package/build/dex/balancer-v3/getOnChainState.js.map +1 -1
  169. package/build/dex/balancer-v3/getPoolsApi.js +1 -2
  170. package/build/dex/balancer-v3/getPoolsApi.js.map +1 -1
  171. package/build/dex/balancer-v3/getTopPoolsApi.js +5 -2
  172. package/build/dex/balancer-v3/getTopPoolsApi.js.map +1 -1
  173. package/build/dex/balancer-v3/optimizer.js +1 -2
  174. package/build/dex/balancer-v3/optimizer.js.map +1 -1
  175. package/build/dex/balancer-v3/stablePool.d.ts +1 -1
  176. package/build/dex/balancer-v3/stablePool.js +5 -5
  177. package/build/dex/balancer-v3/stablePool.js.map +1 -1
  178. package/build/dex/balancer-v3/types.d.ts +10 -10
  179. package/build/dex/bancor/types.d.ts +2 -2
  180. package/build/dex/bancor/types.js +1 -1
  181. package/build/dex/bancor/types.js.map +1 -1
  182. package/build/dex/bebop/bebop.js +18 -8
  183. package/build/dex/bebop/bebop.js.map +1 -1
  184. package/build/dex/bebop/config.js +5 -5
  185. package/build/dex/bebop/config.js.map +1 -1
  186. package/build/dex/bebop/rate-fetcher.js +2 -2
  187. package/build/dex/bebop/rate-fetcher.js.map +1 -1
  188. package/build/dex/bebop/types.d.ts +13 -13
  189. package/build/dex/cables/cables.d.ts +0 -1
  190. package/build/dex/cables/cables.js +80 -48
  191. package/build/dex/cables/cables.js.map +1 -1
  192. package/build/dex/cables/constants.js +1 -1
  193. package/build/dex/cables/constants.js.map +1 -1
  194. package/build/dex/cables/rate-fetcher.d.ts +0 -1
  195. package/build/dex/cables/rate-fetcher.js +10 -30
  196. package/build/dex/cables/rate-fetcher.js.map +1 -1
  197. package/build/dex/cables/types.d.ts +0 -1
  198. package/build/dex/cables/types.js +4 -1
  199. package/build/dex/cables/types.js.map +1 -1
  200. package/build/dex/camelot/camelot.d.ts +1 -1
  201. package/build/dex/camelot/camelot.js +19 -9
  202. package/build/dex/camelot/camelot.js.map +1 -1
  203. package/build/dex/camelot/config.js +1 -1
  204. package/build/dex/camelot/config.js.map +1 -1
  205. package/build/dex/camelot/types.d.ts +3 -3
  206. package/build/dex/compound/types.d.ts +2 -2
  207. package/build/dex/compound/types.js +1 -1
  208. package/build/dex/compound/types.js.map +1 -1
  209. package/build/dex/concentrator-arusd/concentrator-arusd-event.js.map +1 -1
  210. package/build/dex/concentrator-arusd/concentrator-arusd.js +17 -7
  211. package/build/dex/concentrator-arusd/concentrator-arusd.js.map +1 -1
  212. package/build/dex/concentrator-arusd/types.d.ts +4 -4
  213. package/build/dex/concentrator-arusd/utils.js +1 -2
  214. package/build/dex/concentrator-arusd/utils.js.map +1 -1
  215. package/build/dex/curve-v1/config.js +5 -5
  216. package/build/dex/curve-v1/config.js.map +1 -1
  217. package/build/dex/curve-v1/curve-v1.js +17 -7
  218. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  219. package/build/dex/curve-v1/forks/curve-forks/curve-forks.js.map +1 -1
  220. package/build/dex/curve-v1/forks/swerve/swerve.js.map +1 -1
  221. package/build/dex/curve-v1/packer.js.map +1 -1
  222. package/build/dex/curve-v1/pools/3pool.js.map +1 -1
  223. package/build/dex/curve-v1/pools/curve-metapool.js.map +1 -1
  224. package/build/dex/curve-v1/pools/curve-pool.js.map +1 -1
  225. package/build/dex/curve-v1/pools/getstate-multicall.js +1 -2
  226. package/build/dex/curve-v1/pools/getstate-multicall.js.map +1 -1
  227. package/build/dex/curve-v1/pools/sETHpool.js.map +1 -1
  228. package/build/dex/curve-v1/types.d.ts +7 -7
  229. package/build/dex/curve-v1/types.js +2 -2
  230. package/build/dex/curve-v1/types.js.map +1 -1
  231. package/build/dex/curve-v1-factory/config.js +7 -7
  232. package/build/dex/curve-v1-factory/config.js.map +1 -1
  233. package/build/dex/curve-v1-factory/curve-v1-factory.js +17 -7
  234. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  235. package/build/dex/curve-v1-factory/curve-v1-pool-manager.js.map +1 -1
  236. package/build/dex/curve-v1-factory/optimizer.js +1 -2
  237. package/build/dex/curve-v1-factory/optimizer.js.map +1 -1
  238. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js.map +1 -1
  239. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js.map +1 -1
  240. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js.map +1 -1
  241. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js.map +1 -1
  242. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js.map +1 -1
  243. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js.map +1 -1
  244. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js.map +1 -1
  245. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js.map +1 -1
  246. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js.map +1 -1
  247. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js.map +1 -1
  248. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js.map +1 -1
  249. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js.map +1 -1
  250. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js.map +1 -1
  251. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js.map +1 -1
  252. package/build/dex/curve-v1-factory/price-handlers/functions/utils.js +2 -2
  253. package/build/dex/curve-v1-factory/price-handlers/functions/utils.js.map +1 -1
  254. package/build/dex/curve-v1-factory/price-handlers/price-handler.js.map +1 -1
  255. package/build/dex/curve-v1-factory/price-handlers/types.d.ts +15 -15
  256. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.d.ts +1 -1
  257. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js.map +1 -1
  258. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +1 -1
  259. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
  260. package/build/dex/curve-v1-factory/state-polling-pools/polling-manager.js.map +1 -1
  261. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.d.ts +3 -3
  262. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js.map +1 -1
  263. package/build/dex/curve-v1-factory/types.d.ts +17 -17
  264. package/build/dex/curve-v1-factory/types.js +6 -6
  265. package/build/dex/curve-v1-factory/types.js.map +1 -1
  266. package/build/dex/curve-v1-stable-ng/config.js +7 -7
  267. package/build/dex/curve-v1-stable-ng/config.js.map +1 -1
  268. package/build/dex/curve-v2/curve-v2.d.ts +2 -2
  269. package/build/dex/curve-v2/curve-v2.js.map +1 -1
  270. package/build/dex/curve-v2/types.d.ts +2 -2
  271. package/build/dex/curve-v2/types.js +1 -1
  272. package/build/dex/curve-v2/types.js.map +1 -1
  273. package/build/dex/dexalot/dexalot.js +57 -8
  274. package/build/dex/dexalot/dexalot.js.map +1 -1
  275. package/build/dex/dexalot/types.d.ts +17 -17
  276. package/build/dex/dexalot/types.js +1 -1
  277. package/build/dex/dexalot/types.js.map +1 -1
  278. package/build/dex/dodo-v1/types.d.ts +2 -2
  279. package/build/dex/dodo-v1/types.js +1 -1
  280. package/build/dex/dodo-v1/types.js.map +1 -1
  281. package/build/dex/dodo-v2.d.ts +5 -5
  282. package/build/dex/dodo-v2.js +1 -1
  283. package/build/dex/dodo-v2.js.map +1 -1
  284. package/build/dex/etherfi.d.ts +5 -5
  285. package/build/dex/etherfi.js.map +1 -1
  286. package/build/dex/fluid-dex/fluid-dex-factory.d.ts +1 -1
  287. package/build/dex/fluid-dex/fluid-dex-factory.js.map +1 -1
  288. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.js.map +1 -1
  289. package/build/dex/fluid-dex/fluid-dex.js +17 -7
  290. package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
  291. package/build/dex/fluid-dex/types.d.ts +14 -14
  292. package/build/dex/fluid-dex/utils.js +1 -2
  293. package/build/dex/fluid-dex/utils.js.map +1 -1
  294. package/build/dex/fx-protocol-rusd/fx-protocol-rusd-event.js.map +1 -1
  295. package/build/dex/fx-protocol-rusd/fx-protocol-rusd.js +17 -7
  296. package/build/dex/fx-protocol-rusd/fx-protocol-rusd.js.map +1 -1
  297. package/build/dex/fx-protocol-rusd/types.d.ts +3 -3
  298. package/build/dex/fx-protocol-rusd/utils.js +1 -2
  299. package/build/dex/fx-protocol-rusd/utils.js.map +1 -1
  300. package/build/dex/generic-rfq/fetch-mm-api.js +1 -1
  301. package/build/dex/generic-rfq/fetch-mm-api.js.map +1 -1
  302. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  303. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  304. package/build/dex/generic-rfq/security.d.ts +1 -1
  305. package/build/dex/generic-rfq/security.js.map +1 -1
  306. package/build/dex/generic-rfq/types.d.ts +23 -23
  307. package/build/dex/generic-rfq/utils.d.ts +1 -1
  308. package/build/dex/generic-rfq/utils.js.map +1 -1
  309. package/build/dex/generic-rfq/validators.js +17 -7
  310. package/build/dex/generic-rfq/validators.js.map +1 -1
  311. package/build/dex/gmx/fast-price-feed.js.map +1 -1
  312. package/build/dex/gmx/gmx.js +17 -7
  313. package/build/dex/gmx/gmx.js.map +1 -1
  314. package/build/dex/gmx/pool.js.map +1 -1
  315. package/build/dex/gmx/types.d.ts +10 -10
  316. package/build/dex/gmx/usdg.js.map +1 -1
  317. package/build/dex/gmx/vault-price-feed.js.map +1 -1
  318. package/build/dex/gmx/vault-utils.js.map +1 -1
  319. package/build/dex/gmx/vault.js.map +1 -1
  320. package/build/dex/hashflow/constants.js +10 -10
  321. package/build/dex/hashflow/constants.js.map +1 -1
  322. package/build/dex/hashflow/hashflow.js +17 -7
  323. package/build/dex/hashflow/hashflow.js.map +1 -1
  324. package/build/dex/hashflow/rate-fetcher.js.map +1 -1
  325. package/build/dex/hashflow/types.d.ts +8 -8
  326. package/build/dex/hashflow/types.js +1 -1
  327. package/build/dex/hashflow/types.js.map +1 -1
  328. package/build/dex/idex.d.ts +3 -3
  329. package/build/dex/idle-dao/idle-dao.js +17 -7
  330. package/build/dex/idle-dao/idle-dao.js.map +1 -1
  331. package/build/dex/idle-dao/tokens.js +5 -5
  332. package/build/dex/idle-dao/tokens.js.map +1 -1
  333. package/build/dex/idle-dao/types.d.ts +7 -7
  334. package/build/dex/idle-dao/types.js +1 -1
  335. package/build/dex/idle-dao/types.js.map +1 -1
  336. package/build/dex/idle-dao/utils.d.ts +1 -1
  337. package/build/dex/idle-dao/utils.js.map +1 -1
  338. package/build/dex/inception/config.d.ts +4 -0
  339. package/build/dex/inception/config.js +109 -0
  340. package/build/dex/inception/config.js.map +1 -0
  341. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  342. package/build/dex/inception/inception-event-pool.js +49 -0
  343. package/build/dex/inception/inception-event-pool.js.map +1 -0
  344. package/build/dex/inception/inception.d.ts +43 -0
  345. package/build/dex/inception/inception.js +180 -0
  346. package/build/dex/inception/inception.js.map +1 -0
  347. package/build/dex/inception/tokens.d.ts +9 -0
  348. package/build/dex/inception/tokens.js +28 -0
  349. package/build/dex/inception/tokens.js.map +1 -0
  350. package/build/dex/inception/types.d.ts +22 -0
  351. package/build/dex/inception/types.js +3 -0
  352. package/build/dex/inception/types.js.map +1 -0
  353. package/build/dex/inception/utils.d.ts +7 -0
  354. package/build/dex/inception/utils.js +58 -0
  355. package/build/dex/inception/utils.js.map +1 -0
  356. package/build/dex/index.d.ts +2 -2
  357. package/build/dex/index.js +4 -2
  358. package/build/dex/index.js.map +1 -1
  359. package/build/dex/infusion/infusion-stable-pool.js.map +1 -1
  360. package/build/dex/infusion/infusion.js +1 -1
  361. package/build/dex/infusion/infusion.js.map +1 -1
  362. package/build/dex/infusion/types.d.ts +6 -6
  363. package/build/dex/infusion/utils/isStablePair.js +4 -4
  364. package/build/dex/infusion/utils/isStablePair.js.map +1 -1
  365. package/build/dex/jarvis-v6/chainLinkpriceFeed-event.js.map +1 -1
  366. package/build/dex/jarvis-v6/jarvis-v6.js +18 -8
  367. package/build/dex/jarvis-v6/jarvis-v6.js.map +1 -1
  368. package/build/dex/jarvis-v6/syntheteumPool-event.js.map +1 -1
  369. package/build/dex/jarvis-v6/types.d.ts +10 -10
  370. package/build/dex/jarvis-v6/types.js +1 -1
  371. package/build/dex/jarvis-v6/types.js.map +1 -1
  372. package/build/dex/jarvis-v6/utils.js +5 -5
  373. package/build/dex/jarvis-v6/utils.js.map +1 -1
  374. package/build/dex/jarvis.d.ts +2 -1
  375. package/build/dex/jarvis.js +58 -0
  376. package/build/dex/jarvis.js.map +1 -1
  377. package/build/dex/kyberdmm/fee-formula.d.ts +1 -1
  378. package/build/dex/kyberdmm/fee-formula.js.map +1 -1
  379. package/build/dex/kyberdmm/kyberdmm.js +17 -7
  380. package/build/dex/kyberdmm/kyberdmm.js.map +1 -1
  381. package/build/dex/kyberdmm/math-ext.js.map +1 -1
  382. package/build/dex/kyberdmm/pool.d.ts +2 -2
  383. package/build/dex/kyberdmm/pool.js.map +1 -1
  384. package/build/dex/kyberdmm/types.d.ts +8 -8
  385. package/build/dex/kyberdmm/types.js +1 -1
  386. package/build/dex/kyberdmm/types.js.map +1 -1
  387. package/build/dex/lido/types.d.ts +1 -1
  388. package/build/dex/lido/types.js +1 -1
  389. package/build/dex/lido/types.js.map +1 -1
  390. package/build/dex/limit-order-exchange.js.map +1 -1
  391. package/build/dex/lite-psm/lite-psm-event-pool.js +2 -2
  392. package/build/dex/lite-psm/lite-psm-event-pool.js.map +1 -1
  393. package/build/dex/lite-psm/lite-psm.js +18 -8
  394. package/build/dex/lite-psm/lite-psm.js.map +1 -1
  395. package/build/dex/lite-psm/types.d.ts +6 -6
  396. package/build/dex/maker-psm/maker-psm.js +17 -7
  397. package/build/dex/maker-psm/maker-psm.js.map +1 -1
  398. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  399. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  400. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  401. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  402. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  403. package/build/dex/maker-psm/types.d.ts +6 -6
  404. package/build/dex/maverick-v1/maverick-math/maverick-basic-math.js.map +1 -1
  405. package/build/dex/maverick-v1/maverick-math/maverick-bin-map.d.ts +1 -1
  406. package/build/dex/maverick-v1/maverick-math/maverick-bin-map.js.map +1 -1
  407. package/build/dex/maverick-v1/maverick-math/maverick-pool-math.d.ts +1 -1
  408. package/build/dex/maverick-v1/maverick-math/maverick-pool-math.js.map +1 -1
  409. package/build/dex/maverick-v1/maverick-v1-pool.js +17 -7
  410. package/build/dex/maverick-v1/maverick-v1-pool.js.map +1 -1
  411. package/build/dex/maverick-v1/maverick-v1.js +17 -7
  412. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  413. package/build/dex/maverick-v1/types.d.ts +7 -7
  414. package/build/dex/maverick-v1/types.js +1 -1
  415. package/build/dex/maverick-v1/types.js.map +1 -1
  416. package/build/dex/maverick-v2/maverick-math/maverick-basic-math.js.map +1 -1
  417. package/build/dex/maverick-v2/maverick-math/maverick-bin-math.js.map +1 -1
  418. package/build/dex/maverick-v2/maverick-math/maverick-delta-math.d.ts +1 -1
  419. package/build/dex/maverick-v2/maverick-math/maverick-delta-math.js.map +1 -1
  420. package/build/dex/maverick-v2/maverick-math/maverick-math.js.map +1 -1
  421. package/build/dex/maverick-v2/maverick-math/maverick-pool-lib.js.map +1 -1
  422. package/build/dex/maverick-v2/maverick-math/maverick-pool-math.js.map +1 -1
  423. package/build/dex/maverick-v2/maverick-math/maverick-swap-math.js.map +1 -1
  424. package/build/dex/maverick-v2/maverick-math/maverick-tick-math.js.map +1 -1
  425. package/build/dex/maverick-v2/maverick-v2-pool.js.map +1 -1
  426. package/build/dex/maverick-v2/maverick-v2.js +17 -7
  427. package/build/dex/maverick-v2/maverick-v2.js.map +1 -1
  428. package/build/dex/maverick-v2/types.d.ts +14 -14
  429. package/build/dex/nerve/config.js +67 -67
  430. package/build/dex/nerve/config.js.map +1 -1
  431. package/build/dex/nerve/nerve-math.js.map +1 -1
  432. package/build/dex/nerve/nerve-pool.js.map +1 -1
  433. package/build/dex/nerve/nerve.js +17 -7
  434. package/build/dex/nerve/nerve.js.map +1 -1
  435. package/build/dex/nerve/types.d.ts +6 -6
  436. package/build/dex/nerve/types.js +1 -1
  437. package/build/dex/nerve/types.js.map +1 -1
  438. package/build/dex/nerve/utils.js +2 -2
  439. package/build/dex/nerve/utils.js.map +1 -1
  440. package/build/dex/oswap/config.js +3 -3
  441. package/build/dex/oswap/config.js.map +1 -1
  442. package/build/dex/oswap/oswap-pool.js.map +1 -1
  443. package/build/dex/oswap/oswap.js +17 -7
  444. package/build/dex/oswap/oswap.js.map +1 -1
  445. package/build/dex/oswap/types.d.ts +4 -4
  446. package/build/dex/pancakeswap-v3/contract-math/BitMath.js.map +1 -1
  447. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js.map +1 -1
  448. package/build/dex/pancakeswap-v3/contract-math/Oracle.js.map +1 -1
  449. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js.map +1 -1
  450. package/build/dex/pancakeswap-v3/contract-math/SwapMath.js.map +1 -1
  451. package/build/dex/pancakeswap-v3/contract-math/Tick.js.map +1 -1
  452. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js.map +1 -1
  453. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.d.ts +1 -1
  454. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js.map +1 -1
  455. package/build/dex/pancakeswap-v3/contract-math/utils.js +3 -4
  456. package/build/dex/pancakeswap-v3/contract-math/utils.js.map +1 -1
  457. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.d.ts +1 -1
  458. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js.map +1 -1
  459. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +1 -1
  460. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +0 -1
  461. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +17 -7
  462. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  463. package/build/dex/pancakeswap-v3/utils.js +1 -2
  464. package/build/dex/pancakeswap-v3/utils.js.map +1 -1
  465. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +17 -7
  466. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  467. package/build/dex/paraswap-limit-orders/types.d.ts +11 -11
  468. package/build/dex/paraswap-limit-orders/utils.js +2 -3
  469. package/build/dex/paraswap-limit-orders/utils.js.map +1 -1
  470. package/build/dex/platypus/platypus.d.ts +2 -1
  471. package/build/dex/platypus/platypus.js +45 -0
  472. package/build/dex/platypus/platypus.js.map +1 -1
  473. package/build/dex/polygon-migrator/polygon-migrator.js +17 -7
  474. package/build/dex/polygon-migrator/polygon-migrator.js.map +1 -1
  475. package/build/dex/polygon-migrator/types.d.ts +2 -2
  476. package/build/dex/polygon-migrator/types.js +1 -1
  477. package/build/dex/polygon-migrator/types.js.map +1 -1
  478. package/build/dex/quick-perps/fast-price-feed.js.map +1 -1
  479. package/build/dex/quick-perps/pool.js.map +1 -1
  480. package/build/dex/quick-perps/quick-perps.js +17 -7
  481. package/build/dex/quick-perps/quick-perps.js.map +1 -1
  482. package/build/dex/quick-perps/types.d.ts +10 -10
  483. package/build/dex/quick-perps/usdq.js.map +1 -1
  484. package/build/dex/quick-perps/vault-price-feed.js.map +1 -1
  485. package/build/dex/quick-perps/vault-utils.js.map +1 -1
  486. package/build/dex/quick-perps/vault.js.map +1 -1
  487. package/build/dex/quickswap/quickswap-v3.d.ts +1 -1
  488. package/build/dex/quickswap/quickswap-v3.js.map +1 -1
  489. package/build/dex/simple-exchange.js.map +1 -1
  490. package/build/dex/sky-converter/config.js +2 -2
  491. package/build/dex/sky-converter/config.js.map +1 -1
  492. package/build/dex/sky-converter/sky-converter.js +17 -7
  493. package/build/dex/sky-converter/sky-converter.js.map +1 -1
  494. package/build/dex/sky-converter/types.d.ts +2 -2
  495. package/build/dex/smoothy/types.d.ts +2 -2
  496. package/build/dex/smoothy/types.js +1 -1
  497. package/build/dex/smoothy/types.js.map +1 -1
  498. package/build/dex/solidly/config.js +10 -10
  499. package/build/dex/solidly/config.js.map +1 -1
  500. package/build/dex/solidly/forks-override/aerodrome.js.map +1 -1
  501. package/build/dex/solidly/forks-override/ramses.d.ts +2 -2
  502. package/build/dex/solidly/solidly-stable-pool.js.map +1 -1
  503. package/build/dex/solidly/solidly.js.map +1 -1
  504. package/build/dex/solidly/types.d.ts +3 -3
  505. package/build/dex/solidly-v3/constants.js +1 -1
  506. package/build/dex/solidly-v3/constants.js.map +1 -1
  507. package/build/dex/solidly-v3/contract-math/BitMath.js.map +1 -1
  508. package/build/dex/solidly-v3/contract-math/LiquidityMath.js.map +1 -1
  509. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js.map +1 -1
  510. package/build/dex/solidly-v3/contract-math/SwapMath.js.map +1 -1
  511. package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -1
  512. package/build/dex/solidly-v3/contract-math/TickBitMap.js.map +1 -1
  513. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.d.ts +3 -3
  514. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +2 -2
  515. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -1
  516. package/build/dex/solidly-v3/contract-math/utils.js +5 -6
  517. package/build/dex/solidly-v3/contract-math/utils.js.map +1 -1
  518. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  519. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  520. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  521. package/build/dex/solidly-v3/solidly-v3-factory.d.ts +1 -1
  522. package/build/dex/solidly-v3/solidly-v3-factory.js.map +1 -1
  523. package/build/dex/solidly-v3/solidly-v3-pool.js.map +1 -1
  524. package/build/dex/solidly-v3/solidly-v3.d.ts +4 -5
  525. package/build/dex/solidly-v3/solidly-v3.js +17 -7
  526. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  527. package/build/dex/solidly-v3/types.d.ts +19 -19
  528. package/build/dex/solidly-v3/types.js +1 -1
  529. package/build/dex/solidly-v3/types.js.map +1 -1
  530. package/build/dex/solidly-v3/utils.js +2 -3
  531. package/build/dex/solidly-v3/utils.js.map +1 -1
  532. package/build/dex/spark/config.js +3 -3
  533. package/build/dex/spark/config.js.map +1 -1
  534. package/build/dex/spark/scripts/validate-state.js.map +1 -1
  535. package/build/dex/spark/spark-sdai-pool.d.ts +1 -1
  536. package/build/dex/spark/spark-sdai-pool.js.map +1 -1
  537. package/build/dex/spark/spark.js +17 -7
  538. package/build/dex/spark/spark.js.map +1 -1
  539. package/build/dex/spark/types.d.ts +3 -3
  540. package/build/dex/spark/types.js +2 -2
  541. package/build/dex/spark/types.js.map +1 -1
  542. package/build/dex/spark/utils.js +3 -4
  543. package/build/dex/spark/utils.js.map +1 -1
  544. package/build/dex/stable-pool/types.d.ts +2 -2
  545. package/build/dex/stable-pool/types.js +1 -1
  546. package/build/dex/stable-pool/types.js.map +1 -1
  547. package/build/dex/stable-pool.js +1 -8
  548. package/build/dex/stable-pool.js.map +1 -1
  549. package/build/dex/stader/stader-pool.js.map +1 -1
  550. package/build/dex/stader/stader.js +17 -7
  551. package/build/dex/stader/stader.js.map +1 -1
  552. package/build/dex/stader/types.d.ts +3 -3
  553. package/build/dex/stader/types.js +1 -1
  554. package/build/dex/stader/types.js.map +1 -1
  555. package/build/dex/stader/utils.js +1 -2
  556. package/build/dex/stader/utils.js.map +1 -1
  557. package/build/dex/stkgho/stkgho-pool.js.map +1 -1
  558. package/build/dex/stkgho/stkgho.js +17 -7
  559. package/build/dex/stkgho/stkgho.js.map +1 -1
  560. package/build/dex/stkgho/types.d.ts +3 -3
  561. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  562. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  563. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  564. package/build/dex/swaap-v2/rate-fetcher.js.map +1 -1
  565. package/build/dex/swaap-v2/stable-coins.js +9 -9
  566. package/build/dex/swaap-v2/stable-coins.js.map +1 -1
  567. package/build/dex/swaap-v2/swaap-v2.js +17 -7
  568. package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
  569. package/build/dex/swaap-v2/types.d.ts +12 -12
  570. package/build/dex/swaap-v2/utils.js.map +1 -1
  571. package/build/dex/swaap-v2/validators.js +17 -7
  572. package/build/dex/swaap-v2/validators.js.map +1 -1
  573. package/build/dex/swell/config.d.ts +1 -1
  574. package/build/dex/swell/swell.d.ts +2 -2
  575. package/build/dex/swell/swell.js +18 -8
  576. package/build/dex/swell/swell.js.map +1 -1
  577. package/build/dex/swell/type.d.ts +2 -2
  578. package/build/dex/swell/utils.js +2 -3
  579. package/build/dex/swell/utils.js.map +1 -1
  580. package/build/dex/synthetix/config.js +18 -18
  581. package/build/dex/synthetix/config.js.map +1 -1
  582. package/build/dex/synthetix/constants.js +1 -1
  583. package/build/dex/synthetix/constants.js.map +1 -1
  584. package/build/dex/synthetix/contract-math/DexPriceAggregatorUniswapV3.js.map +1 -1
  585. package/build/dex/synthetix/contract-math/ExchangeRates.js.map +1 -1
  586. package/build/dex/synthetix/contract-math/ExchangeRatesWithDexPricing.js.map +1 -1
  587. package/build/dex/synthetix/contract-math/OracleLibrary.js.map +1 -1
  588. package/build/dex/synthetix/contract-math/SafeDecimalMath.js.map +1 -1
  589. package/build/dex/synthetix/contract-math/synthetix-math.js.map +1 -1
  590. package/build/dex/synthetix/synthetix-state.js.map +1 -1
  591. package/build/dex/synthetix/synthetix.d.ts +0 -1
  592. package/build/dex/synthetix/synthetix.js +17 -7
  593. package/build/dex/synthetix/synthetix.js.map +1 -1
  594. package/build/dex/synthetix/types.d.ts +12 -12
  595. package/build/dex/synthetix/utils.js +2 -2
  596. package/build/dex/synthetix/utils.js.map +1 -1
  597. package/build/dex/trader-joe-v2.1/types.d.ts +5 -5
  598. package/build/dex/trader-joe-v2.1/types.js +1 -1
  599. package/build/dex/trader-joe-v2.1/types.js.map +1 -1
  600. package/build/dex/uniswap-v2/config.js +6 -6
  601. package/build/dex/uniswap-v2/config.js.map +1 -1
  602. package/build/dex/uniswap-v2/nomiswap-v2.js +2 -2
  603. package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -1
  604. package/build/dex/uniswap-v2/optimizer.js +1 -2
  605. package/build/dex/uniswap-v2/optimizer.js.map +1 -1
  606. package/build/dex/uniswap-v2/types.d.ts +15 -15
  607. package/build/dex/uniswap-v2/types.js +2 -2
  608. package/build/dex/uniswap-v2/types.js.map +1 -1
  609. package/build/dex/uniswap-v2/uniswap-v2-constant-product-pool.js.map +1 -1
  610. package/build/dex/uniswap-v2/uniswap-v2-factory.d.ts +2 -2
  611. package/build/dex/uniswap-v2/uniswap-v2-factory.js.map +1 -1
  612. package/build/dex/uniswap-v2/uniswap-v2.js +19 -9
  613. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  614. package/build/dex/uniswap-v3/constants.js +2 -2
  615. package/build/dex/uniswap-v3/constants.js.map +1 -1
  616. package/build/dex/uniswap-v3/contract-math/BitMath.js.map +1 -1
  617. package/build/dex/uniswap-v3/contract-math/LiquidityMath.js.map +1 -1
  618. package/build/dex/uniswap-v3/contract-math/Oracle.js.map +1 -1
  619. package/build/dex/uniswap-v3/contract-math/SqrtPriceMath.js.map +1 -1
  620. package/build/dex/uniswap-v3/contract-math/SwapMath.js.map +1 -1
  621. package/build/dex/uniswap-v3/contract-math/Tick.js.map +1 -1
  622. package/build/dex/uniswap-v3/contract-math/TickBitMap.js.map +1 -1
  623. package/build/dex/uniswap-v3/contract-math/uniswap-v3-math.d.ts +3 -3
  624. package/build/dex/uniswap-v3/contract-math/uniswap-v3-math.js +2 -2
  625. package/build/dex/uniswap-v3/contract-math/uniswap-v3-math.js.map +1 -1
  626. package/build/dex/uniswap-v3/contract-math/utils.js +5 -6
  627. package/build/dex/uniswap-v3/contract-math/utils.js.map +1 -1
  628. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  629. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  630. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  631. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  632. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  633. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  634. package/build/dex/uniswap-v3/forks/ramses-v2/utils.js +1 -2
  635. package/build/dex/uniswap-v3/forks/ramses-v2/utils.js.map +1 -1
  636. package/build/dex/uniswap-v3/forks/velodrome-slipstream/utils.js +1 -2
  637. package/build/dex/uniswap-v3/forks/velodrome-slipstream/utils.js.map +1 -1
  638. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js +1 -1
  639. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js.map +1 -1
  640. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.d.ts +1 -1
  641. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
  642. package/build/dex/uniswap-v3/scripts/measure-calc-time.js +17 -7
  643. package/build/dex/uniswap-v3/scripts/measure-calc-time.js.map +1 -1
  644. package/build/dex/uniswap-v3/types.d.ts +22 -22
  645. package/build/dex/uniswap-v3/types.js +1 -1
  646. package/build/dex/uniswap-v3/types.js.map +1 -1
  647. package/build/dex/uniswap-v3/uniswap-v3-factory.d.ts +1 -1
  648. package/build/dex/uniswap-v3/uniswap-v3-factory.js.map +1 -1
  649. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  650. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  651. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  652. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  653. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  654. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  655. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  656. package/build/dex/uniswap-v3/uniswap-v3.d.ts +5 -6
  657. package/build/dex/uniswap-v3/uniswap-v3.js +17 -7
  658. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  659. package/build/dex/uniswap-v3/utils.js +2 -3
  660. package/build/dex/uniswap-v3/utils.js.map +1 -1
  661. package/build/dex/uniswap-v3.d.ts +4 -4
  662. package/build/dex/uniswap-v3.js.map +1 -1
  663. package/build/dex/usual/types.d.ts +13 -0
  664. package/build/dex/usual/types.js +3 -0
  665. package/build/dex/usual/types.js.map +1 -0
  666. package/build/dex/usual/usual-bond.d.ts +18 -0
  667. package/build/dex/usual/usual-bond.js +52 -0
  668. package/build/dex/usual/usual-bond.js.map +1 -0
  669. package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
  670. package/build/dex/usual/usual-m-smart-m.js +50 -0
  671. package/build/dex/usual/usual-m-smart-m.js.map +1 -0
  672. package/build/dex/usual/usual-m-usd0.d.ts +17 -0
  673. package/build/dex/usual/usual-m-usd0.js +51 -0
  674. package/build/dex/usual/usual-m-usd0.js.map +1 -0
  675. package/build/dex/usual/usual.d.ts +27 -0
  676. package/build/dex/usual/usual.js +125 -0
  677. package/build/dex/usual/usual.js.map +1 -0
  678. package/build/dex/usual-bond/types.d.ts +3 -3
  679. package/build/dex/usual-bond/usual-bond.js +17 -7
  680. package/build/dex/usual-bond/usual-bond.js.map +1 -1
  681. package/build/dex/usual-m-smart-m/config.d.ts +3 -0
  682. package/build/dex/usual-m-smart-m/config.js +13 -0
  683. package/build/dex/usual-m-smart-m/config.js.map +1 -0
  684. package/build/dex/usual-m-smart-m/types.d.ts +7 -0
  685. package/build/dex/usual-m-smart-m/types.js +3 -0
  686. package/build/dex/usual-m-smart-m/types.js.map +1 -0
  687. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
  688. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
  689. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
  690. package/build/dex/usual-m-usd0/config.d.ts +3 -0
  691. package/build/dex/usual-m-usd0/config.js +14 -0
  692. package/build/dex/usual-m-usd0/config.js.map +1 -0
  693. package/build/dex/usual-m-usd0/types.d.ts +8 -0
  694. package/build/dex/usual-m-usd0/types.js +3 -0
  695. package/build/dex/usual-m-usd0/types.js.map +1 -0
  696. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
  697. package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
  698. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
  699. package/build/dex/weth/config.js +3 -0
  700. package/build/dex/weth/config.js.map +1 -1
  701. package/build/dex/weth/types.d.ts +4 -4
  702. package/build/dex/weth/types.js +1 -1
  703. package/build/dex/weth/types.js.map +1 -1
  704. package/build/dex/weth/weth.js +18 -8
  705. package/build/dex/weth/weth.js.map +1 -1
  706. package/build/dex/wombat/types.d.ts +7 -7
  707. package/build/dex/wombat/utils.js +7 -7
  708. package/build/dex/wombat/utils.js.map +1 -1
  709. package/build/dex/wombat/wombat-bmw.js.map +1 -1
  710. package/build/dex/wombat/wombat-pool.js.map +1 -1
  711. package/build/dex/wombat/wombat-quoter.js.map +1 -1
  712. package/build/dex/wombat/wombat.js +17 -7
  713. package/build/dex/wombat/wombat.js.map +1 -1
  714. package/build/dex/woo-fi-v2/decoders.js +3 -4
  715. package/build/dex/woo-fi-v2/decoders.js.map +1 -1
  716. package/build/dex/woo-fi-v2/types.d.ts +9 -9
  717. package/build/dex/woo-fi-v2/woo-fi-v2-math.js.map +1 -1
  718. package/build/dex/woo-fi-v2/woo-fi-v2.js +17 -7
  719. package/build/dex/woo-fi-v2/woo-fi-v2.js.map +1 -1
  720. package/build/dex/wsteth/types.d.ts +3 -3
  721. package/build/dex/wsteth/wsteth.js +17 -7
  722. package/build/dex/wsteth/wsteth.js.map +1 -1
  723. package/build/dex/wusdm/config.js +1 -1
  724. package/build/dex/wusdm/config.js.map +1 -1
  725. package/build/dex/wusdm/types.d.ts +3 -3
  726. package/build/dex/wusdm/types.js +1 -1
  727. package/build/dex/wusdm/types.js.map +1 -1
  728. package/build/dex/wusdm/wusdm-pool.js.map +1 -1
  729. package/build/dex/wusdm/wusdm.js +17 -7
  730. package/build/dex/wusdm/wusdm.js.map +1 -1
  731. package/build/dex/zerox/index.d.ts +4 -26
  732. package/build/dex/zerox/index.js +50 -42
  733. package/build/dex/zerox/index.js.map +1 -1
  734. package/build/dex/zerox/types.d.ts +29 -0
  735. package/build/dex/zerox/types.js +8 -1
  736. package/build/dex/zerox/types.js.map +1 -1
  737. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  738. package/build/dex-helper/irequest-wrapper.d.ts +2 -2
  739. package/build/executor/Executor01BytecodeBuilder.d.ts +2 -2
  740. package/build/executor/Executor01BytecodeBuilder.js +9 -14
  741. package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
  742. package/build/executor/Executor02BytecodeBuilder.d.ts +2 -2
  743. package/build/executor/Executor02BytecodeBuilder.js +23 -28
  744. package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
  745. package/build/executor/Executor03BytecodeBuilder.d.ts +2 -2
  746. package/build/executor/Executor03BytecodeBuilder.js +15 -20
  747. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  748. package/build/executor/ExecutorBytecodeBuilder.d.ts +5 -3
  749. package/build/executor/ExecutorBytecodeBuilder.js +51 -18
  750. package/build/executor/ExecutorBytecodeBuilder.js.map +1 -1
  751. package/build/executor/ExecutorDetector.js +5 -5
  752. package/build/executor/ExecutorDetector.js.map +1 -1
  753. package/build/executor/constants.js +16 -16
  754. package/build/executor/constants.js.map +1 -1
  755. package/build/executor/types.d.ts +20 -20
  756. package/build/executor/types.js +4 -4
  757. package/build/executor/types.js.map +1 -1
  758. package/build/executor/utils.js.map +1 -1
  759. package/build/generic-swap-transaction-builder.js +5 -1
  760. package/build/generic-swap-transaction-builder.js.map +1 -1
  761. package/build/implementations/local-paraswap-sdk.js +17 -7
  762. package/build/implementations/local-paraswap-sdk.js.map +1 -1
  763. package/build/lens.d.ts +2 -2
  764. package/build/lib/api3-feed.d.ts +1 -1
  765. package/build/lib/api3-feed.js.map +1 -1
  766. package/build/lib/benqi/staked-avax.d.ts +1 -1
  767. package/build/lib/benqi/staked-avax.js.map +1 -1
  768. package/build/lib/chainlink.d.ts +1 -1
  769. package/build/lib/decoders.js +2 -2
  770. package/build/lib/decoders.js.map +1 -1
  771. package/build/lib/fetcher/fetcher.d.ts +2 -2
  772. package/build/lib/fetcher/fetcher.js.map +1 -1
  773. package/build/lib/fetcher/wsFetcher.d.ts +2 -2
  774. package/build/lib/fetcher/wsFetcher.js.map +1 -1
  775. package/build/lib/generics-events-subscribers/erc20-event-subscriber-factory.js.map +1 -1
  776. package/build/lib/generics-events-subscribers/erc20-event-subscriber.js.map +1 -1
  777. package/build/lib/generics-events-subscribers/types.d.ts +6 -6
  778. package/build/lib/generics-events-subscribers/types.js +2 -2
  779. package/build/lib/generics-events-subscribers/types.js.map +1 -1
  780. package/build/lib/log-messages-suppressor.d.ts +4 -4
  781. package/build/lib/log-messages-suppressor.js.map +1 -1
  782. package/build/lib/log4js.d.ts +1 -1
  783. package/build/lib/log4js.js +18 -8
  784. package/build/lib/log4js.js.map +1 -1
  785. package/build/lib/multi-wrapper.d.ts +2 -2
  786. package/build/lib/multi-wrapper.js.map +1 -1
  787. package/build/lib/promise-scheduler.js.map +1 -1
  788. package/build/lib/stateful-rpc-poller/state-polling-manager.js.map +1 -1
  789. package/build/lib/stateful-rpc-poller/stateful-rpc-poller.js.map +1 -1
  790. package/build/lib/stateful-rpc-poller/types.d.ts +2 -2
  791. package/build/lib/stateful-rpc-poller/types.js +1 -1
  792. package/build/lib/stateful-rpc-poller/types.js.map +1 -1
  793. package/build/lib/stateful-rpc-poller/utils.js +2 -3
  794. package/build/lib/stateful-rpc-poller/utils.js.map +1 -1
  795. package/build/lib/task-scheduler.js.map +1 -1
  796. package/build/lib/token-transfer-fee.js.map +1 -1
  797. package/build/lib/tokens/balancer-fetcher.d.ts +5 -5
  798. package/build/lib/tokens/balancer-fetcher.js +1 -1
  799. package/build/lib/tokens/balancer-fetcher.js.map +1 -1
  800. package/build/lib/tokens/types.d.ts +11 -11
  801. package/build/lib/tokens/types.js +5 -5
  802. package/build/lib/tokens/types.js.map +1 -1
  803. package/build/lib/tokens/utils.js +2 -2
  804. package/build/lib/tokens/utils.js.map +1 -1
  805. package/build/lib/validators.d.ts +1 -1
  806. package/build/lib/validators.js.map +1 -1
  807. package/build/pools-helper.js.map +1 -1
  808. package/build/pricing-helper.js.map +1 -1
  809. package/build/router/buy.d.ts +1 -1
  810. package/build/router/index.js.map +1 -1
  811. package/build/router/megaswap.d.ts +1 -1
  812. package/build/router/multiswap.d.ts +1 -1
  813. package/build/router/payload-encoder.js +4 -4
  814. package/build/router/payload-encoder.js.map +1 -1
  815. package/build/router/simpleswap.d.ts +2 -2
  816. package/build/router/simpleswap.js.map +1 -1
  817. package/build/router/simpleswapnft.d.ts +1 -1
  818. package/build/router/simpleswapnft.js.map +1 -1
  819. package/build/stateful-event-subscriber.d.ts +1 -1
  820. package/build/stateful-event-subscriber.js.map +1 -1
  821. package/build/types.d.ts +39 -39
  822. package/build/utils.d.ts +7 -7
  823. package/build/utils.js +11 -11
  824. package/build/utils.js.map +1 -1
  825. package/package.json +2 -1
  826. package/scripts/run-dex-integration-v3.ts +78 -0
  827. package/src/abi/balancer-v3/batch-router.json +989 -0
  828. package/src/abi/balancer-v3/router.json +1792 -0
  829. package/src/abi/balancer-v3/vault-extension.json +2834 -0
  830. package/src/abi/permit2.json +581 -0
  831. package/src/bigint-constants.ts +1 -0
  832. package/src/config.ts +29 -0
  833. package/src/constants.ts +4 -0
  834. package/src/dex/augustus-approvals.ts +52 -19
  835. package/src/dex/balancer-v3/balancer-v3-e2e.test.ts +275 -0
  836. package/src/dex/balancer-v3/balancer-v3-events.test.ts +223 -0
  837. package/src/dex/balancer-v3/balancer-v3-integration.test.ts +879 -0
  838. package/src/dex/balancer-v3/balancer-v3-pool.ts +660 -0
  839. package/src/dex/balancer-v3/balancer-v3.ts +614 -0
  840. package/src/dex/balancer-v3/config.ts +46 -0
  841. package/src/dex/balancer-v3/getGasCost.ts +37 -0
  842. package/src/dex/balancer-v3/getOnChainState.ts +326 -0
  843. package/src/dex/balancer-v3/getPoolsApi.ts +129 -0
  844. package/src/dex/balancer-v3/getTopPoolsApi.ts +101 -0
  845. package/src/dex/balancer-v3/optimizer.ts +66 -0
  846. package/src/dex/balancer-v3/stablePool.ts +78 -0
  847. package/src/dex/balancer-v3/types.ts +86 -0
  848. package/src/dex/balancer-v3/weightedPool.ts +2 -0
  849. package/src/dex/bebop/bebop.ts +1 -1
  850. package/src/dex/dexalot/dexalot.ts +50 -2
  851. package/src/dex/index.ts +4 -2
  852. package/src/dex/weth/config.ts +3 -0
  853. package/src/executor/Executor01BytecodeBuilder.ts +13 -15
  854. package/src/executor/Executor02BytecodeBuilder.ts +11 -13
  855. package/src/executor/Executor03BytecodeBuilder.ts +11 -16
  856. package/src/executor/ExecutorBytecodeBuilder.ts +63 -2
  857. package/src/generic-swap-transaction-builder.ts +6 -2
  858. package/src/types.ts +1 -1
  859. package/tests/constants-e2e.ts +68 -2
  860. package/tests/utils-e2e.ts +8 -5
  861. package/.idea/aws.xml +0 -17
  862. package/.idea/codeStyles/Project.xml +0 -19
  863. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  864. package/.idea/misc.xml +0 -6
  865. package/.idea/modules.xml +0 -8
  866. package/.idea/paraswap-dex-lib.iml +0 -9
  867. package/.idea/prettier.xml +0 -7
  868. package/.idea/vcs.xml +0 -6
  869. package/build/abi/integral/factory.json +0 -333
  870. package/build/abi/integral/oracle.json +0 -501
  871. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
  872. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
  873. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
  874. package/build/dex/integral/config.d.ts +0 -4
  875. package/build/dex/integral/config.js +0 -20
  876. package/build/dex/integral/config.js.map +0 -1
  877. package/build/dex/integral/context.d.ts +0 -40
  878. package/build/dex/integral/context.js +0 -158
  879. package/build/dex/integral/context.js.map +0 -1
  880. package/build/dex/integral/integral-factory.d.ts +0 -24
  881. package/build/dex/integral/integral-factory.js +0 -95
  882. package/build/dex/integral/integral-factory.js.map +0 -1
  883. package/build/dex/integral/integral-pool.d.ts +0 -50
  884. package/build/dex/integral/integral-pool.js +0 -149
  885. package/build/dex/integral/integral-pool.js.map +0 -1
  886. package/build/dex/integral/integral-pricing.d.ts +0 -18
  887. package/build/dex/integral/integral-pricing.js +0 -114
  888. package/build/dex/integral/integral-pricing.js.map +0 -1
  889. package/build/dex/integral/integral-relayer.d.ts +0 -42
  890. package/build/dex/integral/integral-relayer.js +0 -192
  891. package/build/dex/integral/integral-relayer.js.map +0 -1
  892. package/build/dex/integral/integral-token.d.ts +0 -27
  893. package/build/dex/integral/integral-token.js +0 -59
  894. package/build/dex/integral/integral-token.js.map +0 -1
  895. package/build/dex/integral/integral.d.ts +0 -41
  896. package/build/dex/integral/integral.js +0 -376
  897. package/build/dex/integral/integral.js.map +0 -1
  898. package/build/dex/integral/types.d.ts +0 -85
  899. package/build/dex/integral/types.js +0 -9
  900. package/build/dex/integral/types.js.map +0 -1
  901. package/build/dex/integral/utils-e2e.d.ts +0 -9
  902. package/build/dex/integral/utils-e2e.js +0 -131
  903. package/build/dex/integral/utils-e2e.js.map +0 -1
  904. package/build/dex/integral/utils.d.ts +0 -17
  905. package/build/dex/integral/utils.js +0 -94
  906. package/build/dex/integral/utils.js.map +0 -1
  907. package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
  908. package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
  909. package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
  910. package/src/abi/cables/CablesMainnetRFQ.json +0 -1083
  911. package/src/dex/cables/cables-e2e.test.ts +0 -207
  912. package/src/dex/cables/cables-integration.test.ts +0 -319
  913. package/src/dex/cables/cables.ts +0 -888
  914. package/src/dex/cables/config.ts +0 -13
  915. package/src/dex/cables/constants.ts +0 -35
  916. package/src/dex/cables/rate-fetcher.ts +0 -219
  917. package/src/dex/cables/types.ts +0 -130
  918. package/src/dex/cables/validators.test.ts +0 -151
  919. package/src/dex/cables/validators.ts +0 -61
@@ -0,0 +1,614 @@
1
+ import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
2
+ import {
3
+ Token,
4
+ Address,
5
+ ExchangePrices,
6
+ PoolPrices,
7
+ AdapterExchangeParam,
8
+ PoolLiquidity,
9
+ Logger,
10
+ DexExchangeParam,
11
+ } from '../../types';
12
+ import { SwapSide, Network } from '../../constants';
13
+ import * as CALLDATA_GAS_COST from '../../calldata-gas-cost';
14
+ import { getBigIntPow, getDexKeysWithNetwork, isETHAddress } from '../../utils';
15
+ import { IDex } from '../../dex/idex';
16
+ import { IDexHelper } from '../../dex-helper/idex-helper';
17
+ import { BalancerV3Data, PoolState, PoolStateMap } from './types';
18
+ import { SimpleExchange } from '../simple-exchange';
19
+ import { BalancerV3Config } from './config';
20
+ import { BalancerV3EventPool } from './balancer-v3-pool';
21
+ import { NumberAsString } from '@paraswap/core';
22
+ import { SwapKind } from '@balancer-labs/balancer-maths';
23
+ import { Interface } from '@ethersproject/abi';
24
+ import { extractReturnAmountPosition } from '../../executor/utils';
25
+ import { getTopPoolsApi } from './getTopPoolsApi';
26
+ import balancerRouterAbi from '../../abi/balancer-v3/router.json';
27
+ import balancerBatchRouterAbi from '../../abi/balancer-v3/batch-router.json';
28
+ import { getGasCost } from './getGasCost';
29
+ import { Block } from '@ethersproject/abstract-provider';
30
+
31
+ const MAX_UINT256 =
32
+ '115792089237316195423570985008687907853269984665640564039457584007913129639935';
33
+ const POOL_UPDATE_TTL = 5 * 60; // 5mins
34
+ const RATE_UPDATE_TTL = 1 * 60; // 1min
35
+
36
+ type DeepMutable<T> = {
37
+ -readonly [P in keyof T]: T[P] extends object ? DeepMutable<T[P]> : T[P];
38
+ };
39
+
40
+ export class BalancerV3 extends SimpleExchange implements IDex<BalancerV3Data> {
41
+ protected eventPools: BalancerV3EventPool;
42
+
43
+ readonly hasConstantPriceLargeAmounts = false;
44
+ // Vault can handle native
45
+ readonly needWrapNative = false;
46
+
47
+ readonly isFeeOnTransferSupported = false;
48
+
49
+ public static dexKeysWithNetwork: { key: string; networks: Network[] }[] =
50
+ getDexKeysWithNetwork(BalancerV3Config);
51
+
52
+ logger: Logger;
53
+ balancerRouter: Interface;
54
+ balancerBatchRouter: Interface;
55
+ updateNewPoolsTimer?: NodeJS.Timeout;
56
+ updateRatesTimer?: NodeJS.Timeout;
57
+
58
+ latestBlock?: Block;
59
+
60
+ constructor(
61
+ readonly network: Network,
62
+ readonly dexKey: string,
63
+ readonly dexHelper: IDexHelper,
64
+ ) {
65
+ super(dexHelper, dexKey);
66
+ this.logger = dexHelper.getLogger(dexKey);
67
+ this.eventPools = new BalancerV3EventPool(
68
+ dexKey,
69
+ network,
70
+ dexHelper,
71
+ this.logger,
72
+ );
73
+ this.balancerRouter = new Interface(balancerRouterAbi);
74
+ this.balancerBatchRouter = new Interface(balancerBatchRouterAbi);
75
+ }
76
+
77
+ // Initialize pricing is called once in the start of
78
+ // pricing service. It is intended to setup the integration
79
+ // for pricing requests. It is optional for a DEX to
80
+ // implement this function
81
+ async initializePricing(blockNumber: number) {
82
+ await this.eventPools.initialize(blockNumber);
83
+
84
+ // This will periodically query API and add any new pools to pool state
85
+ if (!this.updateNewPoolsTimer) {
86
+ this.updateNewPoolsTimer = setInterval(async () => {
87
+ try {
88
+ await this.updatePoolState();
89
+ } catch (e) {
90
+ this.logger.error(`${this.dexKey}: Failed to update pool state:`, e);
91
+ }
92
+ }, POOL_UPDATE_TTL * 1000);
93
+ }
94
+
95
+ // This will periodically refresh tokenRates with onchain state
96
+ if (!this.updateRatesTimer) {
97
+ this.updateRatesTimer = setInterval(async () => {
98
+ try {
99
+ await this.updateStatePoolRates();
100
+ } catch (e) {
101
+ this.logger.error(`${this.dexKey}: Failed to update pool rates:`, e);
102
+ }
103
+ }, RATE_UPDATE_TTL * 1000);
104
+ }
105
+ }
106
+
107
+ getAdapters(side: SwapSide): null {
108
+ return null;
109
+ }
110
+
111
+ // Returns list of pool identifiers that can be used
112
+ // for a given swap. poolIdentifiers must be unique
113
+ // across DEXes. It is recommended to use
114
+ // ${dexKey}_${poolAddress} as a poolIdentifier
115
+ async getPoolIdentifiers(
116
+ srcToken: Token,
117
+ destToken: Token,
118
+ side: SwapSide,
119
+ blockNumber: number,
120
+ ): Promise<string[]> {
121
+ const _from = this.dexHelper.config.wrapETH(srcToken);
122
+ const _to = this.dexHelper.config.wrapETH(destToken);
123
+ const poolState = this.eventPools.getState(blockNumber);
124
+ if (poolState === null) return [];
125
+ return this.findPoolAddressesWithTokens(
126
+ poolState,
127
+ _from.address.toLowerCase(),
128
+ _to.address.toLowerCase(),
129
+ );
130
+ }
131
+
132
+ async getBlock(blockNumber: number): Promise<Block> {
133
+ if (this.latestBlock && this.latestBlock.number === blockNumber) {
134
+ return this.latestBlock;
135
+ }
136
+
137
+ const block = await this.dexHelper.provider.getBlock(blockNumber);
138
+ this.latestBlock = block;
139
+ return block;
140
+ }
141
+
142
+ findPoolAddressesWithTokens(
143
+ pools: DeepReadonly<PoolStateMap>,
144
+ tokenA: string,
145
+ tokenB: string,
146
+ ): string[] {
147
+ return Object.entries(pools)
148
+ .filter(([, poolState]) => {
149
+ return this.hasTokens(poolState, [tokenA, tokenB]);
150
+ })
151
+ .map(([address]) => address);
152
+ }
153
+
154
+ /**
155
+ * Filter pools that have tokens from/to and are in limitPool list
156
+ * @param pools
157
+ * @param from
158
+ * @param to
159
+ * @param limitPools
160
+ * @returns Array of PoolState
161
+ */
162
+ filterPools(
163
+ pools: DeepReadonly<PoolStateMap>,
164
+ from: string,
165
+ to: string,
166
+ limitPools?: string[],
167
+ ): PoolState[] {
168
+ return Object.entries(pools)
169
+ .filter(([address, poolState]) => {
170
+ const hasRequiredTokens = this.hasTokens(poolState, [from, to]);
171
+ const isAllowedPool = !limitPools || limitPools.includes(address);
172
+ return hasRequiredTokens && isAllowedPool;
173
+ })
174
+ .map(([_, poolState]) => poolState as DeepMutable<typeof poolState>);
175
+ }
176
+
177
+ hasTokens(pool: DeepReadonly<PoolState>, tokens: string[]): boolean {
178
+ return tokens.every(
179
+ token =>
180
+ pool.tokens.includes(token) || pool.tokensUnderlying.includes(token),
181
+ );
182
+ }
183
+
184
+ // Returns pool prices for amounts.
185
+ // If limitPools is defined only pools in limitPools
186
+ // should be used. If limitPools is undefined then
187
+ // any pools can be used.
188
+ async getPricesVolume(
189
+ srcToken: Token,
190
+ destToken: Token,
191
+ amounts: bigint[],
192
+ side: SwapSide,
193
+ blockNumber: number,
194
+ limitPools?: string[],
195
+ ): Promise<null | ExchangePrices<BalancerV3Data>> {
196
+ try {
197
+ const _from = this.dexHelper.config.wrapETH(srcToken);
198
+ const _to = this.dexHelper.config.wrapETH(destToken);
199
+ if (_from.address === _to.address) {
200
+ return null;
201
+ }
202
+
203
+ // This is used to get block timestamp which is needed to calculate Amp if it is updating
204
+ const block = await this.getBlock(blockNumber);
205
+
206
+ // get up to date pools and state
207
+ const allPoolState = this.eventPools.getState(blockNumber);
208
+ if (allPoolState === null) {
209
+ this.logger.error(`getState returned null`);
210
+ return null;
211
+ }
212
+
213
+ // filter for pools with tokens and to only use limit pools
214
+ const allowedPools = this.filterPools(
215
+ allPoolState,
216
+ _from.address.toLowerCase(),
217
+ _to.address.toLowerCase(),
218
+ limitPools,
219
+ );
220
+
221
+ if (!allowedPools.length) return null;
222
+
223
+ const swapKind =
224
+ side === SwapSide.SELL ? SwapKind.GivenIn : SwapKind.GivenOut;
225
+ const tokenIn = _from.address;
226
+ const tokenOut = _to.address;
227
+
228
+ // Gets the single unit amount based off token decimals, e.g. for USDC its 1e6
229
+ const unitAmount = getBigIntPow(
230
+ (side === SwapSide.SELL ? _from : _to).decimals,
231
+ );
232
+
233
+ const poolPrices: ExchangePrices<BalancerV3Data> = [];
234
+ // For each pool we calculate swap result using balancer maths
235
+ for (let i = 0; i < allowedPools.length; i++) {
236
+ const pool = {
237
+ ...allowedPools[i],
238
+ };
239
+
240
+ const tokenInInfo = this.eventPools.getTokenInfo(pool, tokenIn);
241
+ const tokenOutInfo = this.eventPools.getTokenInfo(pool, tokenOut);
242
+ if (!tokenInInfo || !tokenOutInfo) {
243
+ continue;
244
+ }
245
+
246
+ const steps = this.eventPools.getSteps(pool, tokenInInfo, tokenOutInfo);
247
+
248
+ try {
249
+ // This is the max amount the pool can swap
250
+ const maxSwapAmount = this.eventPools.getMaxSwapAmount(
251
+ pool,
252
+ tokenInInfo,
253
+ tokenOutInfo,
254
+ swapKind,
255
+ );
256
+
257
+ let unit = 0n;
258
+ if (unitAmount < maxSwapAmount)
259
+ unit = this.eventPools.getSwapResult(
260
+ steps,
261
+ unitAmount,
262
+ swapKind,
263
+ block.timestamp,
264
+ );
265
+
266
+ const poolExchangePrice: PoolPrices<BalancerV3Data> = {
267
+ prices: new Array(amounts.length).fill(0n),
268
+ unit,
269
+ data: {
270
+ steps: steps,
271
+ },
272
+ exchange: this.dexKey,
273
+ gasCost: getGasCost(steps),
274
+ poolAddresses: [pool.poolAddress],
275
+ poolIdentifier: `${this.dexKey}_${pool.poolAddress}`,
276
+ };
277
+
278
+ for (let j = 0; j < amounts.length; j++) {
279
+ if (amounts[j] < maxSwapAmount) {
280
+ // Uses balancer maths to calculate swap
281
+ poolExchangePrice.prices[j] = this.eventPools.getSwapResult(
282
+ steps,
283
+ amounts[j],
284
+ swapKind,
285
+ block.timestamp,
286
+ );
287
+ }
288
+ }
289
+ poolPrices.push(poolExchangePrice);
290
+ } catch (err) {
291
+ this.logger.error(
292
+ `error fetching prices for pool: ${pool.poolAddress}`,
293
+ );
294
+ this.logger.error(err);
295
+ }
296
+ }
297
+
298
+ return poolPrices;
299
+ } catch (err) {}
300
+ return null;
301
+ }
302
+
303
+ // Returns estimated gas cost of calldata for this DEX in multiSwap
304
+ getCalldataGasCost(
305
+ poolPrices: PoolPrices<BalancerV3Data>,
306
+ ): number | number[] {
307
+ if (
308
+ poolPrices.data.steps.length === 1 &&
309
+ !poolPrices.data.steps[0].isBuffer
310
+ ) {
311
+ return (
312
+ CALLDATA_GAS_COST.DEX_OVERHEAD +
313
+ // pool
314
+ CALLDATA_GAS_COST.ADDRESS +
315
+ // tokenIn
316
+ CALLDATA_GAS_COST.ADDRESS +
317
+ // tokenOut
318
+ CALLDATA_GAS_COST.ADDRESS +
319
+ // exactAmountOut
320
+ CALLDATA_GAS_COST.AMOUNT +
321
+ // maxAmountIn
322
+ CALLDATA_GAS_COST.AMOUNT +
323
+ // deadline
324
+ CALLDATA_GAS_COST.TIMESTAMP +
325
+ // wethIsEth
326
+ CALLDATA_GAS_COST.BOOL +
327
+ // userData
328
+ CALLDATA_GAS_COST.FULL_WORD
329
+ );
330
+ }
331
+
332
+ return (
333
+ CALLDATA_GAS_COST.DEX_OVERHEAD +
334
+ CALLDATA_GAS_COST.LENGTH_LARGE +
335
+ // ParentStruct header
336
+ CALLDATA_GAS_COST.OFFSET_SMALL +
337
+ // ParentStruct -> paths[] header
338
+ CALLDATA_GAS_COST.OFFSET_LARGE +
339
+ // ParentStruct -> paths[]
340
+ CALLDATA_GAS_COST.LENGTH_SMALL +
341
+ // ParentStruct -> paths header
342
+ CALLDATA_GAS_COST.OFFSET_SMALL +
343
+ // ParentStruct -> paths -> exactAmountIn
344
+ CALLDATA_GAS_COST.AMOUNT +
345
+ // ParentStruct -> paths -> minAmountOut
346
+ CALLDATA_GAS_COST.AMOUNT +
347
+ // ParentStruct -> paths -> tokenIn
348
+ CALLDATA_GAS_COST.ADDRESS +
349
+ poolPrices.data.steps.reduce(step => {
350
+ return (
351
+ // ParentStruct -> paths -> step header
352
+ CALLDATA_GAS_COST.OFFSET_SMALL +
353
+ // ParentStruct -> paths -> step -> isBuffer
354
+ CALLDATA_GAS_COST.BOOL +
355
+ // ParentStruct -> paths -> step -> pool
356
+ CALLDATA_GAS_COST.ADDRESS +
357
+ // ParentStruct -> paths -> step -> tokenOut
358
+ CALLDATA_GAS_COST.ADDRESS
359
+ );
360
+ }, 0) +
361
+ // deadline
362
+ CALLDATA_GAS_COST.TIMESTAMP +
363
+ // wethIsEth
364
+ CALLDATA_GAS_COST.BOOL +
365
+ // userData
366
+ CALLDATA_GAS_COST.FULL_WORD
367
+ );
368
+ }
369
+
370
+ // Not used for V6
371
+ getAdapterParam(): AdapterExchangeParam {
372
+ return {
373
+ targetExchange: '0x',
374
+ payload: '0x',
375
+ networkFee: '0',
376
+ };
377
+ }
378
+
379
+ getDexParam(
380
+ srcToken: Address,
381
+ destToken: Address,
382
+ srcAmount: NumberAsString,
383
+ destAmount: NumberAsString,
384
+ recipient: Address,
385
+ data: BalancerV3Data,
386
+ side: SwapSide,
387
+ ): DexExchangeParam {
388
+ if (side === SwapSide.SELL) {
389
+ return this.getExactInParam(srcToken, destToken, srcAmount, data);
390
+ } else {
391
+ return this.getExactOutParam(
392
+ srcToken,
393
+ destToken,
394
+ srcAmount,
395
+ destAmount,
396
+ data,
397
+ );
398
+ }
399
+ }
400
+
401
+ getExactInParam(
402
+ srcToken: Address,
403
+ destToken: Address,
404
+ srcAmount: NumberAsString,
405
+ data: BalancerV3Data,
406
+ ): DexExchangeParam {
407
+ if (data.steps.length === 1 && !data.steps[0].isBuffer) {
408
+ const exchangeData = this.balancerRouter.encodeFunctionData(
409
+ 'swapSingleTokenExactIn',
410
+ [
411
+ data.steps[0].pool,
412
+ this.dexHelper.config.wrapETH(srcToken),
413
+ this.dexHelper.config.wrapETH(destToken),
414
+ srcAmount,
415
+ '0', // This should be limit for min amount out. Assume this is set elsewhere via Paraswap contract.
416
+ MAX_UINT256, // Deadline
417
+ isETHAddress(srcToken) || isETHAddress(destToken),
418
+ '0x',
419
+ ],
420
+ );
421
+ return {
422
+ sendEthButSupportsInsertFromAmount: true,
423
+ permit2Approval: true,
424
+ needWrapNative: this.needWrapNative,
425
+ dexFuncHasRecipient: false,
426
+ exchangeData,
427
+ // This router handles single swaps
428
+ targetExchange:
429
+ BalancerV3Config.BalancerV3[this.network].balancerRouterAddress,
430
+ returnAmountPos: extractReturnAmountPosition(
431
+ this.balancerRouter,
432
+ 'swapSingleTokenExactIn',
433
+ ),
434
+ };
435
+ } else {
436
+ // for each step:
437
+ // if tokenIn == pool router uses removeLiquidity SINGLE_TOKEN_EXACT_IN
438
+ // if tokenOut == pool router uses addLiquidity UNBALANCED
439
+ const exchangeData = this.balancerBatchRouter.encodeFunctionData(
440
+ 'swapExactIn',
441
+ [
442
+ [
443
+ {
444
+ tokenIn: this.dexHelper.config.wrapETH(srcToken),
445
+ steps: data.steps.map(step => ({
446
+ pool: step.pool,
447
+ tokenOut: step.swapInput.tokenOut,
448
+ isBuffer: step.isBuffer,
449
+ })),
450
+ exactAmountIn: srcAmount,
451
+ minAmountOut: '0', // This should be limit for min amount out. Assume this is set elsewhere via Paraswap contract.
452
+ },
453
+ ],
454
+ MAX_UINT256, // Deadline
455
+ isETHAddress(srcToken) || isETHAddress(destToken),
456
+ '0x',
457
+ ],
458
+ );
459
+
460
+ return {
461
+ sendEthButSupportsInsertFromAmount: true,
462
+ permit2Approval: true,
463
+ needWrapNative: this.needWrapNative,
464
+ dexFuncHasRecipient: false,
465
+ exchangeData,
466
+ // This router handles batch swaps
467
+ targetExchange:
468
+ BalancerV3Config.BalancerV3[this.network].balancerBatchRouterAddress,
469
+ returnAmountPos: undefined,
470
+ };
471
+ }
472
+ }
473
+
474
+ getExactOutParam(
475
+ srcToken: Address,
476
+ destToken: Address,
477
+ srcAmount: NumberAsString,
478
+ destAmount: NumberAsString,
479
+ data: BalancerV3Data,
480
+ ): DexExchangeParam {
481
+ if (data.steps.length === 1 && !data.steps[0].isBuffer) {
482
+ const exchangeData = this.balancerRouter.encodeFunctionData(
483
+ 'swapSingleTokenExactOut',
484
+ [
485
+ data.steps[0].pool,
486
+ this.dexHelper.config.wrapETH(srcToken),
487
+ this.dexHelper.config.wrapETH(destToken),
488
+ destAmount,
489
+ MAX_UINT256, // This should be limit for max amount in. Assume this is set elsewhere via Paraswap contract.
490
+ MAX_UINT256, // Deadline
491
+ isETHAddress(srcToken) || isETHAddress(destToken),
492
+ '0x',
493
+ ],
494
+ );
495
+
496
+ return {
497
+ sendEthButSupportsInsertFromAmount: true,
498
+ permit2Approval: true,
499
+ needWrapNative: this.needWrapNative,
500
+ dexFuncHasRecipient: false,
501
+ exchangeData,
502
+ // Single swaps are submitted via Balancer Router
503
+ targetExchange:
504
+ BalancerV3Config.BalancerV3[this.network].balancerRouterAddress,
505
+ returnAmountPos: undefined,
506
+ };
507
+ } else {
508
+ // for each step:
509
+ // if tokenIn == pool use removeLiquidity SINGLE_TOKEN_EXACT_OUT
510
+ // if tokenOut == pool use addLiquidity SINGLE_TOKEN_EXACT_OUT
511
+ const exchangeData = this.balancerBatchRouter.encodeFunctionData(
512
+ 'swapExactOut',
513
+ [
514
+ [
515
+ {
516
+ tokenIn: this.dexHelper.config.wrapETH(srcToken),
517
+ steps: data.steps.map(step => ({
518
+ pool: step.pool,
519
+ tokenOut: step.swapInput.tokenOut,
520
+ isBuffer: step.isBuffer,
521
+ })),
522
+ exactAmountOut: destAmount,
523
+ maxAmountIn: srcAmount,
524
+ },
525
+ ],
526
+ MAX_UINT256, // Deadline
527
+ isETHAddress(srcToken) || isETHAddress(destToken),
528
+ '0x',
529
+ ],
530
+ );
531
+
532
+ return {
533
+ sendEthButSupportsInsertFromAmount: true,
534
+ permit2Approval: true,
535
+ needWrapNative: this.needWrapNative,
536
+ dexFuncHasRecipient: false,
537
+ exchangeData,
538
+ // This router handles batch swaps
539
+ targetExchange:
540
+ BalancerV3Config.BalancerV3[this.network].balancerBatchRouterAddress,
541
+ returnAmountPos: undefined,
542
+ };
543
+ }
544
+ }
545
+
546
+ /**
547
+ * Uses multicall to get onchain token rate for each pool then updates pool state
548
+ */
549
+ async updateStatePoolRates(): Promise<void> {
550
+ await this.eventPools.updateStatePoolRates();
551
+ }
552
+
553
+ // This is called once before getTopPoolsForToken is
554
+ // called for multiple tokens. This can be helpful to
555
+ // update common state required for calculating
556
+ // getTopPoolsForToken. It is optional for a DEX
557
+ // to implement this
558
+ async updatePoolState(): Promise<void> {
559
+ await this.eventPools.updateStatePools();
560
+ }
561
+
562
+ // Returns list of top pools based on liquidity. Max
563
+ // limit number pools should be returned.
564
+ async getTopPoolsForToken(
565
+ tokenAddress: Address,
566
+ count: number,
567
+ ): Promise<PoolLiquidity[]> {
568
+ const poolsWithToken = Object.entries(this.eventPools.getStaleState() || {})
569
+ .filter(([, poolState]) => {
570
+ return this.hasTokens(poolState, [tokenAddress.toLowerCase()]);
571
+ })
572
+ .map(([address]) => address);
573
+
574
+ const topPools = await getTopPoolsApi(this.network, poolsWithToken, count);
575
+
576
+ return topPools.map(pool => {
577
+ const tokens = pool.poolTokens
578
+ .filter(t => t.address !== tokenAddress)
579
+ .map(t => ({
580
+ address: t.address,
581
+ decimals: t.decimals,
582
+ }));
583
+
584
+ const underlyingTokens = pool.poolTokens
585
+ .map(t => t.underlyingToken)
586
+ .filter(t => !!t)
587
+ .filter(t => t?.address !== tokenAddress) as Token[];
588
+
589
+ return {
590
+ exchange: this.dexKey,
591
+ address: pool.address,
592
+ liquidityUSD: parseFloat(pool.dynamicData.totalLiquidity),
593
+ connectorTokens: tokens.concat(underlyingTokens),
594
+ };
595
+ });
596
+ }
597
+
598
+ releaseResources(): AsyncOrSync<void> {
599
+ if (this.updateNewPoolsTimer) {
600
+ clearInterval(this.updateNewPoolsTimer);
601
+ this.updateNewPoolsTimer = undefined;
602
+ this.logger.info(
603
+ `${this.dexKey}: cleared updateNewPoolsTimer before shutting down`,
604
+ );
605
+ }
606
+ if (this.updateRatesTimer) {
607
+ clearInterval(this.updateRatesTimer);
608
+ this.updateRatesTimer = undefined;
609
+ this.logger.info(
610
+ `${this.dexKey}: cleared updateRatesTimer before shutting down`,
611
+ );
612
+ }
613
+ }
614
+ }
@@ -0,0 +1,46 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ import { Network, SwapSide } from '../../constants';
4
+
5
+ // These map to the Balancer API poolType. Only Balancer supported pools will be added
6
+ export enum SUPPORTED_POOLS {
7
+ WEIGHTED = 'WEIGHTED',
8
+ STABLE = 'STABLE',
9
+ }
10
+
11
+ export const disabledPoolIds: Record<string, Record<number, string[]>> = {
12
+ BalancerV3: {
13
+ [Network.GNOSIS]: [
14
+ // pools with rate provider that returns nested rate instead of wrap/unwrap rate
15
+ '0x6e6bb18449fcf15b79efa2cfa70acf7593088029',
16
+ '0x272d6be442e30d7c87390edeb9b96f1e84cecd8d',
17
+ ],
18
+ },
19
+ };
20
+
21
+ // Balancer API - aggregatorSpecific query serves all useful static pool data
22
+ export const apiUrl = 'https://test-api-v3.balancer.fi/';
23
+
24
+ // TODO Full config added after V3 release
25
+ export const BalancerV3Config: DexConfigMap<DexParams> = {
26
+ BalancerV3: {
27
+ [Network.SEPOLIA]: {
28
+ vaultAddress: '0xbA1333333333a1BA1108E8412f11850A5C319bA9',
29
+ apiNetworkName: 'SEPOLIA',
30
+ balancerRouterAddress: '0x0BF61f706105EA44694f2e92986bD01C39930280',
31
+ balancerBatchRouterAddress: '0xC85b652685567C1B074e8c0D4389f83a2E458b1C',
32
+ },
33
+ [Network.GNOSIS]: {
34
+ vaultAddress: '0xbA1333333333a1BA1108E8412f11850A5C319bA9',
35
+ apiNetworkName: 'GNOSIS',
36
+ balancerRouterAddress: '0x84813aA3e079A665C0B80F944427eE83cBA63617',
37
+ balancerBatchRouterAddress: '0xe2fa4e1d17725e72dcdAfe943Ecf45dF4B9E285b',
38
+ },
39
+ [Network.MAINNET]: {
40
+ vaultAddress: '0xbA1333333333a1BA1108E8412f11850A5C319bA9',
41
+ apiNetworkName: 'MAINNET',
42
+ balancerRouterAddress: '0x5C6fb490BDFD3246EB0bB062c168DeCAF4bD9FDd',
43
+ balancerBatchRouterAddress: '0x136f1EFcC3f8f88516B9E94110D56FDBfB1778d1',
44
+ },
45
+ },
46
+ };
@@ -0,0 +1,37 @@
1
+ import { STABLE_GAS_COST } from './stablePool';
2
+ import { Step } from './types';
3
+ import { WEIGHTED_GAS_COST } from './weightedPool';
4
+
5
+ // https://sepolia.etherscan.io/tx/0x8c2c5ec7fc2855ed2ffab3467ee434f4e374e0ecf791e8d2b93c8d74e3f5b1fe
6
+ // 0x7ec61d6dcf0ea412327c30f013e60578c0ff4d83c334a95fb3a68739860e6f59
7
+ // 0xb45331fe60091bdf4ba4c201b7fdfefc1ca8087fa1b6bc28877ef84d167809f4
8
+ const FULL_BOOSTED_SWAP_GAS_COST = 283070;
9
+ // 0xb47bcae19ba4693d18f2148073d0d469ff59223e90d6f75eb25e06b0063f1556
10
+ // 0x4730b0c1dce820f14747698446865364b98d96d3ed926e8e74bbead6482b8f8b
11
+ const PARTIAL_BOOSTED_SWAP_GAS_COST = 259815;
12
+ // 0xef9037f992645a9ecf26ddbdf65690a71acbffce2cc68445c869bb9707cb706a
13
+ // 0x77aa06350df079a077147f1051b10e0612542eb3aff3ae1b3d4004341cb64690
14
+ const BUFFER_WRAP_UNWRAP_GAS_COST = 155921;
15
+
16
+ export function getGasCost(steps: Step[]): number {
17
+ if (steps.length === 2) {
18
+ // Partial boosted/buffer swap:
19
+ // token[wrap]wrappedToken[swap]wrappedToken or
20
+ // wrappedToken[swap]wrappedToken[unwrap]token
21
+ return PARTIAL_BOOSTED_SWAP_GAS_COST;
22
+ } else if (steps.length === 3) {
23
+ // Full boosted/buffer swap: token[wrap]wrappedToken[swap]wrappedToken[unwrap]token
24
+ return FULL_BOOSTED_SWAP_GAS_COST;
25
+ } else {
26
+ switch (steps[0].poolState.poolType) {
27
+ case 'WEIGHTED':
28
+ return WEIGHTED_GAS_COST;
29
+ case 'STABLE':
30
+ return STABLE_GAS_COST;
31
+ case 'BUFFER':
32
+ return BUFFER_WRAP_UNWRAP_GAS_COST;
33
+ default:
34
+ return WEIGHTED_GAS_COST;
35
+ }
36
+ }
37
+ }