@paraswap/dex-lib 4.1.7-pub-sub → 4.1.8

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 (360) hide show
  1. package/.idea/codeStyles/Project.xml +59 -0
  2. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/paraswap-dex-lib.iml +12 -0
  6. package/.idea/vcs.xml +6 -0
  7. package/build/dex/angle-staked-stable/angle-staked-stable.js +2 -1
  8. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -1
  9. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -1
  10. package/build/dex/balancer-v1/config.js +2 -1
  11. package/build/dex/balancer-v1/config.js.map +1 -1
  12. package/build/dex/generic-rfq/generic-rfq.js +2 -1
  13. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  14. package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -4
  15. package/build/dex/generic-rfq/rate-fetcher.js +20 -65
  16. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  17. package/build/dex/weth/weth.js +2 -1
  18. package/build/dex/weth/weth.js.map +1 -1
  19. package/build/dex/zerox/index.d.ts +1 -1
  20. package/build/dex/zerox/index.js.map +1 -1
  21. package/build/lib/pub-sub.d.ts +0 -17
  22. package/build/lib/pub-sub.js +4 -84
  23. package/build/lib/pub-sub.js.map +1 -1
  24. package/package.json +1 -1
  25. package/scripts/get-uniswap-v3-dexes.ts +64 -0
  26. package/src/abi/balancer-v3/directionalFeeHook.json +677 -677
  27. package/src/abi/balancer-v3/stableSurgeHook.json +975 -975
  28. package/src/dex/aave-gsm/aave-gsm-gas-estimation.test.ts +32 -0
  29. package/src/dex/aave-v2/aave-v2-gas-estimation.test.ts +28 -0
  30. package/src/dex/aave-v3/aave-v3-gas-estimation.test.ts +66 -0
  31. package/src/dex/aave-v3-stata/aave-v3-stata-gas-estimation.test.ts +41 -0
  32. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-gas-estimation.test.ts +41 -0
  33. package/src/dex/angle-staked-stable/angle-staked-stable-gas-estimation.test.ts +29 -0
  34. package/src/dex/angle-staked-stable/angle-staked-stable.ts +2 -1
  35. package/src/dex/angle-transmuter/angle-transmuter-gas-estimation.test.ts +41 -0
  36. package/src/dex/angle-transmuter/angle-transmuter.ts +0 -1
  37. package/src/dex/balancer-v1/balancer-v1-gas-estimation.test.ts +29 -0
  38. package/src/dex/balancer-v1/config.ts +2 -1
  39. package/src/dex/balancer-v2/balancer-v2-gas-estimation.test.ts +98 -0
  40. package/src/dex/balancer-v3/balancer-v3-gas-estimation.test.ts +30 -0
  41. package/src/dex/bancor/bancor-gas-estimation.test.ts +30 -0
  42. package/src/dex/bebop/bebop-gas-estimation.test.ts +30 -0
  43. package/src/dex/concentrator-arusd/concentrator-arusd-gas-estimation.test.ts +29 -0
  44. package/src/dex/curve-v1/curve-v1-gas-estimation.test.ts +29 -0
  45. package/src/dex/curve-v2/curve-v2-gas-estimation.test.ts +29 -0
  46. package/src/dex/fluid-dex/fluid-dex-gas-estimation.test.ts +29 -0
  47. package/src/dex/fx-protocol-rusd/fx-protocol-rusd-gas-estimation.test.ts +29 -0
  48. package/src/dex/generic-rfq/generic-rfq.ts +6 -1
  49. package/src/dex/generic-rfq/rate-fetcher.ts +47 -112
  50. package/src/dex/hashflow/hashflow-gas-estimation.test.ts +30 -0
  51. package/src/dex/idle-dao/idle-dao--gas-estimation.test.ts +30 -0
  52. package/src/dex/lido/lido-gas-estimation.test.ts +29 -0
  53. package/src/dex/lite-psm/lite-psm-gas-estimation.test.ts +34 -0
  54. package/src/dex/maker-psm/maker-psm-gas-estimation.test.ts +34 -0
  55. package/src/dex/maverick-v1/maverick-v1-gas-estimation.test.ts +29 -0
  56. package/src/dex/maverick-v2/maverick-v2-gas-estimation.test.ts +29 -0
  57. package/src/dex/pancakeswap-v3/pancakeswap-v3-gas-estimation.test.ts +29 -0
  58. package/src/dex/polygon-migrator/polygon-migrator-gas-estimation.test.ts +41 -0
  59. package/src/dex/sky-converter/sky-converter-gas-estimation.test.ts +78 -0
  60. package/src/dex/solidly/solidly-gas-estimation.test.ts +29 -0
  61. package/src/dex/solidly-v3/solidly-v3-gas-estimation.test.ts +29 -0
  62. package/src/dex/spark/spark-gas-estimation.test.ts +29 -0
  63. package/src/dex/stader/stader-gas-estimation.test.ts +29 -0
  64. package/src/dex/stkgho/stkgho-gas-estimation.test.ts +29 -0
  65. package/src/dex/swaap-v2/swaap-v2-estimation.test.ts +29 -0
  66. package/src/dex/swell/swell-estimation.test.ts +29 -0
  67. package/src/dex/trader-joe-v2.1/trader-joe-v2.1-gas-estimation.test.ts +29 -0
  68. package/src/dex/uniswap-v2/uniswap-v2-gas-estimation.test.ts +98 -0
  69. package/src/dex/uniswap-v3/uniswap-v3-gas-estimation.test.ts +98 -0
  70. package/src/dex/usual/usual-gas-estimation.test.ts +54 -0
  71. package/src/dex/usual-pp/usual-pp-gas-estimation.test.ts +29 -0
  72. package/src/dex/weth/weth-gas-estimation.test.ts +42 -0
  73. package/src/dex/weth/weth.ts +3 -1
  74. package/src/dex/wombat/wombat-gas-estimation.test.ts +29 -0
  75. package/src/dex/wsteth/wsteth-gas-estimation.test.ts +41 -0
  76. package/src/dex/wusdm/wusdm-gas-estimation.test.ts +41 -0
  77. package/src/lib/pub-sub.ts +3 -107
  78. package/tests/constants-e2e.ts +8 -0
  79. package/tests/tenderly-simulation-new.test.ts +151 -0
  80. package/tests/tenderly-simulation-new.ts +698 -0
  81. package/tests/token-storage-slots.json +532 -0
  82. package/tests/utils-e2e.ts +137 -1
  83. package/build/abi/AaveV1_lending_pool.json +0 -27
  84. package/build/abi/Aave_GSM.json +0 -751
  85. package/build/abi/Balancer.json +0 -257
  86. package/build/abi/BalancerV2.json +0 -1179
  87. package/build/abi/RamsesV2Pool.abi.json +0 -1554
  88. package/build/abi/RamsesV2Quoter.abi.json +0 -274
  89. package/build/abi/USDM.json +0 -807
  90. package/build/abi/UniswapV2Router.json +0 -397
  91. package/build/abi/angle-transmuter/ChainlinkAccessControlledOffchainAggregator.json +0 -1246
  92. package/build/abi/angle-transmuter/ChainlinkEACAggregatorProxy.json +0 -509
  93. package/build/abi/curve-v1/CurveBUSDv2.abi.json +0 -1356
  94. package/build/abi/curve-v1/CurveTokenV1.json +0 -305
  95. package/build/abi/curve-v1/CurveTokenV2.json +0 -318
  96. package/build/abi/curve-v1/CurveV1StableNg.json +0 -1452
  97. package/build/abi/curve-v1/CurveV2Swap.json +0 -700
  98. package/build/abi/curve-v1/FactoryCryptoRegistry.json +0 -316
  99. package/build/abi/curve-v1/FactoryRegistry.json +0 -508
  100. package/build/abi/curve-v1/StableSwapAave.json +0 -1152
  101. package/build/abi/curve-v1/StableSwapBUSD.json +0 -814
  102. package/build/abi/curve-v1/StableSwapCompound.json +0 -814
  103. package/build/abi/curve-v1/StableSwapIDLE.json +0 -1253
  104. package/build/abi/curve-v1/StableSwapPax.json +0 -865
  105. package/build/abi/curve-v1/StableSwapSnow.json +0 -900
  106. package/build/abi/curve-v1/StableSwapUSDN.json +0 -1004
  107. package/build/abi/curve-v1/StableSwapUSDT.json +0 -814
  108. package/build/abi/curve-v1/StableSwapY.json +0 -814
  109. package/build/abi/inception/inception-ineth-pool.json +0 -1062
  110. package/build/abi/inception/inception-ineth.json +0 -609
  111. package/build/abi/inception/inception-ratio-feed.json +0 -329
  112. package/build/abi/inception/inception-vault.json +0 -991
  113. package/build/abi/kyberdmm/kyber-storage.abi.json +0 -824
  114. package/build/abi/kyberdmm.abi.json +0 -1148
  115. package/build/abi/maverick-v2/MaverickV2Quoter.json +0 -278
  116. package/build/abi/nerve/nerve-metapool.json +0 -790
  117. package/build/abi/platypus/asset.json +0 -490
  118. package/build/abi/platypus/avax-pool.json +0 -820
  119. package/build/abi/platypus/oracle.json +0 -119
  120. package/build/abi/platypus/pool.json +0 -677
  121. package/build/abi/smardex/all/smardex-router.json +0 -648
  122. package/build/abi/smardex/layer-1/smardex-factory.json +0 -242
  123. package/build/abi/smardex/layer-1/smardex-pool.json +0 -506
  124. package/build/abi/smardex/layer-2/smardex-factory.json +0 -185
  125. package/build/abi/smardex/layer-2/smardex-pool.json +0 -578
  126. package/build/abi/swaap-v1/pool.json +0 -1346
  127. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  128. package/build/abi/velodrome-slipstream/VelodromeSlipstreamQuoterV2.abi.json +0 -267
  129. package/build/dex/aave-v1/aave-v1.d.ts +0 -34
  130. package/build/dex/aave-v1/aave-v1.js +0 -180
  131. package/build/dex/aave-v1/aave-v1.js.map +0 -1
  132. package/build/dex/aave-v1/config.d.ts +0 -11
  133. package/build/dex/aave-v1/config.js +0 -20
  134. package/build/dex/aave-v1/config.js.map +0 -1
  135. package/build/dex/aave-v1/tokens-mainnet.json +0 -134
  136. package/build/dex/aave-v1/tokens.d.ts +0 -3
  137. package/build/dex/aave-v1/tokens.js +0 -50
  138. package/build/dex/aave-v1/tokens.js.map +0 -1
  139. package/build/dex/aave-v1/types.d.ts +0 -12
  140. package/build/dex/aave-v1/types.js +0 -3
  141. package/build/dex/aave-v1/types.js.map +0 -1
  142. package/build/dex/balancer-v1/balancer-pools.json +0 -33333
  143. package/build/dex/bebop/websocket-fetcher.d.ts +0 -35
  144. package/build/dex/bebop/websocket-fetcher.js +0 -87
  145. package/build/dex/bebop/websocket-fetcher.js.map +0 -1
  146. package/build/dex/idle-dao/idle-dao-pool.d.ts +0 -56
  147. package/build/dex/idle-dao/idle-dao-pool.js +0 -176
  148. package/build/dex/idle-dao/idle-dao-pool.js.map +0 -1
  149. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +0 -16
  150. package/build/dex/idle-dao/idle-dao-pooling-pool.js +0 -57
  151. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +0 -1
  152. package/build/dex/idle-dao/scripts.d.ts +0 -9
  153. package/build/dex/idle-dao/scripts.js +0 -552
  154. package/build/dex/idle-dao/scripts.js.map +0 -1
  155. package/build/dex/inception/config.d.ts +0 -4
  156. package/build/dex/inception/config.js +0 -109
  157. package/build/dex/inception/config.js.map +0 -1
  158. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  159. package/build/dex/inception/inception-event-pool.js +0 -51
  160. package/build/dex/inception/inception-event-pool.js.map +0 -1
  161. package/build/dex/inception/inception-native.d.ts +0 -43
  162. package/build/dex/inception/inception-native.js +0 -131
  163. package/build/dex/inception/inception-native.js.map +0 -1
  164. package/build/dex/inception/inception-pool.d.ts +0 -18
  165. package/build/dex/inception/inception-pool.js +0 -32
  166. package/build/dex/inception/inception-pool.js.map +0 -1
  167. package/build/dex/inception/inception-price-feed.d.ts +0 -19
  168. package/build/dex/inception/inception-price-feed.js +0 -51
  169. package/build/dex/inception/inception-price-feed.js.map +0 -1
  170. package/build/dex/inception/inception.d.ts +0 -43
  171. package/build/dex/inception/inception.js +0 -204
  172. package/build/dex/inception/inception.js.map +0 -1
  173. package/build/dex/inception/tokens.d.ts +0 -9
  174. package/build/dex/inception/tokens.js +0 -28
  175. package/build/dex/inception/tokens.js.map +0 -1
  176. package/build/dex/inception/types.d.ts +0 -22
  177. package/build/dex/inception/types.js +0 -3
  178. package/build/dex/inception/types.js.map +0 -1
  179. package/build/dex/inception/utils.d.ts +0 -6
  180. package/build/dex/inception/utils.js +0 -37
  181. package/build/dex/inception/utils.js.map +0 -1
  182. package/build/dex/platypus/asset.d.ts +0 -14
  183. package/build/dex/platypus/asset.js +0 -97
  184. package/build/dex/platypus/asset.js.map +0 -1
  185. package/build/dex/platypus/config.d.ts +0 -11
  186. package/build/dex/platypus/config.js +0 -69
  187. package/build/dex/platypus/config.js.map +0 -1
  188. package/build/dex/platypus/platypus.d.ts +0 -63
  189. package/build/dex/platypus/platypus.js +0 -473
  190. package/build/dex/platypus/platypus.js.map +0 -1
  191. package/build/dex/platypus/pool-avax.d.ts +0 -8
  192. package/build/dex/platypus/pool-avax.js +0 -54
  193. package/build/dex/platypus/pool-avax.js.map +0 -1
  194. package/build/dex/platypus/pool-base.d.ts +0 -19
  195. package/build/dex/platypus/pool-base.js +0 -86
  196. package/build/dex/platypus/pool-base.js.map +0 -1
  197. package/build/dex/platypus/pool-pure.d.ts +0 -8
  198. package/build/dex/platypus/pool-pure.js +0 -37
  199. package/build/dex/platypus/pool-pure.js.map +0 -1
  200. package/build/dex/platypus/pool-subscriber.d.ts +0 -14
  201. package/build/dex/platypus/pool-subscriber.js +0 -167
  202. package/build/dex/platypus/pool-subscriber.js.map +0 -1
  203. package/build/dex/platypus/pool.d.ts +0 -8
  204. package/build/dex/platypus/pool.js +0 -58
  205. package/build/dex/platypus/pool.js.map +0 -1
  206. package/build/dex/platypus/types.d.ts +0 -92
  207. package/build/dex/platypus/types.js +0 -10
  208. package/build/dex/platypus/types.js.map +0 -1
  209. package/build/dex/quickswap/spiritswap-v3.d.ts +0 -6
  210. package/build/dex/quickswap/spiritswap-v3.js +0 -19
  211. package/build/dex/quickswap/spiritswap-v3.js.map +0 -1
  212. package/build/dex/smardex/config.d.ts +0 -4
  213. package/build/dex/smardex/config.js +0 -64
  214. package/build/dex/smardex/config.js.map +0 -1
  215. package/build/dex/smardex/constants.d.ts +0 -18
  216. package/build/dex/smardex/constants.js +0 -33
  217. package/build/dex/smardex/constants.js.map +0 -1
  218. package/build/dex/smardex/sdk/constants.d.ts +0 -6
  219. package/build/dex/smardex/sdk/constants.js +0 -13
  220. package/build/dex/smardex/sdk/constants.js.map +0 -1
  221. package/build/dex/smardex/sdk/core.d.ts +0 -113
  222. package/build/dex/smardex/sdk/core.js +0 -499
  223. package/build/dex/smardex/sdk/core.js.map +0 -1
  224. package/build/dex/smardex/sdk/errors.d.ts +0 -15
  225. package/build/dex/smardex/sdk/errors.js +0 -22
  226. package/build/dex/smardex/sdk/errors.js.map +0 -1
  227. package/build/dex/smardex/sdk/types.d.ts +0 -62
  228. package/build/dex/smardex/sdk/types.js +0 -3
  229. package/build/dex/smardex/sdk/types.js.map +0 -1
  230. package/build/dex/smardex/sdk/utils.d.ts +0 -44
  231. package/build/dex/smardex/sdk/utils.js +0 -133
  232. package/build/dex/smardex/sdk/utils.js.map +0 -1
  233. package/build/dex/smardex/smardex-event-pool.d.ts +0 -28
  234. package/build/dex/smardex/smardex-event-pool.js +0 -119
  235. package/build/dex/smardex/smardex-event-pool.js.map +0 -1
  236. package/build/dex/smardex/smardex.d.ts +0 -65
  237. package/build/dex/smardex/smardex.js +0 -519
  238. package/build/dex/smardex/smardex.js.map +0 -1
  239. package/build/dex/smardex/types.d.ts +0 -55
  240. package/build/dex/smardex/types.js +0 -3
  241. package/build/dex/smardex/types.js.map +0 -1
  242. package/build/dex/solidly/forks-override/cone.d.ts +0 -22
  243. package/build/dex/solidly/forks-override/cone.js +0 -53
  244. package/build/dex/solidly/forks-override/cone.js.map +0 -1
  245. package/build/dex/solidly/forks-override/solisnek.d.ts +0 -8
  246. package/build/dex/solidly/forks-override/solisnek.js +0 -15
  247. package/build/dex/solidly/forks-override/solisnek.js.map +0 -1
  248. package/build/dex/swaap-v1/config.d.ts +0 -17
  249. package/build/dex/swaap-v1/config.js +0 -56
  250. package/build/dex/swaap-v1/config.js.map +0 -1
  251. package/build/dex/swaap-v1/constants.d.ts +0 -6
  252. package/build/dex/swaap-v1/constants.js +0 -17
  253. package/build/dex/swaap-v1/constants.js.map +0 -1
  254. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +0 -25
  255. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +0 -62
  256. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +0 -1
  257. package/build/dex/swaap-v1/libraries/Const.d.ts +0 -18
  258. package/build/dex/swaap-v1/libraries/Const.js +0 -26
  259. package/build/dex/swaap-v1/libraries/Const.js.map +0 -1
  260. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +0 -77
  261. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +0 -316
  262. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +0 -1
  263. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +0 -75
  264. package/build/dex/swaap-v1/libraries/LogExpMath.js +0 -418
  265. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +0 -1
  266. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +0 -185
  267. package/build/dex/swaap-v1/libraries/MathMMM.js +0 -453
  268. package/build/dex/swaap-v1/libraries/MathMMM.js.map +0 -1
  269. package/build/dex/swaap-v1/libraries/Num.d.ts +0 -31
  270. package/build/dex/swaap-v1/libraries/Num.js +0 -167
  271. package/build/dex/swaap-v1/libraries/Num.js.map +0 -1
  272. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +0 -23
  273. package/build/dex/swaap-v1/libraries/PoolQuotations.js +0 -131
  274. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +0 -1
  275. package/build/dex/swaap-v1/libraries/Struct.d.ts +0 -56
  276. package/build/dex/swaap-v1/libraries/Struct.js +0 -3
  277. package/build/dex/swaap-v1/libraries/Struct.js.map +0 -1
  278. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +0 -45
  279. package/build/dex/swaap-v1/swaap-v1-pool.js +0 -656
  280. package/build/dex/swaap-v1/swaap-v1-pool.js.map +0 -1
  281. package/build/dex/swaap-v1/swaap-v1.d.ts +0 -62
  282. package/build/dex/swaap-v1/swaap-v1.js +0 -379
  283. package/build/dex/swaap-v1/swaap-v1.js.map +0 -1
  284. package/build/dex/swaap-v1/types.d.ts +0 -106
  285. package/build/dex/swaap-v1/types.js +0 -9
  286. package/build/dex/swaap-v1/types.js.map +0 -1
  287. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +0 -16
  288. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -16
  289. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -16
  290. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -16
  291. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -16
  292. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -16
  293. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -16
  294. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdt-usdc-dai.json +0 -16
  295. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-eth-usdc.json +0 -9
  296. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-eth.json +0 -9
  297. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-wbtc.json +0 -9
  298. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-eth-steth.json +0 -9
  299. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-steth-eth.json +0 -9
  300. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-usdc-usdt.json +0 -9
  301. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-eth-usdc.json +0 -9
  302. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-eth.json +0 -9
  303. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-usdt.json +0 -9
  304. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -12
  305. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -7
  306. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -7
  307. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -7
  308. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -7
  309. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -12
  310. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-eth-usdc.json +0 -7
  311. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-usdc-eth.json +0 -7
  312. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +0 -78
  313. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -81
  314. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -78
  315. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -78
  316. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -81
  317. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -81
  318. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -81
  319. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdt-usdc-dai.json +0 -81
  320. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-eth-usdc.json +0 -64
  321. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-eth.json +0 -85
  322. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-wbtc.json +0 -64
  323. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-eth-steth.json +0 -52
  324. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-steth-eth.json +0 -52
  325. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-usdc-usdt.json +0 -52
  326. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-eth-usdc.json +0 -55
  327. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-eth.json +0 -55
  328. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-usdt.json +0 -55
  329. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -23
  330. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -37
  331. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -23
  332. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -23
  333. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -51
  334. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-univ3-usdt-dai-eth.json +0 -58
  335. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -23
  336. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -23
  337. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -9
  338. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -16
  339. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +0 -23
  340. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -12
  341. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -7
  342. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -12
  343. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -12
  344. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -7
  345. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-univ3-usdt-dai-eth.json +0 -7
  346. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -7
  347. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -7
  348. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -7
  349. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -7
  350. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -130
  351. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -136
  352. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -100
  353. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -100
  354. package/build/executor/fixtures/executor02/routes/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -166
  355. package/build/executor/fixtures/executor02/routes/price-route-multiswap-univ3-usdt-dai-eth.json +0 -190
  356. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -114
  357. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -114
  358. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -55
  359. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -73
  360. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +0 -82
