@paraswap/dex-lib 4.7.27-1 → 4.7.27-ekubo-v3.1

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 (341) hide show
  1. package/build/abi/PendleRouterStatic.json +19 -0
  2. package/build/abi/apex-defi/ApexDefiFactory.abi.json +1749 -0
  3. package/build/abi/apex-defi/ApexDefiRouter.abi.json +1120 -0
  4. package/build/abi/apex-defi/ApexDefiToken.abi.json +229 -0
  5. package/build/abi/apex-defi/ApexDefiWrapper.abi.json +92 -0
  6. package/build/abi/apex-defi/ApexDefiWrapperFactory.abi.json +1107 -0
  7. package/build/abi/ekubo-v3/core.json +797 -0
  8. package/build/abi/ekubo-v3/mev-capture-router.json +936 -0
  9. package/build/abi/ekubo-v3/quote-data-fetcher.json +161 -0
  10. package/build/abi/ekubo-v3/twamm-data-fetcher.json +216 -0
  11. package/build/abi/ekubo-v3/twamm.json +613 -0
  12. package/build/abi/idle-dao/idle-cdo-factory.json +38 -0
  13. package/build/abi/idle-dao/idle-cdo.json +1245 -0
  14. package/build/abi/infusion/InfusionFactory.json +147 -0
  15. package/build/abi/infusion/InfusionPair.json +658 -0
  16. package/build/abi/infusion/InfusionRouter.json +442 -0
  17. package/build/abi/maker-psm/pot.json +322 -0
  18. package/build/abi/maker-psm/psm.json +243 -0
  19. package/build/abi/maker-psm/vat.json +363 -0
  20. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
  21. package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +796 -0
  22. package/build/abi/pendle/pendle-deployer.abi.json +520 -0
  23. package/build/abi/pendle/pendle-oracle.abi.json +413 -0
  24. package/build/abi/quick-perps/fast-price-events.json +70 -0
  25. package/build/abi/quick-perps/fast-price-feed.json +741 -0
  26. package/build/abi/quick-perps/reader.json +313 -0
  27. package/build/abi/quick-perps/vault-price-feed.json +323 -0
  28. package/build/abi/quick-perps/vault.json +1953 -0
  29. package/build/abi/ring-v2/few-wrapped-token.json +587 -0
  30. package/build/abi/ring-v2/ring-v2-factory.json +125 -0
  31. package/build/abi/ring-v2/ring-v2-pool.json +461 -0
  32. package/build/abi/ring-v2/ring-v2-router.json +332 -0
  33. package/build/abi/stabull/stabull-curve.json +738 -0
  34. package/build/abi/stabull/stabull-router.json +76 -0
  35. package/build/abi/uniswap-v2/excalibur-pool.json +881 -0
  36. package/build/abi/uniswap-v2/mdex-factory.json +759 -0
  37. package/build/abi/uniswap-v4/hooks/SpotDynamicFeeManager.json +26 -0
  38. package/build/abi/uniswap-v4/hooks/SpotHook.json +54 -0
  39. package/build/abi/uniswap-v4/hooks/SpotPolicyManager.json +45 -0
  40. package/build/abi/uniswap-v4/hooks/cabalcoin-hook.abi.json +682 -0
  41. package/build/abi/uniswap-v4/hooks/fee-hook.abi.json +1335 -0
  42. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.d.ts +29 -0
  43. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js +153 -0
  44. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js.map +1 -0
  45. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.d.ts +40 -0
  46. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js +323 -0
  47. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js.map +1 -0
  48. package/build/dex/aave-pt-to-underlying/config.d.ts +3 -0
  49. package/build/dex/aave-pt-to-underlying/config.js +24 -0
  50. package/build/dex/aave-pt-to-underlying/config.js.map +1 -0
  51. package/build/dex/aave-pt-to-underlying/constants.d.ts +2 -0
  52. package/build/dex/aave-pt-to-underlying/constants.js +6 -0
  53. package/build/dex/aave-pt-to-underlying/constants.js.map +1 -0
  54. package/build/dex/aave-pt-to-underlying/types.d.ts +24 -0
  55. package/build/dex/aave-pt-to-underlying/types.js +3 -0
  56. package/build/dex/aave-pt-to-underlying/types.js.map +1 -0
  57. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.d.ts +39 -0
  58. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js +244 -0
  59. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js.map +1 -0
  60. package/build/dex/aave-pt-to-usdc/config.d.ts +3 -0
  61. package/build/dex/aave-pt-to-usdc/config.js +47 -0
  62. package/build/dex/aave-pt-to-usdc/config.js.map +1 -0
  63. package/build/dex/aave-pt-to-usdc/constants.d.ts +2 -0
  64. package/build/dex/aave-pt-to-usdc/constants.js +6 -0
  65. package/build/dex/aave-pt-to-usdc/constants.js.map +1 -0
  66. package/build/dex/aave-pt-to-usdc/types.d.ts +22 -0
  67. package/build/dex/aave-pt-to-usdc/types.js +3 -0
  68. package/build/dex/aave-pt-to-usdc/types.js.map +1 -0
  69. package/build/dex/algebra-integral/algebra-integral-factory.d.ts +1 -3
  70. package/build/dex/algebra-integral/algebra-integral-factory.js +1 -59
  71. package/build/dex/algebra-integral/algebra-integral-factory.js.map +1 -1
  72. package/build/dex/algebra-integral/algebra-integral.d.ts +0 -3
  73. package/build/dex/algebra-integral/algebra-integral.js +4 -112
  74. package/build/dex/algebra-integral/algebra-integral.js.map +1 -1
  75. package/build/dex/algebra-integral/constants.d.ts +0 -2
  76. package/build/dex/algebra-integral/constants.js +1 -5
  77. package/build/dex/algebra-integral/constants.js.map +1 -1
  78. package/build/dex/apex-defi/apex-defi-factory.d.ts +26 -0
  79. package/build/dex/apex-defi/apex-defi-factory.js +53 -0
  80. package/build/dex/apex-defi/apex-defi-factory.js.map +1 -0
  81. package/build/dex/apex-defi/apex-defi-pool.d.ts +55 -0
  82. package/build/dex/apex-defi/apex-defi-pool.js +247 -0
  83. package/build/dex/apex-defi/apex-defi-pool.js.map +1 -0
  84. package/build/dex/apex-defi/apex-defi-wrapper-factory.d.ts +57 -0
  85. package/build/dex/apex-defi/apex-defi-wrapper-factory.js +250 -0
  86. package/build/dex/apex-defi/apex-defi-wrapper-factory.js.map +1 -0
  87. package/build/dex/apex-defi/apex-defi.d.ts +97 -0
  88. package/build/dex/apex-defi/apex-defi.js +1021 -0
  89. package/build/dex/apex-defi/apex-defi.js.map +1 -0
  90. package/build/dex/apex-defi/config.d.ts +4 -0
  91. package/build/dex/apex-defi/config.js +138 -0
  92. package/build/dex/apex-defi/config.js.map +1 -0
  93. package/build/dex/apex-defi/types.d.ts +32 -0
  94. package/build/dex/apex-defi/types.js +3 -0
  95. package/build/dex/apex-defi/types.js.map +1 -0
  96. package/build/dex/apex-defi/utils.d.ts +46 -0
  97. package/build/dex/apex-defi/utils.js +133 -0
  98. package/build/dex/apex-defi/utils.js.map +1 -0
  99. package/build/dex/ekubo/pools/base-pool.d.ts +47 -0
  100. package/build/dex/ekubo/pools/base-pool.js +184 -0
  101. package/build/dex/ekubo/pools/base-pool.js.map +1 -0
  102. package/build/dex/ekubo/pools/iface.d.ts +46 -0
  103. package/build/dex/ekubo/pools/iface.js +75 -0
  104. package/build/dex/ekubo/pools/iface.js.map +1 -0
  105. package/build/dex/ekubo/pools/math/price.d.ts +7 -0
  106. package/build/dex/ekubo/pools/math/price.js +112 -0
  107. package/build/dex/ekubo/pools/math/price.js.map +1 -0
  108. package/build/dex/ekubo/pools/oracle-pool.d.ts +10 -0
  109. package/build/dex/ekubo/pools/oracle-pool.js +19 -0
  110. package/build/dex/ekubo/pools/oracle-pool.js.map +1 -0
  111. package/build/dex/ekubo/pools/pool-utils.d.ts +44 -0
  112. package/build/dex/ekubo/pools/pool-utils.js +240 -0
  113. package/build/dex/ekubo/pools/pool-utils.js.map +1 -0
  114. package/build/dex/ekubo-v3/config.d.ts +13 -0
  115. package/build/dex/ekubo-v3/config.js +23 -0
  116. package/build/dex/ekubo-v3/config.js.map +1 -0
  117. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.d.ts +34 -0
  118. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.js +421 -0
  119. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.js.map +1 -0
  120. package/build/dex/ekubo-v3/ekubo-v3.d.ts +38 -0
  121. package/build/dex/ekubo-v3/ekubo-v3.js +315 -0
  122. package/build/dex/ekubo-v3/ekubo-v3.js.map +1 -0
  123. package/build/dex/ekubo-v3/pools/base.d.ts +42 -0
  124. package/build/dex/ekubo-v3/pools/base.js +307 -0
  125. package/build/dex/ekubo-v3/pools/base.js.map +1 -0
  126. package/build/dex/ekubo-v3/pools/full-range.d.ts +25 -0
  127. package/build/dex/ekubo-v3/pools/full-range.js +105 -0
  128. package/build/dex/ekubo-v3/pools/full-range.js.map +1 -0
  129. package/build/dex/ekubo-v3/pools/math/constants.d.ts +12 -0
  130. package/build/dex/ekubo-v3/pools/math/constants.js +16 -0
  131. package/build/dex/ekubo-v3/pools/math/constants.js.map +1 -0
  132. package/build/dex/ekubo-v3/pools/math/delta.d.ts +2 -0
  133. package/build/dex/ekubo-v3/pools/math/delta.js +51 -0
  134. package/build/dex/ekubo-v3/pools/math/delta.js.map +1 -0
  135. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.d.ts +8 -0
  136. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.js +113 -0
  137. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.js.map +1 -0
  138. package/build/dex/ekubo-v3/pools/math/swap.d.ts +18 -0
  139. package/build/dex/ekubo-v3/pools/math/swap.js +128 -0
  140. package/build/dex/ekubo-v3/pools/math/swap.js.map +1 -0
  141. package/build/dex/ekubo-v3/pools/math/tick.d.ts +8 -0
  142. package/build/dex/ekubo-v3/pools/math/tick.js +129 -0
  143. package/build/dex/ekubo-v3/pools/math/tick.js.map +1 -0
  144. package/build/dex/ekubo-v3/pools/math/twamm/exp2.d.ts +1 -0
  145. package/build/dex/ekubo-v3/pools/math/twamm/exp2.js +86 -0
  146. package/build/dex/ekubo-v3/pools/math/twamm/exp2.js.map +1 -0
  147. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.d.ts +1 -0
  148. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.js +56 -0
  149. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.js.map +1 -0
  150. package/build/dex/ekubo-v3/pools/mev-capture.d.ts +8 -0
  151. package/build/dex/ekubo-v3/pools/mev-capture.js +42 -0
  152. package/build/dex/ekubo-v3/pools/mev-capture.js.map +1 -0
  153. package/build/dex/ekubo-v3/pools/oracle.d.ts +8 -0
  154. package/build/dex/ekubo-v3/pools/oracle.js +18 -0
  155. package/build/dex/ekubo-v3/pools/oracle.js.map +1 -0
  156. package/build/dex/ekubo-v3/pools/pool.d.ts +56 -0
  157. package/build/dex/ekubo-v3/pools/pool.js +88 -0
  158. package/build/dex/ekubo-v3/pools/pool.js.map +1 -0
  159. package/build/dex/ekubo-v3/pools/stableswap.d.ts +22 -0
  160. package/build/dex/ekubo-v3/pools/stableswap.js +123 -0
  161. package/build/dex/ekubo-v3/pools/stableswap.js.map +1 -0
  162. package/build/dex/ekubo-v3/pools/twamm.d.ts +40 -0
  163. package/build/dex/ekubo-v3/pools/twamm.js +265 -0
  164. package/build/dex/ekubo-v3/pools/twamm.js.map +1 -0
  165. package/build/dex/ekubo-v3/pools/utils.d.ts +62 -0
  166. package/build/dex/ekubo-v3/pools/utils.js +160 -0
  167. package/build/dex/ekubo-v3/pools/utils.js.map +1 -0
  168. package/build/dex/ekubo-v3/types.d.ts +58 -0
  169. package/build/dex/ekubo-v3/types.js +3 -0
  170. package/build/dex/ekubo-v3/types.js.map +1 -0
  171. package/build/dex/ekubo-v3/utils.d.ts +10 -0
  172. package/build/dex/ekubo-v3/utils.js +54 -0
  173. package/build/dex/ekubo-v3/utils.js.map +1 -0
  174. package/build/dex/idle-dao/config.d.ts +5 -0
  175. package/build/dex/idle-dao/config.js +24 -0
  176. package/build/dex/idle-dao/config.js.map +1 -0
  177. package/build/dex/idle-dao/idle-dao.d.ts +42 -0
  178. package/build/dex/idle-dao/idle-dao.js +279 -0
  179. package/build/dex/idle-dao/idle-dao.js.map +1 -0
  180. package/build/dex/idle-dao/token_list.d.ts +4 -0
  181. package/build/dex/idle-dao/token_list.js +289 -0
  182. package/build/dex/idle-dao/token_list.js.map +1 -0
  183. package/build/dex/idle-dao/tokens.d.ts +9 -0
  184. package/build/dex/idle-dao/tokens.js +68 -0
  185. package/build/dex/idle-dao/tokens.js.map +1 -0
  186. package/build/dex/idle-dao/types.d.ts +35 -0
  187. package/build/dex/idle-dao/types.js +11 -0
  188. package/build/dex/idle-dao/types.js.map +1 -0
  189. package/build/dex/idle-dao/utils.d.ts +8 -0
  190. package/build/dex/idle-dao/utils.js +149 -0
  191. package/build/dex/idle-dao/utils.js.map +1 -0
  192. package/build/dex/index.js +2 -0
  193. package/build/dex/index.js.map +1 -1
  194. package/build/dex/infusion/config.d.ts +3 -0
  195. package/build/dex/infusion/config.js +20 -0
  196. package/build/dex/infusion/config.js.map +1 -0
  197. package/build/dex/infusion/infusion-stable-pool.d.ts +4 -0
  198. package/build/dex/infusion/infusion-stable-pool.js +74 -0
  199. package/build/dex/infusion/infusion-stable-pool.js.map +1 -0
  200. package/build/dex/infusion/infusion.d.ts +51 -0
  201. package/build/dex/infusion/infusion.js +461 -0
  202. package/build/dex/infusion/infusion.js.map +1 -0
  203. package/build/dex/infusion/types.d.ts +45 -0
  204. package/build/dex/infusion/types.js +3 -0
  205. package/build/dex/infusion/types.js.map +1 -0
  206. package/build/dex/infusion/utils/isStablePair.d.ts +2 -0
  207. package/build/dex/infusion/utils/isStablePair.js +18 -0
  208. package/build/dex/infusion/utils/isStablePair.js.map +1 -0
  209. package/build/dex/maker-psm/config.d.ts +11 -0
  210. package/build/dex/maker-psm/config.js +53 -0
  211. package/build/dex/maker-psm/config.js.map +1 -0
  212. package/build/dex/maker-psm/maker-psm-event-pool.d.ts +43 -0
  213. package/build/dex/maker-psm/maker-psm-event-pool.js +132 -0
  214. package/build/dex/maker-psm/maker-psm-event-pool.js.map +1 -0
  215. package/build/dex/maker-psm/maker-psm.d.ts +103 -0
  216. package/build/dex/maker-psm/maker-psm.js +493 -0
  217. package/build/dex/maker-psm/maker-psm.js.map +1 -0
  218. package/build/dex/maker-psm/types.d.ts +39 -0
  219. package/build/dex/maker-psm/types.js +3 -0
  220. package/build/dex/maker-psm/types.js.map +1 -0
  221. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  222. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  223. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  224. package/build/dex/quick-perps/config.d.ts +11 -0
  225. package/build/dex/quick-perps/config.js +27 -0
  226. package/build/dex/quick-perps/config.js.map +1 -0
  227. package/build/dex/quick-perps/fast-price-feed.d.ts +26 -0
  228. package/build/dex/quick-perps/fast-price-feed.js +184 -0
  229. package/build/dex/quick-perps/fast-price-feed.js.map +1 -0
  230. package/build/dex/quick-perps/pool.d.ts +21 -0
  231. package/build/dex/quick-perps/pool.js +229 -0
  232. package/build/dex/quick-perps/pool.js.map +1 -0
  233. package/build/dex/quick-perps/quick-perps.d.ts +53 -0
  234. package/build/dex/quick-perps/quick-perps.js +247 -0
  235. package/build/dex/quick-perps/quick-perps.js.map +1 -0
  236. package/build/dex/quick-perps/types.d.ts +98 -0
  237. package/build/dex/quick-perps/types.js +3 -0
  238. package/build/dex/quick-perps/types.js.map +1 -0
  239. package/build/dex/quick-perps/usdq.d.ts +15 -0
  240. package/build/dex/quick-perps/usdq.js +62 -0
  241. package/build/dex/quick-perps/usdq.js.map +1 -0
  242. package/build/dex/quick-perps/vault-price-feed.d.ts +43 -0
  243. package/build/dex/quick-perps/vault-price-feed.js +203 -0
  244. package/build/dex/quick-perps/vault-price-feed.js.map +1 -0
  245. package/build/dex/quick-perps/vault-utils.d.ts +8 -0
  246. package/build/dex/quick-perps/vault-utils.js +42 -0
  247. package/build/dex/quick-perps/vault-utils.js.map +1 -0
  248. package/build/dex/quick-perps/vault.d.ts +46 -0
  249. package/build/dex/quick-perps/vault.js +182 -0
  250. package/build/dex/quick-perps/vault.js.map +1 -0
  251. package/build/dex/solidly/forks-override/aerodrome.d.ts +14 -0
  252. package/build/dex/solidly/forks-override/aerodrome.js +50 -0
  253. package/build/dex/solidly/forks-override/aerodrome.js.map +1 -0
  254. package/build/dex/solidly/forks-override/chronos.d.ts +23 -0
  255. package/build/dex/solidly/forks-override/chronos.js +141 -0
  256. package/build/dex/solidly/forks-override/chronos.js.map +1 -0
  257. package/build/dex/solidly/forks-override/usdfi.d.ts +8 -0
  258. package/build/dex/solidly/forks-override/usdfi.js +15 -0
  259. package/build/dex/solidly/forks-override/usdfi.js.map +1 -0
  260. package/build/dex/solidly/forks-override/velocimeter.d.ts +23 -0
  261. package/build/dex/solidly/forks-override/velocimeter.js +77 -0
  262. package/build/dex/solidly/forks-override/velocimeter.js.map +1 -0
  263. package/build/dex/stabull/config.d.ts +3 -0
  264. package/build/dex/stabull/config.js +177 -0
  265. package/build/dex/stabull/config.js.map +1 -0
  266. package/build/dex/stabull/stabull-pool.d.ts +46 -0
  267. package/build/dex/stabull/stabull-pool.js +113 -0
  268. package/build/dex/stabull/stabull-pool.js.map +1 -0
  269. package/build/dex/stabull/stabull.d.ts +55 -0
  270. package/build/dex/stabull/stabull.js +286 -0
  271. package/build/dex/stabull/stabull.js.map +1 -0
  272. package/build/dex/stabull/types.d.ts +21 -0
  273. package/build/dex/stabull/types.js +3 -0
  274. package/build/dex/stabull/types.js.map +1 -0
  275. package/build/dex/uniswap-v2/dfyn.d.ts +19 -0
  276. package/build/dex/uniswap-v2/dfyn.js +61 -0
  277. package/build/dex/uniswap-v2/dfyn.js.map +1 -0
  278. package/build/dex/uniswap-v2/excalibur.d.ts +24 -0
  279. package/build/dex/uniswap-v2/excalibur.js +47 -0
  280. package/build/dex/uniswap-v2/excalibur.js.map +1 -0
  281. package/build/dex/uniswap-v2/mdex.d.ts +24 -0
  282. package/build/dex/uniswap-v2/mdex.js +50 -0
  283. package/build/dex/uniswap-v2/mdex.js.map +1 -0
  284. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +24 -0
  285. package/build/dex/uniswap-v2/nomiswap-v2.js +57 -0
  286. package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -0
  287. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +4 -0
  288. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +56 -0
  289. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +1 -0
  290. package/build/dex/uniswap-v4/contract-math/Position.d.ts +9 -0
  291. package/build/dex/uniswap-v4/contract-math/Position.js +39 -0
  292. package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -0
  293. package/build/dex/uniswap-v4/hooks/arena.d.ts +6 -0
  294. package/build/dex/uniswap-v4/hooks/arena.js +10 -0
  295. package/build/dex/uniswap-v4/hooks/arena.js.map +1 -0
  296. package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.d.ts +0 -0
  297. package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.js +2 -0
  298. package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.js.map +1 -0
  299. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +7 -0
  300. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +28 -0
  301. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +1 -0
  302. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
  303. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +2 -0
  304. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +1 -0
  305. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +7 -0
  306. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +28 -0
  307. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +1 -0
  308. package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
  309. package/build/dex/uniswap-v4/hooks/fee-hook/types.js +2 -0
  310. package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +1 -0
  311. package/build/dex/uniswap-v4/hooks/index.d.ts +1 -0
  312. package/build/dex/uniswap-v4/hooks/index.js +18 -0
  313. package/build/dex/uniswap-v4/hooks/index.js.map +1 -0
  314. package/build/dex/uniswap-v4/hooks/spot.d.ts +15 -0
  315. package/build/dex/uniswap-v4/hooks/spot.js +109 -0
  316. package/build/dex/uniswap-v4/hooks/spot.js.map +1 -0
  317. package/build/dex/uniswap-v4/hooks/template.d.ts +150 -0
  318. package/build/dex/uniswap-v4/hooks/template.js +104 -0
  319. package/build/dex/uniswap-v4/hooks/template.js.map +1 -0
  320. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +26 -0
  321. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +75 -0
  322. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +1 -0
  323. package/build/dex/usual/usual-usdc-usdc.d.ts +17 -0
  324. package/build/dex/usual/usual-usdc-usdc.js +59 -0
  325. package/build/dex/usual/usual-usdc-usdc.js.map +1 -0
  326. package/build/dex/yo/config.d.ts +3 -0
  327. package/build/dex/yo/config.js +21 -0
  328. package/build/dex/yo/config.js.map +1 -0
  329. package/build/dex/yo/types.d.ts +13 -0
  330. package/build/dex/yo/types.js +3 -0
  331. package/build/dex/yo/types.js.map +1 -0
  332. package/build/dex/yo/yo-pool.d.ts +13 -0
  333. package/build/dex/yo/yo-pool.js +26 -0
  334. package/build/dex/yo/yo-pool.js.map +1 -0
  335. package/build/dex/yo/yo.d.ts +39 -0
  336. package/build/dex/yo/yo.js +248 -0
  337. package/build/dex/yo/yo.js.map +1 -0
  338. package/build/implementations/api-paraswap-sdk.d.ts +25 -0
  339. package/build/implementations/api-paraswap-sdk.js +102 -0
  340. package/build/implementations/api-paraswap-sdk.js.map +1 -0
  341. package/package.json +3 -3
