@paraswap/dex-lib 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/build/abi/BProtocol.json +1155 -0
  2. package/build/abi/Jarvis.json +1172 -0
  3. package/build/abi/MStableAsset.json +1545 -0
  4. package/build/abi/OneInchLp.json +1304 -0
  5. package/build/abi/Onebit.json +736 -0
  6. package/build/abi/Shell.json +1294 -0
  7. package/build/abi/TraderJoeV2Router.json +50 -0
  8. package/build/abi/idle-dao/idle-cdo-factory.json +38 -0
  9. package/build/abi/idle-dao/idle-cdo.json +1245 -0
  10. package/build/abi/infusion/InfusionFactory.json +147 -0
  11. package/build/abi/infusion/InfusionPair.json +658 -0
  12. package/build/abi/infusion/InfusionRouter.json +442 -0
  13. package/build/abi/maker-psm/pot.json +322 -0
  14. package/build/abi/maker-psm/psm.json +243 -0
  15. package/build/abi/maker-psm/vat.json +363 -0
  16. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
  17. package/build/abi/quick-perps/fast-price-events.json +70 -0
  18. package/build/abi/quick-perps/fast-price-feed.json +741 -0
  19. package/build/abi/quick-perps/reader.json +313 -0
  20. package/build/abi/quick-perps/vault-price-feed.json +323 -0
  21. package/build/abi/quick-perps/vault.json +1953 -0
  22. package/build/abi/uniswap-v2/excalibur-pool.json +881 -0
  23. package/build/abi/uniswap-v2/mdex-factory.json +759 -0
  24. package/build/abi/wUSDM.json +757 -0
  25. package/build/abi/zrx.v2.json +1967 -0
  26. package/build/abi/zrx.v3.json +3454 -0
  27. package/build/abi/zrx.v4.json +2193 -0
  28. package/build/config.js +24 -24
  29. package/build/dex/OneInchLp.d.ts +24 -0
  30. package/build/dex/OneInchLp.js +43 -0
  31. package/build/dex/OneInchLp.js.map +1 -0
  32. package/build/dex/bProtocol/bProtocol.d.ts +15 -0
  33. package/build/dex/bProtocol/bProtocol.js +56 -0
  34. package/build/dex/bProtocol/bProtocol.js.map +1 -0
  35. package/build/dex/bProtocol/types.d.ts +11 -0
  36. package/build/dex/bProtocol/types.js +8 -0
  37. package/build/dex/bProtocol/types.js.map +1 -0
  38. package/build/dex/ekubo/pools/base-pool.d.ts +47 -0
  39. package/build/dex/ekubo/pools/base-pool.js +184 -0
  40. package/build/dex/ekubo/pools/base-pool.js.map +1 -0
  41. package/build/dex/ekubo/pools/iface.d.ts +46 -0
  42. package/build/dex/ekubo/pools/iface.js +75 -0
  43. package/build/dex/ekubo/pools/iface.js.map +1 -0
  44. package/build/dex/ekubo/pools/math/price.d.ts +7 -0
  45. package/build/dex/ekubo/pools/math/price.js +112 -0
  46. package/build/dex/ekubo/pools/math/price.js.map +1 -0
  47. package/build/dex/ekubo/pools/oracle-pool.d.ts +10 -0
  48. package/build/dex/ekubo/pools/oracle-pool.js +19 -0
  49. package/build/dex/ekubo/pools/oracle-pool.js.map +1 -0
  50. package/build/dex/ekubo/pools/pool-utils.d.ts +44 -0
  51. package/build/dex/ekubo/pools/pool-utils.js +240 -0
  52. package/build/dex/ekubo/pools/pool-utils.js.map +1 -0
  53. package/build/dex/idle-dao/config.d.ts +5 -0
  54. package/build/dex/idle-dao/config.js +24 -0
  55. package/build/dex/idle-dao/config.js.map +1 -0
  56. package/build/dex/idle-dao/idle-dao.d.ts +42 -0
  57. package/build/dex/idle-dao/idle-dao.js +279 -0
  58. package/build/dex/idle-dao/idle-dao.js.map +1 -0
  59. package/build/dex/idle-dao/token_list.d.ts +4 -0
  60. package/build/dex/idle-dao/token_list.js +289 -0
  61. package/build/dex/idle-dao/token_list.js.map +1 -0
  62. package/build/dex/idle-dao/tokens.d.ts +9 -0
  63. package/build/dex/idle-dao/tokens.js +68 -0
  64. package/build/dex/idle-dao/tokens.js.map +1 -0
  65. package/build/dex/idle-dao/types.d.ts +35 -0
  66. package/build/dex/idle-dao/types.js +11 -0
  67. package/build/dex/idle-dao/types.js.map +1 -0
  68. package/build/dex/idle-dao/utils.d.ts +8 -0
  69. package/build/dex/idle-dao/utils.js +149 -0
  70. package/build/dex/idle-dao/utils.js.map +1 -0
  71. package/build/dex/infusion/config.d.ts +3 -0
  72. package/build/dex/infusion/config.js +20 -0
  73. package/build/dex/infusion/config.js.map +1 -0
  74. package/build/dex/infusion/infusion-stable-pool.d.ts +4 -0
  75. package/build/dex/infusion/infusion-stable-pool.js +74 -0
  76. package/build/dex/infusion/infusion-stable-pool.js.map +1 -0
  77. package/build/dex/infusion/infusion.d.ts +51 -0
  78. package/build/dex/infusion/infusion.js +500 -0
  79. package/build/dex/infusion/infusion.js.map +1 -0
  80. package/build/dex/infusion/types.d.ts +45 -0
  81. package/build/dex/infusion/types.js.map +1 -0
  82. package/build/dex/infusion/utils/isStablePair.d.ts +2 -0
  83. package/build/dex/infusion/utils/isStablePair.js +18 -0
  84. package/build/dex/infusion/utils/isStablePair.js.map +1 -0
  85. package/build/dex/jarvis.d.ts +56 -0
  86. package/build/dex/jarvis.js +163 -0
  87. package/build/dex/jarvis.js.map +1 -0
  88. package/build/dex/mStable.d.ts +44 -0
  89. package/build/dex/mStable.js +75 -0
  90. package/build/dex/mStable.js.map +1 -0
  91. package/build/dex/maker-psm/config.d.ts +11 -0
  92. package/build/dex/maker-psm/config.js +53 -0
  93. package/build/dex/maker-psm/config.js.map +1 -0
  94. package/build/dex/maker-psm/maker-psm.d.ts +103 -0
  95. package/build/dex/maker-psm/maker-psm.js +493 -0
  96. package/build/dex/maker-psm/maker-psm.js.map +1 -0
  97. package/build/dex/maker-psm/types.d.ts +39 -0
  98. package/build/{generic-swap-transaction-builder/dex-encoder/ports.js → dex/maker-psm/types.js} +1 -1
  99. package/build/dex/maker-psm/types.js.map +1 -0
  100. package/build/dex/onebit/onebit.d.ts +16 -0
  101. package/build/dex/onebit/onebit.js +61 -0
  102. package/build/dex/onebit/onebit.js.map +1 -0
  103. package/build/dex/onebit/types.d.ts +14 -0
  104. package/build/dex/onebit/types.js +8 -0
  105. package/build/dex/onebit/types.js.map +1 -0
  106. package/build/dex/quick-perps/config.d.ts +11 -0
  107. package/build/dex/quick-perps/config.js +27 -0
  108. package/build/dex/quick-perps/config.js.map +1 -0
  109. package/build/dex/quick-perps/fast-price-feed.d.ts +26 -0
  110. package/build/dex/quick-perps/fast-price-feed.js +184 -0
  111. package/build/dex/quick-perps/fast-price-feed.js.map +1 -0
  112. package/build/dex/quick-perps/pool.d.ts +21 -0
  113. package/build/dex/quick-perps/pool.js +229 -0
  114. package/build/dex/quick-perps/pool.js.map +1 -0
  115. package/build/dex/quick-perps/quick-perps.d.ts +53 -0
  116. package/build/dex/quick-perps/quick-perps.js +247 -0
  117. package/build/dex/quick-perps/quick-perps.js.map +1 -0
  118. package/build/dex/quick-perps/types.d.ts +98 -0
  119. package/build/{executor/encoding-types.js → dex/quick-perps/types.js} +1 -1
  120. package/build/dex/quick-perps/types.js.map +1 -0
  121. package/build/dex/quick-perps/usdq.d.ts +15 -0
  122. package/build/dex/quick-perps/usdq.js +62 -0
  123. package/build/dex/quick-perps/usdq.js.map +1 -0
  124. package/build/dex/quick-perps/vault-price-feed.d.ts +43 -0
  125. package/build/dex/quick-perps/vault-price-feed.js +203 -0
  126. package/build/dex/quick-perps/vault-price-feed.js.map +1 -0
  127. package/build/dex/quick-perps/vault-utils.d.ts +8 -0
  128. package/build/dex/quick-perps/vault-utils.js +42 -0
  129. package/build/dex/quick-perps/vault-utils.js.map +1 -0
  130. package/build/dex/quick-perps/vault.d.ts +46 -0
  131. package/build/dex/quick-perps/vault.js +182 -0
  132. package/build/dex/quick-perps/vault.js.map +1 -0
  133. package/build/dex/se-vlr/config.d.ts +3 -0
  134. package/build/dex/se-vlr/config.js +24 -0
  135. package/build/dex/se-vlr/config.js.map +1 -0
  136. package/build/dex/se-vlr/se-vlr-pool.d.ts +39 -0
  137. package/build/dex/se-vlr/se-vlr-pool.js +70 -0
  138. package/build/dex/se-vlr/se-vlr-pool.js.map +1 -0
  139. package/build/dex/se-vlr/se-vlr.d.ts +35 -0
  140. package/build/dex/se-vlr/se-vlr.js +131 -0
  141. package/build/dex/se-vlr/se-vlr.js.map +1 -0
  142. package/build/dex/se-vlr/types.d.ts +6 -0
  143. package/build/dex/se-vlr/types.js +3 -0
  144. package/build/dex/se-vlr/types.js.map +1 -0
  145. package/build/dex/shell.d.ts +25 -0
  146. package/build/dex/shell.js +41 -0
  147. package/build/dex/shell.js.map +1 -0
  148. package/build/dex/solidly/forks-override/aerodrome.d.ts +14 -0
  149. package/build/dex/solidly/forks-override/aerodrome.js +46 -0
  150. package/build/dex/solidly/forks-override/aerodrome.js.map +1 -0
  151. package/build/dex/solidly/forks-override/chronos.d.ts +23 -0
  152. package/build/dex/solidly/forks-override/chronos.js +141 -0
  153. package/build/dex/solidly/forks-override/chronos.js.map +1 -0
  154. package/build/dex/solidly/forks-override/usdfi.d.ts +8 -0
  155. package/build/dex/solidly/forks-override/usdfi.js +15 -0
  156. package/build/dex/solidly/forks-override/usdfi.js.map +1 -0
  157. package/build/dex/solidly/forks-override/velocimeter.d.ts +23 -0
  158. package/build/dex/solidly/forks-override/velocimeter.js +77 -0
  159. package/build/dex/solidly/forks-override/velocimeter.js.map +1 -0
  160. package/build/dex/tessera/types.d.ts +3 -0
  161. package/build/dex/tessera/types.js +3 -0
  162. package/build/dex/tessera/types.js.map +1 -0
  163. package/build/dex/trader-joe-v2.d.ts +40 -0
  164. package/build/dex/trader-joe-v2.js +74 -0
  165. package/build/dex/trader-joe-v2.js.map +1 -0
  166. package/build/dex/uniswap-v2/dfyn.d.ts +19 -0
  167. package/build/dex/uniswap-v2/dfyn.js +61 -0
  168. package/build/dex/uniswap-v2/dfyn.js.map +1 -0
  169. package/build/dex/uniswap-v2/excalibur.d.ts +24 -0
  170. package/build/dex/uniswap-v2/excalibur.js +47 -0
  171. package/build/dex/uniswap-v2/excalibur.js.map +1 -0
  172. package/build/dex/uniswap-v2/mdex.d.ts +24 -0
  173. package/build/dex/uniswap-v2/mdex.js +50 -0
  174. package/build/dex/uniswap-v2/mdex.js.map +1 -0
  175. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +24 -0
  176. package/build/dex/uniswap-v2/nomiswap-v2.js +57 -0
  177. package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -0
  178. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js +160 -0
  179. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js.map +1 -0
  180. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +94 -0
  181. package/build/dex/uniswap-v3/uniswap-v3-new.js +923 -0
  182. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +1 -0
  183. package/build/dex/uniswap-v4/contract-math/Position.d.ts +3 -0
  184. package/build/dex/uniswap-v4/contract-math/Position.js +10 -0
  185. package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -0
  186. package/build/dex/usual-bond/config.d.ts +3 -0
  187. package/build/dex/usual-bond/config.js +13 -0
  188. package/build/dex/usual-bond/config.js.map +1 -0
  189. package/build/dex/usual-bond/types.d.ts +7 -0
  190. package/build/dex/usual-bond/types.js +3 -0
  191. package/build/dex/usual-bond/types.js.map +1 -0
  192. package/build/dex/usual-bond/usual-bond.d.ts +35 -0
  193. package/build/dex/usual-bond/usual-bond.js +176 -0
  194. package/build/dex/usual-bond/usual-bond.js.map +1 -0
  195. package/build/dex/wusdm/config.d.ts +3 -0
  196. package/build/dex/wusdm/config.js +43 -0
  197. package/build/dex/wusdm/config.js.map +1 -0
  198. package/build/dex/wusdm/constants.d.ts +2 -0
  199. package/build/dex/wusdm/constants.js +6 -0
  200. package/build/dex/wusdm/constants.js.map +1 -0
  201. package/build/dex/wusdm/types.d.ts +18 -0
  202. package/build/dex/wusdm/types.js +11 -0
  203. package/build/dex/wusdm/types.js.map +1 -0
  204. package/build/dex/wusdm/wusdm-pool.d.ts +21 -0
  205. package/build/dex/wusdm/wusdm-pool.js +74 -0
  206. package/build/dex/wusdm/wusdm-pool.js.map +1 -0
  207. package/build/dex/wusdm/wusdm.d.ts +46 -0
  208. package/build/dex/wusdm/wusdm.js +243 -0
  209. package/build/dex/wusdm/wusdm.js.map +1 -0
  210. package/build/dex/zerox/config.d.ts +2 -0
  211. package/build/dex/zerox/config.js +33 -0
  212. package/build/dex/zerox/config.js.map +1 -0
  213. package/build/dex/zerox/index.d.ts +22 -0
  214. package/build/dex/zerox/index.js +225 -0
  215. package/build/dex/zerox/index.js.map +1 -0
  216. package/build/dex/zerox/order.d.ts +88 -0
  217. package/build/dex/zerox/order.js +53 -0
  218. package/build/dex/zerox/order.js.map +1 -0
  219. package/build/dex/zerox/types.d.ts +73 -0
  220. package/build/dex/zerox/types.js +21 -0
  221. package/build/dex/zerox/types.js.map +1 -0
  222. package/build/executor/Executor01BytecodeBuilder.js +4 -4
  223. package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
  224. package/build/executor/Executor02BytecodeBuilder.js +4 -4
  225. package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
  226. package/build/executor/Executor03BytecodeBuilder.d.ts +0 -15
  227. package/build/executor/Executor03BytecodeBuilder.js +1 -61
  228. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  229. package/build/executor/ExecutorBytecodeBuilder.d.ts +4 -0
  230. package/build/executor/ExecutorBytecodeBuilder.js +39 -0
  231. package/build/executor/ExecutorBytecodeBuilder.js.map +1 -1
  232. package/package.json +1 -1
  233. package/build/abi/pancakeswap-infinity/cl-pool-manager.json +0 -80
  234. package/build/dex/fluid-dex/scripts/measure-calc-time.js +0 -178
  235. package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +0 -1
  236. package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +0 -1
  237. package/build/dex/uniswap-v4/api-go/compare-pricing.js +0 -187
  238. package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +0 -1
  239. package/build/dex/uniswap-v4/api-go/compare-states.d.ts +0 -1
  240. package/build/dex/uniswap-v4/api-go/compare-states.js +0 -149
  241. package/build/dex/uniswap-v4/api-go/compare-states.js.map +0 -1
  242. package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
  243. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +0 -140
  244. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +0 -1
  245. package/build/executor/__test-utils__/snapshot-test-helpers.d.ts +0 -10
  246. package/build/executor/__test-utils__/snapshot-test-helpers.js +0 -72
  247. package/build/executor/__test-utils__/snapshot-test-helpers.js.map +0 -1
  248. package/build/executor/address-utils.d.ts +0 -2
  249. package/build/executor/address-utils.js +0 -7
  250. package/build/executor/address-utils.js.map +0 -1
  251. package/build/executor/approval.d.ts +0 -9
  252. package/build/executor/approval.js +0 -29
  253. package/build/executor/approval.js.map +0 -1
  254. package/build/executor/encoding-context.d.ts +0 -4
  255. package/build/executor/encoding-context.js +0 -54
  256. package/build/executor/encoding-context.js.map +0 -1
  257. package/build/executor/encoding-types.d.ts +0 -75
  258. package/build/executor/encoding-types.js.map +0 -1
  259. package/build/executor/factory.d.ts +0 -4
  260. package/build/executor/factory.js +0 -23
  261. package/build/executor/factory.js.map +0 -1
  262. package/build/executor/route-plan.d.ts +0 -8
  263. package/build/executor/route-plan.js +0 -109
  264. package/build/executor/route-plan.js.map +0 -1
  265. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.d.ts +0 -6
  266. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js +0 -39
  267. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js.map +0 -1
  268. package/build/generic-swap-transaction-builder/dex-encoder/index.d.ts +0 -4
  269. package/build/generic-swap-transaction-builder/dex-encoder/index.js +0 -21
  270. package/build/generic-swap-transaction-builder/dex-encoder/index.js.map +0 -1
  271. package/build/generic-swap-transaction-builder/dex-encoder/ports.d.ts +0 -26
  272. package/build/generic-swap-transaction-builder/dex-encoder/ports.js.map +0 -1
  273. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.d.ts +0 -22
  274. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js +0 -299
  275. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js.map +0 -1
  276. package/build/generic-swap-transaction-builder/dex-encoder/types.d.ts +0 -207
  277. package/build/generic-swap-transaction-builder/dex-encoder/types.js +0 -194
  278. package/build/generic-swap-transaction-builder/dex-encoder/types.js.map +0 -1
  279. package/build/generic-swap-transaction-builder/orchestration.d.ts +0 -65
  280. package/build/generic-swap-transaction-builder/orchestration.js +0 -198
  281. package/build/generic-swap-transaction-builder/orchestration.js.map +0 -1
  282. package/build/generic-swap-transaction-builder/resolved/build-transaction.d.ts +0 -13
  283. package/build/generic-swap-transaction-builder/resolved/build-transaction.js +0 -343
  284. package/build/generic-swap-transaction-builder/resolved/build-transaction.js.map +0 -1
  285. package/build/generic-swap-transaction-builder/resolved/index.d.ts +0 -4
  286. package/build/generic-swap-transaction-builder/resolved/index.js +0 -21
  287. package/build/generic-swap-transaction-builder/resolved/index.js.map +0 -1
  288. package/build/generic-swap-transaction-builder/resolved/route-plan.d.ts +0 -2
  289. package/build/generic-swap-transaction-builder/resolved/route-plan.js +0 -11
  290. package/build/generic-swap-transaction-builder/resolved/route-plan.js.map +0 -1
  291. package/build/generic-swap-transaction-builder/resolved/types.d.ts +0 -67
  292. package/build/generic-swap-transaction-builder/resolved/types.js.map +0 -1
  293. package/build/generic-swap-transaction-builder/resolved/validation.d.ts +0 -10
  294. package/build/generic-swap-transaction-builder/resolved/validation.js +0 -69
  295. package/build/generic-swap-transaction-builder/resolved/validation.js.map +0 -1
  296. /package/build/{generic-swap-transaction-builder/resolved → dex/infusion}/types.js +0 -0
  297. /package/build/dex/{fluid-dex/scripts/measure-calc-time.d.ts → uniswap-v3/scripts/bench-all-dexes.d.ts} +0 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EkuboPool = exports.NamedEventHandlers = void 0;