@@ -1,656 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SwaapV1Pool = void 0;
7
- const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
8
- const pool_json_1 = __importDefault(require("../../abi/swaap-v1/pool.json"));
9
- const chainlink_json_1 = __importDefault(require("../../abi/chainlink.json"));
10
- const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
11
- const abi_1 = require("@ethersproject/abi");
12
- const bytes_1 = require("@ethersproject/bytes");
13
- class SwaapV1Pool extends stateful_event_subscriber_1.StatefulEventSubscriber {
14
- constructor(dexKey, network, pool, dexHelper) {
15
- super(dexKey, pool.id, dexHelper, dexHelper.getLogger(`${dexKey}-${network}-${pool.id}`));
16
- this.pool = pool;
17
- this.dexHelper = dexHelper;
18
- this.id = pool.id;
19
- this.tokens = pool.tokens.map(t => t.address);
20
- this.addressesSubscribed = [pool.id];
21
- this.oracleTokenMap = pool.tokens.reduce((acc, t) => {
22
- this.addressesSubscribed.push(t.oracleInitialState.aggregator.toLowerCase());
23
- return {
24
- ...acc,
25
- [t.oracleInitialState.aggregator.toLowerCase()]: t.address,
26
- };
27
- }, {});
28
- }
29
- // Function which transforms the given state for the given log event.
30
- // If the provided log does not affect the state, return null.
31
- async processLog(state, log, blockHeader) {
32
- try {
33
- const tokenAddress = this.oracleTokenMap[log.address.toLowerCase()];
34
- if (tokenAddress) {
35
- // log comes from a subscribed oracle
36
- if (log.topics[0] != SwaapV1Pool.ANSWER_UPDATED_TOPIC)
37
- return null;
38
- const decoded = SwaapV1Pool.proxyInterface.decodeEventLog('AnswerUpdated', log.data, log.topics);
39
- const latestRoundId = Number(decoded.roundId.toString());
40
- const latestRoundData = {
41
- answer: BigInt(decoded.current.toString()),
42
- timestamp: BigInt(decoded.updatedAt.toString()),
43
- };
44
- let previousRoundId = state.oracles[tokenAddress].latestRoundId;
45
- if (previousRoundId == latestRoundId) {
46
- return null;
47
- }
48
- let updatedHistoricalState = {
49
- ...state.oracles[tokenAddress].historicalOracleState,
50
- };
51
- const roundLookbackWindow = (state.parameters.priceStatisticsLookbackInRound - 1) *
52
- state.parameters.priceStatisticsLookbackStepInRound;
53
- // Case where roundIds are skipped
54
- while (latestRoundId > previousRoundId + 1) {
55
- delete updatedHistoricalState[previousRoundId - roundLookbackWindow];
56
- updatedHistoricalState[++previousRoundId] = {
57
- answer: 0n,
58
- timestamp: 0n,
59
- };
60
- }
61
- delete updatedHistoricalState[previousRoundId - roundLookbackWindow];
62
- updatedHistoricalState[latestRoundId] = latestRoundData;
63
- return {
64
- ...state,
65
- oracles: {
66
- ...state.oracles,
67
- [tokenAddress]: {
68
- ...state.oracles[tokenAddress],
69
- latestRoundId: latestRoundId,
70
- historicalOracleState: updatedHistoricalState,
71
- },
72
- },
73
- };
74
- }
75
- else if (this.pool.id === log.address.toLowerCase()) {
76
- // log comes from the Pool
77
- // Check if the event is anonymous or not
78
- let isAnonymousEvent = true;
79
- const nameOrSignatureOrTopic = log.topics[0];
80
- if ((0, bytes_1.isHexString)(nameOrSignatureOrTopic)) {
81
- const topichash = nameOrSignatureOrTopic.toLowerCase();
82
- for (const name of Object.keys(SwaapV1Pool.poolInterface.events)) {
83
- if (topichash === SwaapV1Pool.poolInterface.getEventTopic(name)) {
84
- isAnonymousEvent = false;
85
- break;
86
- }
87
- }
88
- }
89
- if (isAnonymousEvent) {
90
- // anonymous events
91
- const topic0 = log.topics[0];
92
- switch (topic0) {
93
- // setSwapFee
94
- case SwaapV1Pool.SWAP_FEE_TOPIC: {
95
- const value = BigInt(SwaapV1Pool.getValueFromAnonymousEvent(log));
96
- return {
97
- ...state,
98
- parameters: {
99
- ...state.parameters,
100
- swapFee: value,
101
- },
102
- };
103
- }
104
- // setPriceStatisticsLookbackInRound
105
- case SwaapV1Pool.LB_IN_ROUND_TOPIC: {
106
- const value = Number(SwaapV1Pool.getValueFromAnonymousEvent(log));
107
- const oldRoundLookbackWindow = (state.parameters.priceStatisticsLookbackInRound - 1) *
108
- state.parameters.priceStatisticsLookbackStepInRound;
109
- const newRoundLookbackWindow = (value - 1) *
110
- state.parameters.priceStatisticsLookbackStepInRound;
111
- const tokens = Object.keys(state.oracles);
112
- if (value > state.parameters.priceStatisticsLookbackInRound) {
113
- const multiCallInputs = tokens
114
- .map((token) => {
115
- return [
116
- {
117
- target: state.oracles[token].oraclesBindState.proxy,
118
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('latestRound'),
119
- },
120
- ];
121
- })
122
- .flat();
123
- const multicallOutputs = (await this.dexHelper.multiContract.methods
124
- .aggregate(multiCallInputs)
125
- .call({}, blockHeader.number)).returnData;
126
- let i = 0;
127
- const latestRoundIdsBN = tokens.reduce((acc, token) => {
128
- return {
129
- ...acc,
130
- [token]: BigInt(SwaapV1Pool.proxyInterface
131
- .decodeFunctionResult('latestRound', multicallOutputs[i++])[0]
132
- .toString()),
133
- };
134
- }, {});
135
- const missingHistoricalData = await this.getHistoricalRoundsData(tokens, newRoundLookbackWindow, latestRoundIdsBN, state.oracles, blockHeader.number);
136
- const updatedOraclesData = tokens.reduce((acc, token) => {
137
- return {
138
- ...acc,
139
- [token]: {
140
- oraclesBindState: {
141
- ...state.oracles[token].oraclesBindState,
142
- },
143
- latestRoundId: state.oracles[token].latestRoundId,
144
- historicalOracleState: missingHistoricalData[token],
145
- },
146
- };
147
- }, {});
148
- return {
149
- ...state,
150
- parameters: {
151
- ...state.parameters,
152
- priceStatisticsLookbackInRound: value,
153
- },
154
- oracles: { ...updatedOraclesData },
155
- };
156
- }
157
- else if (value < state.parameters.priceStatisticsLookbackInRound) {
158
- const updatedOraclesData = tokens.reduce((acc, token) => {
159
- let historicalData = {
160
- ...state.oracles[token].historicalOracleState,
161
- };
162
- let roundId = state.oracles[token].latestRoundId - oldRoundLookbackWindow;
163
- const endRoundId = state.oracles[token].latestRoundId - newRoundLookbackWindow;
164
- while (roundId < endRoundId) {
165
- delete historicalData[roundId++];
166
- }
167
- return {
168
- ...acc,
169
- [token]: {
170
- oraclesBindState: {
171
- ...state.oracles[token].oraclesBindState,
172
- },
173
- latestRoundId: state.oracles[token].latestRoundId,
174
- historicalOracleState: historicalData,
175
- },
176
- };
177
- }, {});
178
- return {
179
- ...state,
180
- parameters: {
181
- ...state.parameters,
182
- priceStatisticsLookbackInRound: value,
183
- },
184
- oracles: updatedOraclesData,
185
- };
186
- }
187
- return null;
188
- }
189
- // setPriceStatisticsLookbackStepInRound
190
- case SwaapV1Pool.LB_STEP_IN_ROUND_TOPIC: {
191
- const value = Number(SwaapV1Pool.getValueFromAnonymousEvent(log));
192
- const oldRoundLookbackWindow = (state.parameters.priceStatisticsLookbackInRound - 1) *
193
- state.parameters.priceStatisticsLookbackStepInRound;
194
- const newRoundLookbackWindow = (state.parameters.priceStatisticsLookbackInRound - 1) * value;
195
- const tokens = Object.keys(state.oracles);
196
- if (value > state.parameters.priceStatisticsLookbackStepInRound) {
197
- const multiCallInputs = tokens
198
- .map((token) => {
199
- return [
200
- {
201
- target: state.oracles[token].oraclesBindState.proxy,
202
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('latestRound'),
203
- },
204
- ];
205
- })
206
- .flat();
207
- const multicallOutputs = (await this.dexHelper.multiContract.methods
208
- .aggregate(multiCallInputs)
209
- .call({}, blockHeader.number)).returnData;
210
- let i = 0;
211
- const latestRoundIdsBN = tokens.reduce((acc, token) => {
212
- return {
213
- ...acc,
214
- [token]: BigInt(SwaapV1Pool.proxyInterface
215
- .decodeFunctionResult('latestRound', multicallOutputs[i++])[0]
216
- .toString()),
217
- };
218
- }, {});
219
- const missingHistoricalData = await this.getHistoricalRoundsData(tokens, newRoundLookbackWindow, latestRoundIdsBN, state.oracles, blockHeader.number);
220
- const updatedOraclesData = tokens.reduce((acc, token) => {
221
- return {
222
- ...acc,
223
- [token]: {
224
- oraclesBindState: {
225
- ...state.oracles[token].oraclesBindState,
226
- },
227
- latestRoundId: state.oracles[token].latestRoundId,
228
- historicalOracleState: missingHistoricalData[token],
229
- },
230
- };
231
- }, {});
232
- return {
233
- ...state,
234
- parameters: {
235
- ...state.parameters,
236
- priceStatisticsLookbackStepInRound: value,
237
- },
238
- oracles: { ...updatedOraclesData },
239
- };
240
- }
241
- else if (value < state.parameters.priceStatisticsLookbackStepInRound) {
242
- const updatedOraclesData = tokens.reduce((acc, token) => {
243
- let historicalData = {
244
- ...state.oracles[token].historicalOracleState,
245
- };
246
- let roundId = state.oracles[token].latestRoundId - oldRoundLookbackWindow;
247
- const endRoundId = state.oracles[token].latestRoundId - newRoundLookbackWindow;
248
- while (roundId < endRoundId) {
249
- delete historicalData[roundId++];
250
- }
251
- return {
252
- ...acc,
253
- [token]: {
254
- oraclesBindState: {
255
- ...state.oracles[token].oraclesBindState,
256
- },
257
- latestRoundId: state.oracles[token].latestRoundId,
258
- historicalOracleState: historicalData,
259
- },
260
- };
261
- }, {});
262
- return {
263
- ...state,
264
- parameters: {
265
- ...state.parameters,
266
- priceStatisticsLookbackStepInRound: value,
267
- },
268
- oracles: updatedOraclesData,
269
- };
270
- }
271
- return {
272
- ...state,
273
- parameters: {
274
- ...state.parameters,
275
- priceStatisticsLookbackStepInRound: value,
276
- },
277
- };
278
- }
279
- // setDynamicCoverageFeesZ
280
- case SwaapV1Pool.Z_TOPIC: {
281
- const value = BigInt(SwaapV1Pool.getValueFromAnonymousEvent(log));
282
- return {
283
- ...state,
284
- parameters: {
285
- ...state.parameters,
286
- dynamicCoverageFeesZ: value,
287
- },
288
- };
289
- }
290
- // setDynamicCoverageFeesHorizon
291
- case SwaapV1Pool.HORIZON_TOPIC: {
292
- const value = BigInt(SwaapV1Pool.getValueFromAnonymousEvent(log));
293
- return {
294
- ...state,
295
- parameters: {
296
- ...state.parameters,
297
- dynamicCoverageFeesHorizon: value,
298
- },
299
- };
300
- }
301
- // setPriceStatisticsLookbackInSec
302
- case SwaapV1Pool.LB_IN_SEC_TOPIC: {
303
- const value = BigInt(SwaapV1Pool.getValueFromAnonymousEvent(log));
304
- return {
305
- ...state,
306
- parameters: {
307
- ...state.parameters,
308
- priceStatisticsLookbackInSec: value,
309
- },
310
- };
311
- }
312
- // setMaxPriceUnpegRatio
313
- case SwaapV1Pool.MAX_UNPEG_TOPIC: {
314
- const value = BigInt(SwaapV1Pool.getValueFromAnonymousEvent(log));
315
- return {
316
- ...state,
317
- parameters: {
318
- ...state.parameters,
319
- maxPriceUnpegRatio: value,
320
- },
321
- };
322
- }
323
- }
324
- }
325
- else {
326
- // named events
327
- const parsed = SwaapV1Pool.poolInterface.parseLog(log);
328
- switch (parsed.name) {
329
- case 'LOG_JOIN': {
330
- const tokenIn = parsed.args.tokenIn.toString().toLowerCase();
331
- const tokenAmountIn = BigInt(parsed.args.tokenAmountIn.toString());
332
- return {
333
- ...state,
334
- liquidities: {
335
- ...state.liquidities,
336
- [tokenIn]: {
337
- ...state.liquidities[tokenIn],
338
- balance: state.liquidities[tokenIn].balance + tokenAmountIn,
339
- },
340
- },
341
- };
342
- }
343
- case 'LOG_EXIT': {
344
- const tokenOut = parsed.args.tokenOut.toString().toLowerCase();
345
- const tokenAmountOut = BigInt(parsed.args.tokenAmountOut.toString());
346
- return {
347
- ...state,
348
- liquidities: {
349
- ...state.liquidities,
350
- [tokenOut]: {
351
- ...state.liquidities[tokenOut],
352
- balance: state.liquidities[tokenOut].balance - tokenAmountOut,
353
- },
354
- },
355
- };
356
- }
357
- case 'LOG_SWAP': {
358
- const tokenIn = parsed.args.tokenIn.toString().toLowerCase();
359
- const tokenAmountIn = BigInt(parsed.args.tokenAmountIn.toString());
360
- const tokenOut = parsed.args.tokenOut.toString().toLowerCase();
361
- const tokenAmountOut = BigInt(parsed.args.tokenAmountOut.toString());
362
- return {
363
- ...state,
364
- liquidities: {
365
- ...state.liquidities,
366
- [tokenIn]: {
367
- ...state.liquidities[tokenIn],
368
- balance: state.liquidities[tokenIn].balance + tokenAmountIn,
369
- },
370
- [tokenOut]: {
371
- ...state.liquidities[tokenOut],
372
- balance: state.liquidities[tokenOut].balance - tokenAmountOut,
373
- },
374
- },
375
- };
376
- }
377
- default: {
378
- return null;
379
- }
380
- }
381
- }
382
- }
383
- return null;
384
- }
385
- catch (e) {
386
- this.logger.error('Failed to decode result', e);
387
- return null;
388
- }
389
- }
390
- async getTokensAndParameters(blockNumber) {
391
- const multiCallInputs = [
392
- {
393
- target: this.pool.id,
394
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getTokens'),
395
- },
396
- {
397
- target: this.pool.id,
398
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getCoverageParameters'),
399
- },
400
- {
401
- target: this.pool.id,
402
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getSwapFee'),
403
- },
404
- ];
405
- const returnData = (await this.dexHelper.multiContract.methods
406
- .aggregate(multiCallInputs)
407
- .call({}, blockNumber)).returnData;
408
- let tokens = SwaapV1Pool.poolInterface.decodeFunctionResult('getTokens', returnData[0])[0];
409
- tokens = tokens.map(t => t.toLowerCase());
410
- const coverageParameters = SwaapV1Pool.poolInterface.decodeFunctionResult('getCoverageParameters', returnData[1]);
411
- const parameters = {
412
- swapFee: BigInt(SwaapV1Pool.poolInterface
413
- .decodeFunctionResult('getSwapFee', returnData[2])[0]
414
- .toString()),
415
- priceStatisticsLookbackInRound: Number(coverageParameters[0].toString()),
416
- priceStatisticsLookbackStepInRound: Number(coverageParameters[1].toString()),
417
- dynamicCoverageFeesZ: BigInt(coverageParameters[2].toString()),
418
- dynamicCoverageFeesHorizon: BigInt(coverageParameters[3].toString()),
419
- priceStatisticsLookbackInSec: BigInt(coverageParameters[4].toString()),
420
- maxPriceUnpegRatio: BigInt(coverageParameters[5].toString()),
421
- };
422
- return [tokens, parameters];
423
- }
424
- async getProxiesAndLiquidities(tokens, blockNumber) {
425
- let multiCallInputs = tokens
426
- .map(token => {
427
- return [
428
- {
429
- target: this.pool.id,
430
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getBalance', [token]),
431
- },
432
- {
433
- target: this.pool.id,
434
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getDenormalizedWeight', [token]),
435
- },
436
- {
437
- target: token,
438
- callData: SwaapV1Pool.erc20Interface.encodeFunctionData('decimals'),
439
- },
440
- ];
441
- })
442
- .flat();
443
- multiCallInputs = tokens.reduce((acc, token) => {
444
- return [
445
- ...acc,
446
- {
447
- target: this.pool.id,
448
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getTokenPriceOracle', [token]),
449
- },
450
- ].flat();
451
- }, multiCallInputs);
452
- let multicallOutputs = (await this.dexHelper.multiContract.methods
453
- .aggregate(multiCallInputs)
454
- .call({}, blockNumber)).returnData;
455
- let idx = 0;
456
- // get liquidities
457
- const liquidities = tokens.reduce((acc, token) => {
458
- const balance = BigInt(SwaapV1Pool.poolInterface
459
- .decodeFunctionResult('getBalance', multicallOutputs[idx++])[0]
460
- .toString());
461
- const initialWeight = BigInt(SwaapV1Pool.poolInterface
462
- .decodeFunctionResult('getDenormalizedWeight', multicallOutputs[idx++])[0]
463
- .toString());
464
- const decimals = parseInt(SwaapV1Pool.erc20Interface
465
- .decodeFunctionResult('decimals', multicallOutputs[idx++])[0]
466
- .toString());
467
- return {
468
- ...acc,
469
- [token]: {
470
- balance: balance,
471
- initialWeight: initialWeight,
472
- decimals: decimals,
473
- },
474
- };
475
- }, {});
476
- const oracles = tokens.reduce((acc, token) => {
477
- const oracle = SwaapV1Pool.poolInterface
478
- .decodeFunctionResult('getTokenPriceOracle', multicallOutputs[idx++])[0]
479
- .toString()
480
- .toLowerCase();
481
- return {
482
- ...acc,
483
- [token]: oracle,
484
- };
485
- }, {});
486
- return [oracles, liquidities];
487
- }
488
- async getOraclesData(tokens, proxies, // key: token, value: proxy
489
- parameters, blockNumber) {
490
- // aggregators
491
- let multiCallInputs = tokens.map((token) => {
492
- return {
493
- target: proxies[token],
494
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('aggregator'),
495
- };
496
- });
497
- // oracle's addresses
498
- let multicallOutputs = (await this.dexHelper.multiContract.methods
499
- .aggregate(multiCallInputs)
500
- .call({}, blockNumber)).returnData;
501
- let i = 0;
502
- const oracles = tokens.reduce((acc, token) => {
503
- return {
504
- ...acc,
505
- [token]: SwaapV1Pool.poolInterface
506
- .decodeFunctionResult('getTokenPriceOracle', multicallOutputs[i++])[0]
507
- .toString()
508
- .toLowerCase(),
509
- };
510
- }, {});
511
- multiCallInputs = tokens
512
- .map((token) => {
513
- return [
514
- {
515
- target: this.pool.id,
516
- callData: SwaapV1Pool.poolInterface.encodeFunctionData('getTokenOracleInitialPrice', [token]),
517
- },
518
- {
519
- target: proxies[token],
520
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('decimals'),
521
- },
522
- {
523
- target: proxies[token],
524
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('description'),
525
- },
526
- {
527
- target: proxies[token],
528
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('latestRoundData'),
529
- },
530
- ];
531
- })
532
- .flat();
533
- multicallOutputs = (await this.dexHelper.multiContract.methods
534
- .aggregate(multiCallInputs)
535
- .call({}, blockNumber)).returnData;
536
- let latestRoundIdsBN = {};
537
- i = 0;
538
- let oraclesData = tokens.reduce((acc, token) => {
539
- const oraclesBindState = {
540
- proxy: proxies[token],
541
- aggregator: oracles[token],
542
- price: BigInt(SwaapV1Pool.poolInterface
543
- .decodeFunctionResult('getTokenOracleInitialPrice', multicallOutputs[i++])[0]
544
- .toString()),
545
- decimals: Number(SwaapV1Pool.proxyInterface
546
- .decodeFunctionResult('decimals', multicallOutputs[i++])[0]
547
- .toString()),
548
- description: SwaapV1Pool.proxyInterface
549
- .decodeFunctionResult('description', multicallOutputs[i++])[0]
550
- .toString(),
551
- };
552
- const latestRoundData = SwaapV1Pool.proxyInterface.decodeFunctionResult('latestRoundData', multicallOutputs[i++]);
553
- const latestRoundId = BigInt(latestRoundData.roundId.toString());
554
- latestRoundIdsBN[token] = latestRoundId;
555
- return {
556
- ...acc,
557
- [token]: {
558
- oraclesBindState: oraclesBindState,
559
- latestRoundId: Number(latestRoundId % 2n ** 64n),
560
- historicalOracleState: {
561
- [Number(latestRoundId % 2n ** 64n)]: {
562
- answer: BigInt(latestRoundData.answer.toString()),
563
- timestamp: BigInt(latestRoundData.updatedAt.toString()),
564
- },
565
- },
566
- },
567
- };
568
- }, {});
569
- const roundLookbackWindow = (parameters.priceStatisticsLookbackInRound - 1) *
570
- parameters.priceStatisticsLookbackStepInRound;
571
- const historicalRoundsData = await this.getHistoricalRoundsData(tokens, roundLookbackWindow, latestRoundIdsBN, oraclesData, blockNumber);
572
- tokens.forEach(token => {
573
- oraclesData[token].historicalOracleState = historicalRoundsData[token];
574
- });
575
- return oraclesData;
576
- }
577
- async getHistoricalRoundsData(tokens, roundLookbackWindow, latestRoundIdsBN, oraclesData, blockNumber) {
578
- // historical round data
579
- let historicalStates = tokens.reduce((acc, token) => {
580
- return {
581
- ...acc,
582
- [token]: { ...oraclesData[token].historicalOracleState },
583
- };
584
- }, {});
585
- let multiCallInputs = tokens
586
- .map((token) => {
587
- const startRoundId = latestRoundIdsBN[token];
588
- return Array.from({ length: roundLookbackWindow }, (x, idx) => idx)
589
- .map(idx => {
590
- return {
591
- target: oraclesData[token].oraclesBindState.proxy,
592
- callData: SwaapV1Pool.proxyInterface.encodeFunctionData('getRoundData', [startRoundId - BigInt(idx + 1)]),
593
- };
594
- })
595
- .flat();
596
- })
597
- .flat();
598
- try {
599
- let multicallOutputs = (await this.dexHelper.multiContract.methods
600
- .aggregate(multiCallInputs)
601
- .call({}, blockNumber)).returnData;
602
- let i = 0;
603
- tokens.map(token => {
604
- Array.from({ length: roundLookbackWindow }, (x, idx) => idx).map(idx => {
605
- const decoded = SwaapV1Pool.proxyInterface.decodeFunctionResult('getRoundData', multicallOutputs[i++]);
606
- const roundId = Number(BigInt(decoded.roundId.toString()) % 2n ** 64n);
607
- historicalStates[token][roundId] = {
608
- answer: BigInt(decoded.answer.toString()),
609
- timestamp: BigInt(decoded.updatedAt.toString()),
610
- };
611
- });
612
- });
613
- }
614
- catch (e) {
615
- this.logger.error('Failed to get historical round data', e);
616
- }
617
- return historicalStates;
618
- }
619
- //Function used to generate a state if one is not currently present, which
620
- //must be the state at exactly the given block number, unless one is not
621
- //provided, in which case one should be generated for latest block. This
622
- //function should not use any previous states to derive a new state, it should
623
- //generate one from scratch.
624
- async generateState(blockNumber) {
625
- if (blockNumber === 'latest' || blockNumber === undefined) {
626
- blockNumber = await this.dexHelper.provider.getBlockNumber();
627
- }
628
- const [tokens, parameters] = await this.getTokensAndParameters(blockNumber);
629
- const [proxies, liquidities] = await this.getProxiesAndLiquidities(tokens, blockNumber);
630
- const oracles = await this.getOraclesData(tokens, proxies, parameters, blockNumber);
631
- return {
632
- parameters: parameters,
633
- liquidities: liquidities,
634
- oracles: oracles,
635
- };
636
- }
637
- static getValueFromAnonymousEvent(log) {
638
- const data = log.data.toString();
639
- const startIdx = 2 + 64 + 64 + 8;
640
- return '0x' + data.slice(startIdx, startIdx + 64).toString();
641
- }
642
- }
643
- exports.SwaapV1Pool = SwaapV1Pool;
644
- SwaapV1Pool.poolInterface = new abi_1.Interface(pool_json_1.default);
645
- SwaapV1Pool.proxyInterface = new abi_1.Interface(chainlink_json_1.default);
646
- SwaapV1Pool.erc20Interface = new abi_1.Interface(erc20_json_1.default);
647
- // LOG_CALL Event topics 0
648
- SwaapV1Pool.SWAP_FEE_TOPIC = '0x34e1990700000000000000000000000000000000000000000000000000000000';
649
- SwaapV1Pool.LB_IN_ROUND_TOPIC = '0x3cc3396000000000000000000000000000000000000000000000000000000000';
650
- SwaapV1Pool.LB_STEP_IN_ROUND_TOPIC = '0x045dbae000000000000000000000000000000000000000000000000000000000';
651
- SwaapV1Pool.Z_TOPIC = '0x3c515d9900000000000000000000000000000000000000000000000000000000';
652
- SwaapV1Pool.HORIZON_TOPIC = '0x314d204f00000000000000000000000000000000000000000000000000000000';
653
- SwaapV1Pool.LB_IN_SEC_TOPIC = '0x538e285c00000000000000000000000000000000000000000000000000000000';
654
- SwaapV1Pool.MAX_UNPEG_TOPIC = '0xacb21b3100000000000000000000000000000000000000000000000000000000';
655
- SwaapV1Pool.ANSWER_UPDATED_TOPIC = SwaapV1Pool.proxyInterface.getEventTopic('AnswerUpdated');
656
- //# sourceMappingURL=swaap-v1-pool.js.map