@@ -0,0 +1,24 @@
1
+ import { Network } from '../../constants';
2
+ import { IDexHelper } from '../../dex-helper/idex-helper';
3
+ import { UniswapV2, UniswapV2Pair } from '../uniswap-v2/uniswap-v2';
4
+ import { Interface } from '@ethersproject/abi';
5
+ import { DexParams } from './types';
6
+ import { DexConfigMap } from '../../types';
7
+ export declare const NomiswapV2Config: DexConfigMap<DexParams>;
8
+ export declare class NomiswapV2 extends UniswapV2 {
9
+ protected network: Network;
10
+ protected dexHelper: IDexHelper;
11
+ nomiswapPool: Interface;
12
+ static dexKeysWithNetwork: {
13
+ key: string;
14
+ networks: Network[];
15
+ }[];
16
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
17
+ protected getFeesMultiCallData(pair: UniswapV2Pair): {
18
+ callEntry: {
19
+ target: string;
20
+ callData: string;
21
+ };
22
+ callDecoder: (values: any[]) => number;
23
+ };
24
+ }
@@ -0,0 +1,57 @@
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.NomiswapV2 = exports.NomiswapV2Config = void 0;
7
+ const constants_1 = require("../../constants");
8
+ const utils_1 = require("../../utils");
9
+ const uniswap_v2_1 = require("../uniswap-v2/uniswap-v2");
10
+ const abi_1 = require("@ethersproject/abi");
11
+ const nomiswap_v2_pool_json_1 = __importDefault(require("../../abi/nomiswap-v2/nomiswap-v2-pool.json"));
12
+ exports.NomiswapV2Config = {
13
+ NomiswapV2: {
14
+ [constants_1.Network.BSC]: {
15
+ factoryAddress: '0xd6715A8be3944ec72738F0BFDC739d48C3c29349',
16
+ initCode: '0x83eb759f5ea0525124f03d4ac741bb4af0bb1c703d5f694bd42a8bd72e495a01',
17
+ poolGasCost: 120 * 1000,
18
+ feeCode: 0, // this is ignored as Nomiswap uses dynamic fees,
19
+ subgraphURL: '5CBKsDihF7KeBrNX4bgtb4tVFqy41PguVm88zBGpd4Hi',
20
+ },
21
+ },
22
+ // not exactly the same, but swapFee logic works in the same way
23
+ SwaprV2: {
24
+ [constants_1.Network.GNOSIS]: {
25
+ factoryAddress: '0x5D48C95AdfFD4B40c1AAADc4e08fc44117E02179',
26
+ initCode: '0xfcee8e246628cf9708fcb9d6f5d4aa0d96b62bb50f1af012a75a3292849e2dca',
27
+ poolGasCost: 120 * 1000,
28
+ feeCode: 25, // this is ignored as SwaprV2 uses dynamic fees,
29
+ subgraphURL: 'EWoa3JwNntAWtaLsLixTU25smp4R5tzGvs9rFXx9NHKZ',
30
+ },
31
+ },
32
+ };
33
+ class NomiswapV2 extends uniswap_v2_1.UniswapV2 {
34
+ network;
35
+ dexHelper;
36
+ nomiswapPool;
37
+ static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(exports.NomiswapV2Config);
38
+ constructor(network, dexKey, dexHelper) {
39
+ super(network, dexKey, dexHelper, true, exports.NomiswapV2Config[dexKey][network].factoryAddress, exports.NomiswapV2Config[dexKey][network].subgraphURL, exports.NomiswapV2Config[dexKey][network].initCode, exports.NomiswapV2Config[dexKey][network].feeCode, exports.NomiswapV2Config[dexKey][network].poolGasCost);
40
+ this.network = network;
41
+ this.dexHelper = dexHelper;
42
+ this.nomiswapPool = new abi_1.Interface(nomiswap_v2_pool_json_1.default);
43
+ }
44
+ getFeesMultiCallData(pair) {
45
+ const callEntry = {
46
+ target: pair.exchange,
47
+ callData: this.nomiswapPool.encodeFunctionData('swapFee', []),
48
+ };
49
+ const callDecoder = (values) => parseInt(this.nomiswapPool.decodeFunctionResult('swapFee', values)[0].toString()) * 10;
50
+ return {
51
+ callEntry,
52
+ callDecoder,
53
+ };
54
+ }
55
+ }
56
+ exports.NomiswapV2 = NomiswapV2;
57
+ //# sourceMappingURL=nomiswap-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nomiswap-v2.js","sourceRoot":"","sources":["../../../src/dex/uniswap-v2/nomiswap-v2.ts"],"names":[],"mappings":";;;;;;AAAA,+CAA0C;AAC1C,uCAAoD;AAEpD,yDAAoE;AACpE,4CAA+C;AAC/C,wGAA0E;AAI7D,QAAA,gBAAgB,GAA4B;IACvD,UAAU,EAAE;QACV,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;YACb,cAAc,EAAE,4CAA4C;YAC5D,QAAQ,EACN,oEAAoE;YACtE,WAAW,EAAE,GAAG,GAAG,IAAI;YACvB,OAAO,EAAE,CAAC,EAAE,iDAAiD;YAC7D,WAAW,EAAE,8CAA8C;SAC5D;KACF;IACD,gEAAgE;IAChE,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,MAAM,CAAC,EAAE;YAChB,cAAc,EAAE,4CAA4C;YAC5D,QAAQ,EACN,oEAAoE;YACtE,WAAW,EAAE,GAAG,GAAG,IAAI;YACvB,OAAO,EAAE,EAAE,EAAE,gDAAgD;YAC7D,WAAW,EAAE,8CAA8C;SAC5D;KACF;CACF,CAAC;AAEF,MAAa,UAAW,SAAQ,sBAAS;IAO3B;IAEA;IARZ,YAAY,CAAY;IAEjB,MAAM,CAAC,kBAAkB,GAC9B,IAAA,6BAAqB,EAAC,wBAAgB,CAAC,CAAC;IAE1C,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB;QAE/B,KAAK,CACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,EACJ,wBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAChD,wBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAC7C,wBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAC1C,wBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EACzC,wBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAC9C,CAAC;QAdQ,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;QAa/B,IAAI,CAAC,YAAY,GAAG,IAAI,eAAS,CAAC,+BAAe,CAAC,CAAC;IACrD,CAAC;IAES,oBAAoB,CAAC,IAAmB;QAChD,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,IAAI,CAAC,QAAS;YACtB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,CAAC;SAC9D,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,MAAa,EAAE,EAAE,CACpC,QAAQ,CACN,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CACxE,GAAG,EAAE,CAAC;QACT,OAAO;YACL,SAAS;YACT,WAAW;SACZ,CAAC;IACJ,CAAC;;AAtCH,gCAuCC"}
@@ -0,0 +1,4 @@
1
+ import { MultiResult } from '../../../../lib/multi-wrapper';
2
+ import { BytesLike } from 'ethers';
3
+ import { DecodedStateMultiCallResultWithRelativeBitmaps } from '../../types';
4
+ export declare function decodeStateMultiCallResultWithRelativeBitmaps(result: MultiResult<BytesLike> | BytesLike): DecodedStateMultiCallResultWithRelativeBitmaps;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeStateMultiCallResultWithRelativeBitmaps = decodeStateMultiCallResultWithRelativeBitmaps;
4
+ const ethers_1 = require("ethers");
5
+ const decoders_1 = require("../../../../lib/decoders");
6
+ const ts_essentials_1 = require("ts-essentials");
7
+ function decodeStateMultiCallResultWithRelativeBitmaps(result) {
8
+ const [isSuccess, toDecode] = (0, decoders_1.extractSuccessAndValue)(result);
9
+ (0, ts_essentials_1.assert)(isSuccess && toDecode !== '0x', `decodeStateMultiCallResultWithRelativeBitmaps failed to get decodable result: ${result}`);
10
+ const decoded = ethers_1.ethers.utils.defaultAbiCoder.decode([
11
+ // I don't want to pass here any interface, so I just use it in ethers format
12
+ `
13
+ tuple(
14
+ address pool,
15
+ uint256 blockTimestamp,
16
+ tuple(
17
+ uint160 sqrtPriceX96,
18
+ int24 tick,
19
+ uint16 observationIndex,
20
+ uint16 observationCardinality,
21
+ uint16 observationCardinalityNext,
22
+ uint8 feeProtocol,
23
+ bool unlocked
24
+ ) slot0,
25
+ uint128 liquidity,
26
+ int24 tickSpacing,
27
+ uint128 maxLiquidityPerTick,
28
+ tuple(
29
+ uint32 blockTimestamp,
30
+ int56 tickCumulative,
31
+ uint160 secondsPerLiquidityCumulativeX128,
32
+ bool initialized
33
+ ) observation,
34
+ tuple(
35
+ int16 index,
36
+ uint256 value
37
+ )[] tickBitmap,
38
+ tuple(
39
+ int24 index,
40
+ tuple(
41
+ uint128 liquidityGross,
42
+ int128 liquidityNet,
43
+ int56 tickCumulativeOutside,
44
+ uint160 secondsPerLiquidityOutsideX128,
45
+ uint32 secondsOutside,
46
+ bool initialized
47
+ ) value
48
+ )[] ticks
49
+ )
50
+ `,
51
+ ], toDecode)[0];
52
+ // This conversion is not precise, because when we decode, we have more values
53
+ // But I typed only the ones that are used later
54
+ return decoded;
55
+ }
56
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/pangolin-v3/utils.ts"],"names":[],"mappings":";;AAMA,sGA2DC;AAhED,mCAA2C;AAE3C,uDAAkE;AAClE,iDAAuC;AAEvC,SAAgB,6CAA6C,CAC3D,MAA0C;IAE1C,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAC;IAE7D,IAAA,sBAAM,EACJ,SAAS,IAAI,QAAQ,KAAK,IAAI,EAC9B,iFAAiF,MAAM,EAAE,CAC1F,CAAC;IAEF,MAAM,OAAO,GAAG,eAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CACjD;QACE,6EAA6E;QAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCD;KACA,EACD,QAAQ,CACT,CAAC,CAAC,CAAC,CAAC;IAEL,8EAA8E;IAC9E,gDAAgD;IAChD,OAAO,OAAyD,CAAC;AACnE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { PoolState, PositionState } from '../types';
2
+ export declare class Position {
3
+ static calculatePositionKey(owner: string, tickLower: bigint, tickUpper: bigint, salt: string): string;
4
+ static get(poolState: PoolState, owner: string, tickLower: bigint, tickUpper: bigint, salt: string): PositionState | undefined;
5
+ static update(poolState: PoolState, owner: string, tickLower: bigint, tickUpper: bigint, salt: string, liquidityDelta: bigint, feeGrowthInside0X128: bigint, feeGrowthInside1X128: bigint): {
6
+ feesOwed0: bigint;
7
+ feesOwed1: bigint;
8
+ };
9
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Position = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ class Position {
6
+ static calculatePositionKey(owner, tickLower, tickUpper, salt) {
7
+ return `${owner}-${tickLower.toString()}-${tickUpper.toString()}-${salt}`;
8
+ }
9
+ static get(poolState, owner, tickLower, tickUpper, salt) {
10
+ const positionKey = Position.calculatePositionKey(owner, tickLower, tickUpper, salt);
11
+ return poolState.positions[positionKey];
12
+ }
13
+ static update(poolState, owner, tickLower, tickUpper, salt, liquidityDelta, feeGrowthInside0X128, feeGrowthInside1X128) {
14
+ const positionKey = Position.calculatePositionKey(owner, tickLower, tickUpper, salt);
15
+ let position = poolState.positions[positionKey];
16
+ (0, utils_1._require)(Boolean(position), 'Position does not exist', { position });
17
+ let { liquidity, feeGrowthInside0LastX128, feeGrowthInside1LastX128 } = position;
18
+ if (liquidityDelta === 0n) {
19
+ (0, utils_1._require)(liquidity !== 0n, 'Cannot update empty position', {
20
+ liquidityDelta,
21
+ });
22
+ }
23
+ else {
24
+ liquidity += liquidityDelta;
25
+ }
26
+ const feesOwed0 = ((feeGrowthInside0X128 - feeGrowthInside0LastX128) * liquidity) /
27
+ BigInt(1 << 128);
28
+ const feesOwed1 = ((feeGrowthInside1X128 - feeGrowthInside1LastX128) * liquidity) /
29
+ BigInt(1 << 128);
30
+ poolState.positions[positionKey] = {
31
+ liquidity,
32
+ feeGrowthInside0LastX128: feeGrowthInside0X128,
33
+ feeGrowthInside1LastX128: feeGrowthInside1X128,
34
+ };
35
+ return { feesOwed0, feesOwed1 };
36
+ }
37
+ }
38
+ exports.Position = Position;
39
+ //# sourceMappingURL=Position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Position.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/contract-math/Position.ts"],"names":[],"mappings":";;;AACA,0CAA0C;AAE1C,MAAa,QAAQ;IACZ,MAAM,CAAC,oBAAoB,CAChC,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY;QAEZ,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,GAAG,CACR,SAAoB,EACpB,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY;QAEZ,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAC/C,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;QAEF,OAAO,SAAS,CAAC,SAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,MAAM,CACX,SAAoB,EACpB,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,cAAsB,EACtB,oBAA4B,EAC5B,oBAA4B;QAE5B,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAC/C,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;QACF,IAAI,QAAQ,GAAG,SAAS,CAAC,SAAU,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAA,gBAAQ,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErE,IAAI,EAAE,SAAS,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,GACnE,QAAQ,CAAC;QAEX,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;YAC1B,IAAA,gBAAQ,EAAC,SAAS,KAAK,EAAE,EAAE,8BAA8B,EAAE;gBACzD,cAAc;aACf,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,SAAS,IAAI,cAAc,CAAC;QAC9B,CAAC;QAED,MAAM,SAAS,GACb,CAAC,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,GAAG,SAAS,CAAC;YAC/D,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GACb,CAAC,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,GAAG,SAAS,CAAC;YAC/D,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAEnB,SAAS,CAAC,SAAU,CAAC,WAAW,CAAC,GAAG;YAClC,SAAS;YACT,wBAAwB,EAAE,oBAAoB;YAC9C,wBAAwB,EAAE,oBAAoB;SAC/C,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;CACF;AAzED,4BAyEC"}
@@ -0,0 +1,6 @@
1
+ import { Network } from '../../../constants';
2
+ export declare const ARENA_HOOK: {
3
+ name: string;
4
+ address: string;
5
+ networks: Network[];
6
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ARENA_HOOK = void 0;
4
+ const constants_1 = require("../../../constants");
5
+ exports.ARENA_HOOK = {
6
+ name: 'ArenaHook',
7
+ address: '0xe32a5d788c568fc5a671255d17b618e70552e044',
8
+ networks: [constants_1.Network.AVALANCHE],
9
+ };
10
+ //# sourceMappingURL=arena.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arena.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/hooks/arena.ts"],"names":[],"mappings":";;;AAAA,kDAA6C;AAEhC,QAAA,UAAU,GAAG;IACxB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,CAAC,mBAAO,CAAC,SAAS,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=base-fee-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-fee-hook.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/base-fee/base-fee-hook.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { UniswapV4Pool } from '../../uniswap-v4-pool';
2
+ import { PoolState } from '../../types';
3
+ export declare class CabalcoinHookPool extends UniswapV4Pool {
4
+ private hookInterface;
5
+ constructor(...args: ConstructorParameters<typeof UniswapV4Pool>);
6
+ handleCustomFeeChangedEvent(event: any, poolState: PoolState): Promise<PoolState>;
7
+ }
@@ -0,0 +1,28 @@
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.CabalcoinHookPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const uniswap_v4_pool_1 = require("../../uniswap-v4-pool");
9
+ const uniswap_v4_pool_math_1 = require("../../contract-math/uniswap-v4-pool-math");
10
+ const cabalcoin_hook_abi_json_1 = __importDefault(require("../../../../abi/uniswap-v4/hooks/cabalcoin-hook.abi.json"));
11
+ class CabalcoinHookPool extends uniswap_v4_pool_1.UniswapV4Pool {
12
+ hookInterface = new abi_1.Interface(cabalcoin_hook_abi_json_1.default);
13
+ constructor(...args) {
14
+ super(...args);
15
+ this.addressesSubscribed.push(this.hooks);
16
+ this.logDecoders.push((log) => this.hookInterface.parseLog(log));
17
+ this.handlers['CustomFeeChanged'] =
18
+ this.handleCustomFeeChangedEvent.bind(this);
19
+ }
20
+ async handleCustomFeeChangedEvent(event, poolState) {
21
+ const id = event.args.id.toLowerCase();
22
+ uniswap_v4_pool_math_1.uniswapV4PoolMath.checkPoolInitialized(poolState);
23
+ poolState.fee = event.args.newFee.toString();
24
+ return poolState;
25
+ }
26
+ }
27
+ exports.CabalcoinHookPool = CabalcoinHookPool;
28
+ //# sourceMappingURL=cabalcoin-hook-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cabalcoin-hook-pool.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,2DAAsD;AAEtD,mFAA6E;AAE7E,uHAAwF;AAExF,MAAa,iBAAkB,SAAQ,+BAAa;IAC1C,aAAa,GAAG,IAAI,eAAS,CAAC,iCAAgB,CAAC,CAAC;IAExD,YAAY,GAAG,IAAiD;QAC9D,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,KAAU,EAAE,SAAoB;QAChE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,wCAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAElD,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AArBD,8CAqBC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/cabalcoin-hook/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { UniswapV4Pool } from '../../uniswap-v4-pool';
2
+ import { PoolState } from '../../types';
3
+ export declare class FeeHookPool extends UniswapV4Pool {
4
+ private hookInterface;
5
+ constructor(...args: ConstructorParameters<typeof UniswapV4Pool>);
6
+ handleCustomFeeChangedEvent(event: any, poolState: PoolState): Promise<PoolState>;
7
+ }
@@ -0,0 +1,28 @@
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.FeeHookPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const uniswap_v4_pool_1 = require("../../uniswap-v4-pool");
9
+ const uniswap_v4_pool_math_1 = require("../../contract-math/uniswap-v4-pool-math");
10
+ const fee_hook_abi_json_1 = __importDefault(require("../../../../abi/uniswap-v4/hooks/fee-hook.abi.json"));
11
+ class FeeHookPool extends uniswap_v4_pool_1.UniswapV4Pool {
12
+ hookInterface = new abi_1.Interface(fee_hook_abi_json_1.default);
13
+ constructor(...args) {
14
+ super(...args);
15
+ this.addressesSubscribed.push(this.hooks);
16
+ this.logDecoders.push((log) => this.hookInterface.parseLog(log));
17
+ this.handlers['CustomFeeChanged'] =
18
+ this.handleCustomFeeChangedEvent.bind(this);
19
+ }
20
+ async handleCustomFeeChangedEvent(event, poolState) {
21
+ const id = event.args.id.toLowerCase();
22
+ uniswap_v4_pool_math_1.uniswapV4PoolMath.checkPoolInitialized(poolState);
23
+ poolState.fee = event.args.newFee.toString();
24
+ return poolState;
25
+ }
26
+ }
27
+ exports.FeeHookPool = FeeHookPool;
28
+ //# sourceMappingURL=fee-hook-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee-hook-pool.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,2DAAsD;AAEtD,mFAA6E;AAE7E,2GAA4E;AAE5E,MAAa,WAAY,SAAQ,+BAAa;IACpC,aAAa,GAAG,IAAI,eAAS,CAAC,2BAAU,CAAC,CAAC;IAElD,YAAY,GAAG,IAAiD;QAC9D,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,KAAU,EAAE,SAAoB;QAChE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,wCAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAElD,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AArBD,kCAqBC"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/fee-hook/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './arena';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./arena"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
@@ -0,0 +1,15 @@
1
+ import { BaseUniswapV4Hook, HookAfterSwapParams, HookAfterSwapResult, HookBeforeSwapParams, HookBeforeSwapResult, HookFactoryParams } from './template';
2
+ export declare class SpotHook extends BaseUniswapV4Hook {
3
+ private policyManagerAddress?;
4
+ private dynamicFeeManagerAddress?;
5
+ private policyManagerContract?;
6
+ private dynamicFeeManagerContract?;
7
+ private feeCache;
8
+ constructor(params: HookFactoryParams);
9
+ bootstrap(): Promise<void>;
10
+ beforeSwap(params: HookBeforeSwapParams): Promise<HookBeforeSwapResult | void>;
11
+ afterSwap(params: HookAfterSwapParams): Promise<HookAfterSwapResult | void>;
12
+ private calculateHookFee;
13
+ private ensureContracts;
14
+ private loadFeeState;
15
+ }
@@ -0,0 +1,109 @@
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.SpotHook = void 0;
7
+ const core_1 = require("@paraswap/core");
8
+ const SpotHook_json_1 = __importDefault(require("../../../abi/uniswap-v4/hooks/SpotHook.json"));
9
+ const SpotPolicyManager_json_1 = __importDefault(require("../../../abi/uniswap-v4/hooks/SpotPolicyManager.json"));
10
+ const SpotDynamicFeeManager_json_1 = __importDefault(require("../../../abi/uniswap-v4/hooks/SpotDynamicFeeManager.json"));
11
+ const template_1 = require("./template");
12
+ class SpotHook extends template_1.BaseUniswapV4Hook {
13
+ policyManagerAddress;
14
+ dynamicFeeManagerAddress;
15
+ policyManagerContract;
16
+ dynamicFeeManagerContract;
17
+ feeCache = new Map();
18
+ constructor(params) {
19
+ super(params.hookAddress, 'Spot', params);
20
+ }
21
+ async bootstrap() {
22
+ await this.ensureContracts();
23
+ }
24
+ async beforeSwap(params) {
25
+ if (params.blockNumber === undefined)
26
+ return undefined;
27
+ const { dynamicFeePPM, protocolFeePPM } = await this.loadFeeState(params.pool.id, params.blockNumber);
28
+ const result = {
29
+ metadata: { dynamicFeePPM, protocolFeePPM },
30
+ lpFeeOverride: dynamicFeePPM,
31
+ };
32
+ if (params.side === core_1.SwapSide.SELL &&
33
+ params.amountSpecified < 0n &&
34
+ protocolFeePPM > 0n) {
35
+ const hookFee = this.calculateHookFee(-params.amountSpecified, dynamicFeePPM, protocolFeePPM);
36
+ if (hookFee > 0n) {
37
+ result.amountSpecified = params.amountSpecified + hookFee;
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ async afterSwap(params) {
43
+ const metadata = params.metadata;
44
+ if (!metadata ||
45
+ metadata.protocolFeePPM === 0n ||
46
+ params.side !== core_1.SwapSide.BUY ||
47
+ params.amountIn <= 0n) {
48
+ return undefined;
49
+ }
50
+ const hookFee = this.calculateHookFee(params.amountIn, metadata.dynamicFeePPM, metadata.protocolFeePPM);
51
+ if (hookFee === 0n) {
52
+ return undefined;
53
+ }
54
+ return {
55
+ deltaAmountIn: hookFee,
56
+ };
57
+ }
58
+ calculateHookFee(amount, dynamicFeePPM, protocolFeePPM) {
59
+ if (amount === 0n || dynamicFeePPM === 0n || protocolFeePPM === 0n) {
60
+ return 0n;
61
+ }
62
+ return (amount * dynamicFeePPM * protocolFeePPM) / 1000000000000n;
63
+ }
64
+ async ensureContracts() {
65
+ if (this.policyManagerContract && this.dynamicFeeManagerContract) {
66
+ return;
67
+ }
68
+ const spotContract = new this.dexHelper.web3Provider.eth.Contract(SpotHook_json_1.default, this.hookAddress);
69
+ const [policyManager, dynamicFeeManager] = await Promise.all([
70
+ spotContract.methods.policyManager().call(),
71
+ spotContract.methods.dynamicFeeManager().call(),
72
+ ]);
73
+ this.policyManagerAddress = policyManager.toLowerCase();
74
+ this.dynamicFeeManagerAddress = dynamicFeeManager.toLowerCase();
75
+ this.policyManagerContract = new this.dexHelper.web3Provider.eth.Contract(SpotPolicyManager_json_1.default, this.policyManagerAddress);
76
+ this.dynamicFeeManagerContract =
77
+ new this.dexHelper.web3Provider.eth.Contract(SpotDynamicFeeManager_json_1.default, this.dynamicFeeManagerAddress);
78
+ }
79
+ async loadFeeState(poolId, blockNumber) {
80
+ await this.ensureContracts();
81
+ const normalizedPoolId = poolId.toLowerCase();
82
+ const cached = this.feeCache.get(normalizedPoolId);
83
+ if (cached && cached.blockNumber === blockNumber) {
84
+ return cached;
85
+ }
86
+ const [manualFeeRaw, protocolFeeRaw, feeStateRaw] = await Promise.all([
87
+ this.policyManagerContract.methods.getManualFee(normalizedPoolId).call({}, blockNumber),
88
+ this.policyManagerContract.methods.getPoolPOLShare(normalizedPoolId).call({}, blockNumber),
89
+ this.dynamicFeeManagerContract.methods.getFeeState(normalizedPoolId).call({}, blockNumber),
90
+ ]);
91
+ const manualFeeResponse = manualFeeRaw;
92
+ const manualFee = BigInt(manualFeeResponse.manualFee ?? manualFeeResponse[0]);
93
+ const hasManualFee = Boolean(manualFeeResponse.isSet ?? manualFeeResponse[1]);
94
+ const feeStateResponse = feeStateRaw;
95
+ const baseFee = BigInt(feeStateResponse.baseFeePpm ?? feeStateResponse[0]);
96
+ const surgeFee = BigInt(feeStateResponse.surgeFeePpm ?? feeStateResponse[1]);
97
+ const protocolFeePPM = BigInt(protocolFeeRaw);
98
+ const dynamicFeePPM = hasManualFee ? manualFee : baseFee + surgeFee;
99
+ const entry = {
100
+ blockNumber,
101
+ dynamicFeePPM,
102
+ protocolFeePPM,
103
+ };
104
+ this.feeCache.set(normalizedPoolId, entry);
105
+ return entry;
106
+ }
107
+ }
108
+ exports.SpotHook = SpotHook;
109
+ //# sourceMappingURL=spot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spot.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/hooks/spot.ts"],"names":[],"mappings":"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"}