4
+ const stateful_event_subscriber_1 = require("../../../stateful-event-subscriber");
5
+ class NamedEventHandlers {
6
+ iface;
7
+ handlers;
8
+ constructor(iface, handlers) {
9
+ this.iface = iface;
10
+ this.handlers = handlers;
11
+ }
12
+ parseLog(log, oldState, blockHeader) {
13
+ const event = this.iface.parseLog(log);
14
+ return this.handlers[event.name]?.(event.args, oldState, blockHeader);
15
+ }
16
+ }
17
+ exports.NamedEventHandlers = NamedEventHandlers;
18
+ const BASE_GAS_COST = 22_000;
19
+ class EkuboPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
20
+ key;
21
+ namedEventHandlers;
22
+ anonymousEventHandlers;
23
+ quoteFn;
24
+ constructor(parentName, dexHelper, logger, key, namedEventHandlers, anonymousEventHandlers, quoteFn) {
25
+ super(parentName, key.string_id, dexHelper, logger);
26
+ this.key = key;
27
+ this.namedEventHandlers = namedEventHandlers;
28
+ this.anonymousEventHandlers = anonymousEventHandlers;
29
+ this.quoteFn = quoteFn;
30
+ this.addressesSubscribed = [
31
+ ...new Set(Object.keys(namedEventHandlers).concat(Object.keys(anonymousEventHandlers))),
32
+ ];
33
+ }
34
+ /**
35
+ * The function is called every time any of the subscribed
36
+ * addresses release log. The function accepts the current
37
+ * state, updates the state according to the log, and returns
38
+ * the updated state.
39
+ * @param state - Current state of event subscriber
40
+ * @param log - Log released by one of the subscribed addresses
41
+ * @returns Updates state of the event subscriber after the log
42
+ */
43
+ processLog(state, log, blockHeader) {
44
+ const emitter = log.address;
45
+ if (log.topics.length === 0) {
46
+ return this.anonymousEventHandlers[emitter]?.(log.data, state, blockHeader);
47
+ }
48
+ return this.namedEventHandlers[emitter]?.parseLog(log, state, blockHeader);
49
+ }
50
+ quote(amount, token, blockNumber) {
51
+ const isToken1 = token === this.key.token1;
52
+ if (!isToken1 && this.key.token0 !== token) {
53
+ throw new Error('Invalid token');
54
+ }
55
+ if (amount === 0n) {
56
+ return {
57
+ consumedAmount: 0n,
58
+ calculatedAmount: 0n,
59
+ gasConsumed: 0,
60
+ skipAhead: 0,
61
+ };
62
+ }
63
+ const state = this.getState(blockNumber);
64
+ if (state === null) {
65
+ throw new Error(`Quote for block number ${blockNumber} requested but state is not recent enough`);
66
+ }
67
+ const quote = this.quoteFn(amount, isToken1, state);
68
+ if (quote.calculatedAmount !== 0n) {
69
+ quote.gasConsumed += BASE_GAS_COST;
70
+ }
71
+ return quote;
72
+ }
73
+ }
74
+ exports.EkuboPool = EkuboPool;
75
+ //# sourceMappingURL=iface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/iface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { BigNumber } from 'ethers';
2
+ export declare function floatSqrtRatioToFixed(sqrtRatioFloat: bigint): bigint;
3
+ export declare function fixedSqrtRatioToFloat(sqrtRatioFixed: bigint): bigint;
4
+ export declare const MAX_SQRT_RATIO_FLOAT: BigNumber;
5
+ export declare const MIN_SQRT_RATIO_FLOAT: BigNumber;
6
+ export declare function nextSqrtRatioFromAmount0(sqrtRatio: bigint, liquidity: bigint, amount0: bigint): bigint | null;
7
+ export declare function nextSqrtRatioFromAmount1(sqrtRatio: bigint, liquidity: bigint, amount1: bigint): bigint | null;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MIN_SQRT_RATIO_FLOAT = exports.MAX_SQRT_RATIO_FLOAT = void 0;
4
+ exports.floatSqrtRatioToFixed = floatSqrtRatioToFixed;
5
+ exports.fixedSqrtRatioToFloat = fixedSqrtRatioToFloat;
6
+ exports.nextSqrtRatioFromAmount0 = nextSqrtRatioFromAmount0;
7
+ exports.nextSqrtRatioFromAmount1 = nextSqrtRatioFromAmount1;
8
+ const ethers_1 = require("ethers");
9
+ const constants_1 = require("./constants");
10
+ const tick_1 = require("./tick");
11
+ const BIT_MASK = 0xc00000000000000000000000n;
12
+ const NOT_BIT_MASK = 0x3fffffffffffffffffffffffn;
13
+ function floatSqrtRatioToFixed(sqrtRatioFloat) {
14
+ return sqrtRatioFloat === 0n
15
+ ? constants_1.TWO_POW_128 // Default value for the case that the passed value comes from an uninitialized pool
16
+ : (sqrtRatioFloat & NOT_BIT_MASK) <<
17
+ (2n + ((sqrtRatioFloat & BIT_MASK) >> 89n));
18
+ }
19
+ function fixedSqrtRatioToFloat(sqrtRatioFixed) {
20
+ if (sqrtRatioFixed >= constants_1.TWO_POW_192) {
21
+ throw new Error('Out of bounds');
22
+ }
23
+ else if (sqrtRatioFixed >= constants_1.TWO_POW_160) {
24
+ return (sqrtRatioFixed >> 98n) + BIT_MASK;
25
+ }
26
+ else if (sqrtRatioFixed >= constants_1.TWO_POW_128) {
27
+ return (sqrtRatioFixed >> 66n) + constants_1.TWO_POW_95;
28
+ }
29
+ else if (sqrtRatioFixed >= constants_1.TWO_POW_96) {
30
+ return (sqrtRatioFixed >> 34n) + constants_1.TWO_POW_94;
31
+ }
32
+ else {
33
+ return sqrtRatioFixed >> 2n;
34
+ }
35
+ }
36
+ exports.MAX_SQRT_RATIO_FLOAT = ethers_1.BigNumber.from(fixedSqrtRatioToFloat(tick_1.MAX_SQRT_RATIO));
37
+ exports.MIN_SQRT_RATIO_FLOAT = ethers_1.BigNumber.from(fixedSqrtRatioToFloat(tick_1.MIN_SQRT_RATIO));
38
+ function nextSqrtRatioFromAmount0(sqrtRatio, liquidity, amount0) {
39
+ if (amount0 === 0n)
40
+ return sqrtRatio;
41
+ if (liquidity === 0n)
42
+ throw new Error('NO_LIQUIDITY');
43
+ const numerator1 = liquidity << 128n;
44
+ // because quotient is rounded down, this price movement is also rounded towards sqrt_ratio
45
+ if (amount0 < 0n) {
46
+ const product = amount0 * -1n * sqrtRatio;
47
+ if (product >= constants_1.MAX_U256) {
48
+ return null;
49
+ }
50
+ const denominator = numerator1 - product;
51
+ if (denominator < 0n) {
52
+ return null;
53
+ }
54
+ const num = numerator1 * sqrtRatio;
55
+ const result = num / denominator + (num % denominator === 0n ? 0n : 1n);
56
+ if (result > constants_1.MAX_U256) {
57
+ return null;
58
+ }
59
+ return result;
60
+ }
61
+ else {
62
+ const denomP1 = numerator1 / sqrtRatio;
63
+ const denom = denomP1 + amount0;
64
+ const quotient = numerator1 / denom;
65
+ const remainder = numerator1 % denom;
66
+ if (remainder === 0n)
67
+ return quotient;
68
+ const sum = quotient + 1n;
69
+ if (sum > constants_1.MAX_U256)
70
+ return null;
71
+ return sum;
72
+ }
73
+ }
74
+ function nextSqrtRatioFromAmount1(sqrtRatio, liquidity, amount1) {
75
+ if (amount1 === 0n)
76
+ return sqrtRatio;
77
+ if (liquidity === 0n)
78
+ throw new Error('NO_LIQUIDITY');
79
+ const amountShifted = amount1 << 128n;
80
+ const quotient = amountShifted / liquidity;
81
+ const remainder = amountShifted % liquidity;
82
+ // because quotient is rounded down, this price movement is also rounded towards sqrt_ratio
83
+ if (amount1 < 0n) {
84
+ // adding amount1, taking out amount0
85
+ const res = sqrtRatio + quotient;
86
+ if (res < 0n) {
87
+ return null;
88
+ }
89
+ if (remainder === 0n) {
90
+ return res;
91
+ }
92
+ else {
93
+ if (res != 0n) {
94
+ return res - 1n;
95
+ }
96
+ else {
97
+ return null;
98
+ }
99
+ }
100
+ }
101
+ else {
102
+ // adding amount1, taking out amount0, price goes up
103
+ const res = sqrtRatio + quotient;
104
+ if (res > constants_1.MAX_U256) {
105
+ return null;
106
+ }
107
+ else {
108
+ return res;
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/price.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Contract } from 'ethers';
2
+ import { IDexHelper } from '../../../dex-helper';
3
+ import { Logger } from '../../../types';
4
+ import { BasePool, Quote } from './base-pool';
5
+ import { Interface } from '@ethersproject/abi';
6
+ import { PoolKey } from './pool-utils';
7
+ export declare class OraclePool extends BasePool {
8
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, coreIface: Interface, dataFetcher: Contract, key: PoolKey, core: Contract);
9
+ quote(amount: bigint, token: bigint, blockNumber: number): Quote;
10
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OraclePool = void 0;
4
+ const base_pool_1 = require("./base-pool");
5
+ const GAS_COST_OF_UPDATING_ORACLE_SNAPSHOT = 15_000;
6
+ class OraclePool extends base_pool_1.BasePool {
7
+ constructor(parentName, network, dexHelper, logger, coreIface, dataFetcher, key, core) {
8
+ super(parentName, network, dexHelper, logger, coreIface, dataFetcher, key, core);
9
+ }
10
+ quote(amount, token, blockNumber) {
11
+ let baseQuote = super.quote(amount, token, blockNumber);
12
+ if (baseQuote.gasConsumed > 0n) {
13
+ baseQuote.gasConsumed += GAS_COST_OF_UPDATING_ORACLE_SNAPSHOT;
14
+ }
15
+ return baseQuote;
16
+ }
17
+ }
18
+ exports.OraclePool = OraclePool;
19
+ //# sourceMappingURL=oracle-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oracle-pool.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/oracle-pool.ts"],"names":[],"mappings":";;;AAGA,2CAA8C;AAI9C,MAAM,oCAAoC,GAAG,MAAM,CAAC;AAEpD,MAAa,UAAW,SAAQ,oBAAQ;IACtC,YACE,UAAkB,EAClB,OAAe,EACf,SAAqB,EACrB,MAAc,EACd,SAAoB,EACpB,WAAqB,EACrB,GAAY,EACZ,IAAc;QAEd,KAAK,CACH,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,GAAG,EACH,IAAI,CACL,CAAC;IACJ,CAAC;IAEe,KAAK,CACnB,MAAc,EACd,KAAa,EACb,WAAmB;QAEnB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAExD,IAAI,SAAS,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;YAC/B,SAAS,CAAC,WAAW,IAAI,oCAAoC,CAAC;QAChE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AApCD,gCAoCC"}
@@ -0,0 +1,44 @@
1
+ import { DeepReadonly } from 'ts-essentials';
2
+ import { Tick, QuoteData, AbiPoolKey } from '../types';
3
+ export declare namespace PoolState {
4
+ type Object = {
5
+ sqrtRatio: bigint;
6
+ liquidity: bigint;
7
+ activeTick: number;
8
+ readonly sortedTicks: Tick[];
9
+ activeTickIndex: number | null;
10
+ readonly checkedTicksBounds: readonly [number, number];
11
+ };
12
+ function fromQuoter(data: QuoteData, isFullRange: boolean): Object;
13
+ function fromSwappedEvent(oldState: DeepReadonly<Object>, sqrtRatioAfter: bigint, liquidityAfter: bigint, tickAfter: number): Object;
14
+ function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, [lowTick, highTick]: [number, number], liquidityDelta: bigint): Object | null;
15
+ function addLiquidityCutoffs(state: PoolState.Object): void;
16
+ function updateTick(state: Object, updatedTickNumber: number, liquidityDelta: bigint, upper: boolean, forceInsert: boolean): void;
17
+ function computeTvl(state: DeepReadonly<Object>): [bigint, bigint];
18
+ }
19
+ export declare class PoolKey {
20
+ readonly token0: bigint;
21
+ readonly token1: bigint;
22
+ readonly config: PoolConfig;
23
+ private _string_id?;
24
+ private _num_id?;
25
+ constructor(token0: bigint, token1: bigint, config: PoolConfig);
26
+ get string_id(): string;
27
+ get num_id(): bigint;
28
+ toAbi(): AbiPoolKey;
29
+ }
30
+ export declare class PoolConfig {
31
+ readonly tickSpacing: number;
32
+ readonly fee: bigint;
33
+ readonly extension: bigint;
34
+ private _compressed?;
35
+ constructor(tickSpacing: number, fee: bigint, extension: bigint, _compressed?: bigint | undefined);
36
+ get compressed(): bigint;
37
+ static fromCompressed(compressed: bigint): PoolConfig;
38
+ }
39
+ /**
40
+ * Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
41
+ * @param sortedTicks the sorted list of ticks to search in
42
+ * @param tick the tick to search for
43
+ */
44
+ export declare function findNearestInitializedTickIndex(sortedTicks: Tick[], tick: number): number | null;
@@ -0,0 +1,240 @@
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.PoolConfig = exports.PoolKey = exports.PoolState = void 0;
7
+ exports.findNearestInitializedTickIndex = findNearestInitializedTickIndex;
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const delta_1 = require("./math/delta");
10
+ const price_1 = require("./math/price");
11
+ const tick_1 = require("./math/tick");
12
+ const abi_1 = require("@ethersproject/abi");
13
+ const utils_1 = require("ethers/lib/utils");
14
+ const web3_utils_1 = require("web3-utils");
15
+ const utils_2 = require("../utils");
16
+ var PoolState;
17
+ (function (PoolState) {
18
+ function fromQuoter(data, isFullRange) {
19
+ const sortedTicks = data.ticks.map(({ number, liquidityDelta }) => ({
20
+ number,
21
+ liquidityDelta: liquidityDelta.toBigInt(),
22
+ }));
23
+ const liquidity = data.liquidity.toBigInt();
24
+ const sqrtRatioFloat = data.sqrtRatio.toBigInt();
25
+ const checkedTicksBounds = isFullRange
26
+ ? [tick_1.MIN_TICK, tick_1.MAX_TICK]
27
+ : [data.minTick, data.maxTick];
28
+ const state = {
29
+ sqrtRatio: sqrtRatioFloat === 0n
30
+ ? 2n ** 128n
31
+ : (0, price_1.floatSqrtRatioToFixed)(sqrtRatioFloat),
32
+ liquidity,
33
+ activeTick: data.tick,
34
+ sortedTicks,
35
+ activeTickIndex: null, // This will be filled in
36
+ checkedTicksBounds,
37
+ };
38
+ addLiquidityCutoffs(state);
39
+ return state;
40
+ }
41
+ PoolState.fromQuoter = fromQuoter;
42
+ function fromSwappedEvent(oldState, sqrtRatioAfter, liquidityAfter, tickAfter) {
43
+ const sortedTicks = oldState.sortedTicks;
44
+ const clonedTicks = lodash_1.default.cloneDeep(sortedTicks);
45
+ return {
46
+ sqrtRatio: sqrtRatioAfter,
47
+ liquidity: liquidityAfter,
48
+ activeTick: tickAfter,
49
+ sortedTicks: clonedTicks,
50
+ activeTickIndex: findNearestInitializedTickIndex(clonedTicks, tickAfter),
51
+ checkedTicksBounds: oldState.checkedTicksBounds,
52
+ };
53
+ }
54
+ PoolState.fromSwappedEvent = fromSwappedEvent;
55
+ function fromPositionUpdatedEvent(oldState, [lowTick, highTick], liquidityDelta) {
56
+ if (liquidityDelta === 0n) {
57
+ return null;
58
+ }
59
+ const clonedState = lodash_1.default.cloneDeep(oldState);
60
+ updateTick(clonedState, lowTick, liquidityDelta, false, false);
61
+ updateTick(clonedState, highTick, liquidityDelta, true, false);
62
+ if (clonedState.activeTick >= lowTick &&
63
+ clonedState.activeTick < highTick) {
64
+ clonedState.liquidity += liquidityDelta;
65
+ }
66
+ return clonedState;
67
+ }
68
+ PoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
69
+ function addLiquidityCutoffs(state) {
70
+ const { sortedTicks, liquidity, activeTick } = state;
71
+ let activeTickIndex = undefined;
72
+ let currentLiquidity = 0n;
73
+ // The liquidity added/removed by out-of-range initialized ticks (i.e. lower than minCheckedTickNumber)
74
+ let liquidityDeltaMin = 0n;
75
+ for (let i = 0; i < sortedTicks.length; i++) {
76
+ const tick = sortedTicks[i];
77
+ if (typeof activeTickIndex === 'undefined' && activeTick < tick.number) {
78
+ activeTickIndex = i === 0 ? null : i - 1;
79
+ liquidityDeltaMin = liquidity - currentLiquidity;
80
+ // We now need to switch to tracking the liquidity that needs to be cut off at maxCheckedTickNumber, therefore reset to the actual liquidity
81
+ currentLiquidity = liquidity;
82
+ }
83
+ currentLiquidity += tick.liquidityDelta;
84
+ }
85
+ if (typeof activeTickIndex === 'undefined') {
86
+ activeTickIndex = sortedTicks.length > 0 ? sortedTicks.length - 1 : null;
87
+ liquidityDeltaMin = liquidity - currentLiquidity;
88
+ currentLiquidity = liquidity;
89
+ }
90
+ state.activeTickIndex = activeTickIndex;
91
+ PoolState.updateTick(state, state.checkedTicksBounds[0], liquidityDeltaMin, false, true);
92
+ PoolState.updateTick(state, state.checkedTicksBounds[1], currentLiquidity, true, true);
93
+ }
94
+ PoolState.addLiquidityCutoffs = addLiquidityCutoffs;
95
+ function updateTick(state, updatedTickNumber, liquidityDelta, upper, forceInsert) {
96
+ const sortedTicks = state.sortedTicks;
97
+ if (upper) {
98
+ liquidityDelta = -liquidityDelta;
99
+ }
100
+ const nearestTickIndex = findNearestInitializedTickIndex(sortedTicks, updatedTickNumber);
101
+ const nearestTick = nearestTickIndex === null ? null : sortedTicks[nearestTickIndex];
102
+ const nearestTickNumber = nearestTick?.number;
103
+ const newTickReferenced = nearestTickNumber !== updatedTickNumber;
104
+ if (newTickReferenced) {
105
+ if (!forceInsert && nearestTickIndex === null) {
106
+ sortedTicks[0].liquidityDelta += liquidityDelta;
107
+ }
108
+ else if (!forceInsert && nearestTickIndex === sortedTicks.length - 1) {
109
+ sortedTicks[sortedTicks.length - 1].liquidityDelta += liquidityDelta;
110
+ }
111
+ else {
112
+ sortedTicks.splice(nearestTickIndex === null ? 0 : nearestTickIndex + 1, 0, {
113
+ number: updatedTickNumber,
114
+ liquidityDelta,
115
+ });
116
+ if (state.activeTick >= updatedTickNumber) {
117
+ state.activeTickIndex =
118
+ state.activeTickIndex === null ? 0 : state.activeTickIndex + 1;
119
+ }
120
+ }
121
+ }
122
+ else {
123
+ const newDelta = nearestTick.liquidityDelta + liquidityDelta;
124
+ if (newDelta === 0n &&
125
+ !state.checkedTicksBounds.includes(nearestTickNumber)) {
126
+ sortedTicks.splice(nearestTickIndex, 1);
127
+ if (state.activeTick >= updatedTickNumber) {
128
+ state.activeTickIndex--;
129
+ }
130
+ }
131
+ else {
132
+ nearestTick.liquidityDelta = newDelta;
133
+ }
134
+ }
135
+ }
136
+ PoolState.updateTick = updateTick;
137
+ function computeTvl(state) {
138
+ const stateSqrtRatio = state.sqrtRatio;
139
+ let [tvl0, tvl1] = [0n, 0n];
140
+ let liquidity = 0n;
141
+ let sqrtRatio = tick_1.MIN_SQRT_RATIO;
142
+ for (const tick of state.sortedTicks) {
143
+ const tickSqrtRatio = (0, tick_1.toSqrtRatio)(tick.number);
144
+ const minAmount1SqrtRatio = stateSqrtRatio > tickSqrtRatio ? tickSqrtRatio : stateSqrtRatio;
145
+ const maxAmount0SqrtRatio = stateSqrtRatio > sqrtRatio ? stateSqrtRatio : sqrtRatio;
146
+ if (sqrtRatio < minAmount1SqrtRatio) {
147
+ tvl1 += (0, delta_1.amount1Delta)(sqrtRatio, minAmount1SqrtRatio, liquidity, false);
148
+ }
149
+ if (maxAmount0SqrtRatio < tickSqrtRatio) {
150
+ tvl0 += (0, delta_1.amount0Delta)(maxAmount0SqrtRatio, tickSqrtRatio, liquidity, false);
151
+ }
152
+ sqrtRatio = tickSqrtRatio;
153
+ liquidity += tick.liquidityDelta;
154
+ }
155
+ return [tvl0, tvl1];
156
+ }
157
+ PoolState.computeTvl = computeTvl;
158
+ })(PoolState || (exports.PoolState = PoolState = {}));
159
+ class PoolKey {
160
+ token0;
161
+ token1;
162
+ config;
163
+ _string_id;
164
+ _num_id;
165
+ constructor(token0, token1, config) {
166
+ this.token0 = token0;
167
+ this.token1 = token1;
168
+ this.config = config;
169
+ }
170
+ get string_id() {
171
+ this._string_id ??= `${(0, utils_2.hexStringTokenPair)(this.token0, this.token1)}_${this.config.fee}_${this.config.tickSpacing}_${(0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.config.extension), 20)}`;
172
+ return this._string_id;
173
+ }
174
+ get num_id() {
175
+ this._num_id ??= BigInt((0, web3_utils_1.keccak256)(abi_1.defaultAbiCoder.encode(['address', 'address', 'bytes32'], [
176
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token0), 20),
177
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token1), 20),
178
+ (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.config.compressed), 32),
179
+ ])));
180
+ return this._num_id;
181
+ }
182
+ toAbi() {
183
+ return {
184
+ token0: (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token0), 20),
185
+ token1: (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.token1), 20),
186
+ config: (0, utils_1.hexZeroPad)((0, utils_1.hexlify)(this.config.compressed), 32),
187
+ };
188
+ }
189
+ }
190
+ exports.PoolKey = PoolKey;
191
+ class PoolConfig {
192
+ tickSpacing;
193
+ fee;
194
+ extension;
195
+ _compressed;
196
+ constructor(tickSpacing, fee, extension, _compressed) {
197
+ this.tickSpacing = tickSpacing;
198
+ this.fee = fee;
199
+ this.extension = extension;
200
+ this._compressed = _compressed;
201
+ }
202
+ get compressed() {
203
+ this._compressed ??=
204
+ BigInt(this.tickSpacing) + (this.fee << 32n) + (this.extension << 96n);
205
+ return this._compressed;
206
+ }
207
+ static fromCompressed(compressed) {
208
+ return new this(Number(compressed % 2n ** 32n), (compressed >> 32n) % 2n ** 64n, compressed >> 96n, compressed);
209
+ }
210
+ }
211
+ exports.PoolConfig = PoolConfig;
212
+ /**
213
+ * Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
214
+ * @param sortedTicks the sorted list of ticks to search in
215
+ * @param tick the tick to search for
216
+ */
217
+ function findNearestInitializedTickIndex(sortedTicks, tick) {
218
+ let l = 0, r = sortedTicks.length;
219
+ while (l < r) {
220
+ const mid = Math.floor((l + r) / 2);
221
+ const midTick = sortedTicks[mid].number;
222
+ if (midTick <= tick) {
223
+ // if it's the last index, or the next tick is greater, we've found our index
224
+ if (mid === sortedTicks.length - 1 ||
225
+ sortedTicks[mid + 1].number > tick) {
226
+ return mid;
227
+ }
228
+ else {
229
+ // otherwise our value is to the right of this one
230
+ l = mid;
231
+ }
232
+ }
233
+ else {
234
+ // the mid tick is greater than the one we want, so we know it's not mid
235
+ r = mid;
236
+ }
237
+ }
238
+ return null;
239
+ }
240
+ //# sourceMappingURL=pool-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-utils.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/pool-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ export declare const Config: DexConfigMap<DexParams>;
4
+ export declare const Adapters: Record<number, AdapterMappings>;
5
+ export declare const endpoints: Record<number, string>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.endpoints = exports.Adapters = exports.Config = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.Config = {
6
+ IdleDao: {
7
+ [constants_1.Network.MAINNET]: {
8
+ lendingGasCost: 328 * 1000,
9
+ factoryAddress: '0x3c9916bb9498f637e2fa86c2028e26275dc9a631',
10
+ },
11
+ },
12
+ };
13
+ exports.Adapters = {
14
+ [constants_1.Network.MAINNET]: {
15
+ [constants_1.SwapSide.SELL]: [{ name: '', index: 0 }],
16
+ [constants_1.SwapSide.BUY]: [{ name: '', index: 0 }],
17
+ },
18
+ };
19
+ exports.endpoints = {
20
+ [constants_1.Network.MAINNET]: 'https://api.idle.finance/pools',
21
+ [constants_1.Network.POLYGON]: 'https://api-polygon.idle.finance/pools',
22
+ [constants_1.Network.OPTIMISM]: 'https://api-optimism.idle.finance/pools',
23
+ };
24
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/idle-dao/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,MAAM,GAA4B;IAC7C,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,cAAc,EAAE,GAAG,GAAG,IAAI;YAC1B,cAAc,EAAE,4CAA4C;SAC7D;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACzC;CACF,CAAC;AAEW,QAAA,SAAS,GAA2B;IAC/C,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,gCAAgC;IACnD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,wCAAwC;IAC3D,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,yCAAyC;CAC9D,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam } from '../../types';
2
+ import { SwapSide, Network } from '../../constants';
3
+ import { Context, IDex } from '../../dex/idex';
4
+ import { IDexHelper } from '../../dex-helper/idex-helper';
5
+ import { IdleDaoData, IdleToken } from './types';
6
+ import { SimpleExchange } from '../simple-exchange';
7
+ export declare const TOKEN_LIST_CACHE_KEY = "token-list";
8
+ export declare class IdleDao extends SimpleExchange implements IDex<IdleDaoData> {
9
+ readonly network: Network;
10
+ readonly dexKey: string;
11
+ readonly dexHelper: IDexHelper;
12
+ protected config: import("./types").DexParams;
13
+ protected adapters: import("../../types").AdapterMappings;
14
+ readonly hasConstantPriceLargeAmounts = false;
15
+ readonly needWrapNative = true;
16
+ readonly isFeeOnTransferSupported = false;
17
+ static dexKeysWithNetwork: {
18
+ key: string;
19
+ networks: Network[];
20
+ }[];
21
+ logger: Logger;
22
+ private cdo;
23
+ private factory;
24
+ private tokenList;
25
+ private idleDaoAuthToken;
26
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, config?: import("./types").DexParams, adapters?: import("../../types").AdapterMappings);
27
+ getTokensList(blockNumber: number): Promise<Record<string, IdleToken>>;
28
+ initializePricing(blockNumber: number): Promise<void>;
29
+ initializeTokens(blockNumber?: number): Promise<void>;
30
+ getAdapters(side: SwapSide): {
31
+ name: string;
32
+ index: number;
33
+ }[] | null;
34
+ private _getPoolIdentifier;
35
+ getPoolIdentifiers(srcToken: Token, destToken: Token): Promise<string[]>;
36
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<IdleDaoData>>;
37
+ getTokenPrice(idleToken: IdleToken, blockNumber: number): Promise<bigint | null>;
38
+ getCalldataGasCost(poolPrices: PoolPrices<IdleDaoData>): number | number[];
39
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: IdleDaoData, side: SwapSide): AdapterExchangeParam;
40
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: IdleDaoData, side: SwapSide, _: Context, executorAddress: Address): DexExchangeParam;
41
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
42
+ }