@whetstone-research/doppler-sdk 0.0.22 → 0.0.24

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 (256) hide show
  1. package/README.md +553 -221
  2. package/dist/DopplerSDK.d.mts +12 -0
  3. package/dist/DopplerSDK.d.ts +12 -0
  4. package/dist/DopplerSDK.js +29 -26
  5. package/dist/DopplerSDK.mjs +28 -25
  6. package/dist/abis/bytecodes/derc20.js +2 -2
  7. package/dist/abis/bytecodes/derc20.mjs +1 -1
  8. package/dist/abis/bytecodes/derc2080.js +2 -2
  9. package/dist/abis/bytecodes/derc2080.mjs +1 -1
  10. package/dist/abis/bytecodes/doppler.js +2 -2
  11. package/dist/abis/bytecodes/doppler.mjs +1 -1
  12. package/dist/abis/bytecodes/dopplerDN404.js +2 -2
  13. package/dist/abis/bytecodes/dopplerDN404.mjs +1 -1
  14. package/dist/abis/bytecodes/stateView.js +2 -2
  15. package/dist/abis/bytecodes/stateView.mjs +1 -1
  16. package/dist/abis/bytecodes.js +10 -10
  17. package/dist/abis/bytecodes.mjs +5 -5
  18. package/dist/abis/index.d.mts +421 -10
  19. package/dist/abis/index.d.ts +421 -10
  20. package/dist/abis/index.js +41 -33
  21. package/dist/abis/index.mjs +6 -6
  22. package/dist/addresses.d.mts +6 -0
  23. package/dist/addresses.d.ts +6 -0
  24. package/dist/addresses.js +7 -7
  25. package/dist/addresses.mjs +2 -2
  26. package/dist/builders/DynamicAuctionBuilder.d.mts +2 -0
  27. package/dist/builders/DynamicAuctionBuilder.d.ts +2 -0
  28. package/dist/builders/DynamicAuctionBuilder.js +17 -16
  29. package/dist/builders/DynamicAuctionBuilder.mjs +16 -15
  30. package/dist/builders/MulticurveBuilder.d.mts +18 -5
  31. package/dist/builders/MulticurveBuilder.d.ts +18 -5
  32. package/dist/builders/MulticurveBuilder.js +17 -16
  33. package/dist/builders/MulticurveBuilder.mjs +16 -15
  34. package/dist/builders/StaticAuctionBuilder.js +17 -16
  35. package/dist/builders/StaticAuctionBuilder.mjs +16 -15
  36. package/dist/builders/index.js +25 -24
  37. package/dist/builders/index.mjs +18 -17
  38. package/dist/builders/shared.d.mts +1 -1
  39. package/dist/builders/shared.d.ts +1 -1
  40. package/dist/builders/shared.js +19 -17
  41. package/dist/builders/shared.mjs +15 -13
  42. package/dist/{chunk-3XYDN2XB.js → chunk-2A3B3NVB.js} +170 -25
  43. package/dist/chunk-2A3B3NVB.js.map +1 -0
  44. package/dist/{chunk-AZOBEWP3.mjs → chunk-3NMGCQJ4.mjs} +2 -2
  45. package/dist/chunk-3NMGCQJ4.mjs.map +1 -0
  46. package/dist/{chunk-CUB4F546.js → chunk-44CYUEPG.js} +25 -13
  47. package/dist/chunk-44CYUEPG.js.map +1 -0
  48. package/dist/{chunk-AZH2P4JK.mjs → chunk-5GQJRNFL.mjs} +3 -3
  49. package/dist/{chunk-AZH2P4JK.mjs.map → chunk-5GQJRNFL.mjs.map} +1 -1
  50. package/dist/{chunk-ZDTJ3BPS.js → chunk-5JHXBDZD.js} +20 -20
  51. package/dist/{chunk-ZDTJ3BPS.js.map → chunk-5JHXBDZD.js.map} +1 -1
  52. package/dist/{chunk-OGYWNJGI.js → chunk-5TQOT6CW.js} +2 -2
  53. package/dist/chunk-5TQOT6CW.js.map +1 -0
  54. package/dist/{chunk-COOVGAOE.js → chunk-65CESA3J.js} +19 -13
  55. package/dist/chunk-65CESA3J.js.map +1 -0
  56. package/dist/{chunk-5VV7STYK.js → chunk-7A4DBBXA.js} +141 -101
  57. package/dist/chunk-7A4DBBXA.js.map +1 -0
  58. package/dist/chunk-7ZUV6WPX.mjs +3 -0
  59. package/dist/{chunk-5TL5V6UX.mjs.map → chunk-7ZUV6WPX.mjs.map} +1 -1
  60. package/dist/{chunk-RXUJ4DUB.js → chunk-A2CJYRRQ.js} +28 -28
  61. package/dist/{chunk-RXUJ4DUB.js.map → chunk-A2CJYRRQ.js.map} +1 -1
  62. package/dist/{chunk-QQEOKYEX.js → chunk-BK3S6SVR.js} +383 -83
  63. package/dist/chunk-BK3S6SVR.js.map +1 -0
  64. package/dist/{chunk-S4IZ5ATO.js → chunk-BQZTELUX.js} +5 -5
  65. package/dist/{chunk-S4IZ5ATO.js.map → chunk-BQZTELUX.js.map} +1 -1
  66. package/dist/{chunk-WKKOBMXR.js → chunk-CFXXUZJY.js} +57 -22
  67. package/dist/chunk-CFXXUZJY.js.map +1 -0
  68. package/dist/chunk-DCWF3EMP.js +171 -0
  69. package/dist/chunk-DCWF3EMP.js.map +1 -0
  70. package/dist/{chunk-YWK6YH6M.mjs → chunk-DQJXCZU2.mjs} +5 -5
  71. package/dist/{chunk-YWK6YH6M.mjs.map → chunk-DQJXCZU2.mjs.map} +1 -1
  72. package/dist/chunk-DSYPZETD.js +4 -0
  73. package/dist/{chunk-3PNCB4W5.js.map → chunk-DSYPZETD.js.map} +1 -1
  74. package/dist/chunk-F2BYG63D.mjs +145 -0
  75. package/dist/chunk-F2BYG63D.mjs.map +1 -0
  76. package/dist/{chunk-N33R22A2.js → chunk-FNUBKONK.js} +2 -2
  77. package/dist/{chunk-N33R22A2.js.map → chunk-FNUBKONK.js.map} +1 -1
  78. package/dist/chunk-FXTGIKQG.mjs +3 -0
  79. package/dist/{chunk-SD7BHT2F.mjs.map → chunk-FXTGIKQG.mjs.map} +1 -1
  80. package/dist/{chunk-MQNSJCAW.mjs → chunk-GSBQIVME.mjs} +2 -2
  81. package/dist/{chunk-MQNSJCAW.mjs.map → chunk-GSBQIVME.mjs.map} +1 -1
  82. package/dist/{chunk-SAX7P3MH.js → chunk-HJFVRV47.js} +2 -2
  83. package/dist/{chunk-SAX7P3MH.js.map → chunk-HJFVRV47.js.map} +1 -1
  84. package/dist/chunk-IIM2CSDQ.js +147 -0
  85. package/dist/chunk-IIM2CSDQ.js.map +1 -0
  86. package/dist/{chunk-O3RH43H3.mjs → chunk-IUTIHSLH.mjs} +4 -4
  87. package/dist/{chunk-O3RH43H3.mjs.map → chunk-IUTIHSLH.mjs.map} +1 -1
  88. package/dist/chunk-IUZ3BBQP.mjs +117 -0
  89. package/dist/chunk-IUZ3BBQP.mjs.map +1 -0
  90. package/dist/{chunk-D7PCIMWU.mjs → chunk-IX4V4UGW.mjs} +4 -4
  91. package/dist/{chunk-D7PCIMWU.mjs.map → chunk-IX4V4UGW.mjs.map} +1 -1
  92. package/dist/{chunk-2ZM4JVFC.js → chunk-J62YDWIK.js} +2 -2
  93. package/dist/chunk-J62YDWIK.js.map +1 -0
  94. package/dist/{chunk-E2NF4AQB.mjs → chunk-JLUOFAE4.mjs} +272 -12
  95. package/dist/chunk-JLUOFAE4.mjs.map +1 -0
  96. package/dist/{chunk-KITPRKQ4.mjs → chunk-LW3CYA27.mjs} +351 -51
  97. package/dist/chunk-LW3CYA27.mjs.map +1 -0
  98. package/dist/{chunk-3L4DLMOK.js → chunk-MEA2C5YX.js} +16 -16
  99. package/dist/{chunk-3L4DLMOK.js.map → chunk-MEA2C5YX.js.map} +1 -1
  100. package/dist/{chunk-3MVW6UIW.js → chunk-MU56HCUI.js} +273 -11
  101. package/dist/chunk-MU56HCUI.js.map +1 -0
  102. package/dist/chunk-OCIY7QEJ.mjs +169 -0
  103. package/dist/chunk-OCIY7QEJ.mjs.map +1 -0
  104. package/dist/{chunk-WDSV4O6T.mjs → chunk-OHA5KJ2M.mjs} +2 -2
  105. package/dist/chunk-OHA5KJ2M.mjs.map +1 -0
  106. package/dist/{chunk-MT34O3YL.js → chunk-P563HTVU.js} +50 -26
  107. package/dist/chunk-P563HTVU.js.map +1 -0
  108. package/dist/{chunk-RLUMYHPI.js → chunk-PGYTMRP3.js} +46 -18
  109. package/dist/chunk-PGYTMRP3.js.map +1 -0
  110. package/dist/{chunk-VGOEXLQ2.js → chunk-QAPQGDWK.js} +2 -2
  111. package/dist/chunk-QAPQGDWK.js.map +1 -0
  112. package/dist/{chunk-QOGBOT2M.mjs → chunk-QHBKRUBY.mjs} +3 -3
  113. package/dist/{chunk-QOGBOT2M.mjs.map → chunk-QHBKRUBY.mjs.map} +1 -1
  114. package/dist/chunk-QOYI7WCH.js +120 -0
  115. package/dist/chunk-QOYI7WCH.js.map +1 -0
  116. package/dist/{chunk-OF7BIKXV.js → chunk-QRTABC4Z.js} +2 -2
  117. package/dist/chunk-QRTABC4Z.js.map +1 -0
  118. package/dist/{chunk-CS6FVODR.mjs → chunk-QUBD6HUZ.mjs} +163 -18
  119. package/dist/chunk-QUBD6HUZ.mjs.map +1 -0
  120. package/dist/{chunk-RWVNXU7Z.mjs → chunk-RDTIXP6S.mjs} +4 -4
  121. package/dist/{chunk-RWVNXU7Z.mjs.map → chunk-RDTIXP6S.mjs.map} +1 -1
  122. package/dist/{chunk-5WYXNWNH.js → chunk-RLOZWHRR.js} +11 -11
  123. package/dist/{chunk-5WYXNWNH.js.map → chunk-RLOZWHRR.js.map} +1 -1
  124. package/dist/{chunk-VK5HAWX6.mjs → chunk-SWWLOD7Q.mjs} +2 -2
  125. package/dist/chunk-SWWLOD7Q.mjs.map +1 -0
  126. package/dist/chunk-T3UA4MJL.js +4 -0
  127. package/dist/{chunk-WTS75RUC.js.map → chunk-T3UA4MJL.js.map} +1 -1
  128. package/dist/{chunk-HJ4AS5DZ.mjs → chunk-TEWAXP5C.mjs} +36 -12
  129. package/dist/chunk-TEWAXP5C.mjs.map +1 -0
  130. package/dist/{chunk-ZRNPHFP3.mjs → chunk-THEIRDGE.mjs} +50 -15
  131. package/dist/chunk-THEIRDGE.mjs.map +1 -0
  132. package/dist/{chunk-LPA32BIK.mjs → chunk-U3GOWK6J.mjs} +2 -2
  133. package/dist/chunk-U3GOWK6J.mjs.map +1 -0
  134. package/dist/{chunk-QFQXHDC7.mjs → chunk-VKSD3KXF.mjs} +46 -18
  135. package/dist/chunk-VKSD3KXF.mjs.map +1 -0
  136. package/dist/{chunk-64ZQRKG3.mjs → chunk-VYSOAGRU.mjs} +2 -2
  137. package/dist/chunk-VYSOAGRU.mjs.map +1 -0
  138. package/dist/{chunk-ADAAU4F5.mjs → chunk-WDC53TM7.mjs} +49 -9
  139. package/dist/chunk-WDC53TM7.mjs.map +1 -0
  140. package/dist/{chunk-M2EMKIP5.mjs → chunk-WKWP42TD.mjs} +9 -4
  141. package/dist/chunk-WKWP42TD.mjs.map +1 -0
  142. package/dist/{chunk-OROTK4OT.js → chunk-WNUB3UTT.js} +12 -12
  143. package/dist/chunk-WNUB3UTT.js.map +1 -0
  144. package/dist/{chunk-FVTTG72Z.mjs → chunk-WNWK2QMU.mjs} +19 -7
  145. package/dist/chunk-WNWK2QMU.mjs.map +1 -0
  146. package/dist/{chunk-INLXNN7P.js → chunk-WZF5XNBC.js} +26 -26
  147. package/dist/{chunk-INLXNN7P.js.map → chunk-WZF5XNBC.js.map} +1 -1
  148. package/dist/{chunk-SMTHFPBA.js → chunk-XMFOZYNI.js} +2 -2
  149. package/dist/chunk-XMFOZYNI.js.map +1 -0
  150. package/dist/{chunk-VGCXJRUV.mjs → chunk-YBK6EBA5.mjs} +10 -10
  151. package/dist/chunk-YBK6EBA5.mjs.map +1 -0
  152. package/dist/{chunk-HH7HQ4HC.mjs → chunk-ZEDJUNC6.mjs} +2 -2
  153. package/dist/{chunk-HH7HQ4HC.mjs.map → chunk-ZEDJUNC6.mjs.map} +1 -1
  154. package/dist/deployments.generated.d.mts +44 -16
  155. package/dist/deployments.generated.d.ts +44 -16
  156. package/dist/deployments.generated.js +2 -2
  157. package/dist/deployments.generated.mjs +1 -1
  158. package/dist/entities/DopplerFactory.d.mts +7 -1
  159. package/dist/entities/DopplerFactory.d.ts +7 -1
  160. package/dist/entities/DopplerFactory.js +16 -14
  161. package/dist/entities/DopplerFactory.mjs +15 -13
  162. package/dist/entities/auction/DynamicAuction.js +10 -10
  163. package/dist/entities/auction/DynamicAuction.mjs +9 -9
  164. package/dist/entities/auction/MulticurvePool.d.mts +6 -2
  165. package/dist/entities/auction/MulticurvePool.d.ts +6 -2
  166. package/dist/entities/auction/MulticurvePool.js +11 -11
  167. package/dist/entities/auction/MulticurvePool.mjs +10 -10
  168. package/dist/entities/auction/RehypeDopplerHook.d.mts +57 -0
  169. package/dist/entities/auction/RehypeDopplerHook.d.ts +57 -0
  170. package/dist/entities/auction/RehypeDopplerHook.js +34 -0
  171. package/dist/entities/auction/RehypeDopplerHook.js.map +1 -0
  172. package/dist/entities/auction/RehypeDopplerHook.mjs +25 -0
  173. package/dist/entities/auction/RehypeDopplerHook.mjs.map +1 -0
  174. package/dist/entities/auction/RehypeDopplerHookMigrator.d.mts +48 -0
  175. package/dist/entities/auction/RehypeDopplerHookMigrator.d.ts +48 -0
  176. package/dist/entities/auction/RehypeDopplerHookMigrator.js +34 -0
  177. package/dist/entities/auction/RehypeDopplerHookMigrator.js.map +1 -0
  178. package/dist/entities/auction/RehypeDopplerHookMigrator.mjs +25 -0
  179. package/dist/entities/auction/RehypeDopplerHookMigrator.mjs.map +1 -0
  180. package/dist/entities/auction/StaticAuction.js +10 -10
  181. package/dist/entities/auction/StaticAuction.mjs +9 -9
  182. package/dist/entities/auction/index.d.mts +2 -0
  183. package/dist/entities/auction/index.d.ts +2 -0
  184. package/dist/entities/auction/index.js +38 -18
  185. package/dist/entities/auction/index.mjs +25 -13
  186. package/dist/entities/quoter/Quoter.js +10 -10
  187. package/dist/entities/quoter/Quoter.mjs +9 -9
  188. package/dist/entities/quoter/index.js +10 -10
  189. package/dist/entities/quoter/index.mjs +9 -9
  190. package/dist/entities/token/derc20/Derc20.js +8 -8
  191. package/dist/entities/token/derc20/Derc20.mjs +7 -7
  192. package/dist/entities/token/derc20/index.js +8 -8
  193. package/dist/entities/token/derc20/index.mjs +7 -7
  194. package/dist/entities/token/index.js +11 -11
  195. package/dist/entities/token/index.mjs +7 -7
  196. package/dist/index.d.mts +5 -2
  197. package/dist/index.d.ts +5 -2
  198. package/dist/index.js +120 -93
  199. package/dist/index.js.map +1 -1
  200. package/dist/index.mjs +28 -25
  201. package/dist/index.mjs.map +1 -1
  202. package/dist/types.d.mts +90 -7
  203. package/dist/types.d.ts +90 -7
  204. package/dist/types.js +12 -8
  205. package/dist/types.mjs +3 -3
  206. package/dist/utils/airlock.js +7 -7
  207. package/dist/utils/airlock.mjs +3 -3
  208. package/dist/utils/dopplerHookMigrator.d.mts +18 -0
  209. package/dist/utils/dopplerHookMigrator.d.ts +18 -0
  210. package/dist/utils/dopplerHookMigrator.js +20 -0
  211. package/dist/utils/dopplerHookMigrator.js.map +1 -0
  212. package/dist/utils/dopplerHookMigrator.mjs +7 -0
  213. package/dist/utils/dopplerHookMigrator.mjs.map +1 -0
  214. package/dist/utils/index.d.mts +1 -0
  215. package/dist/utils/index.d.ts +1 -0
  216. package/dist/utils/index.js +39 -32
  217. package/dist/utils/index.mjs +15 -12
  218. package/dist/utils/marketCapHelpers.js +13 -13
  219. package/dist/utils/marketCapHelpers.mjs +1 -1
  220. package/dist/utils/tokenAddressMiner.js +8 -8
  221. package/dist/utils/tokenAddressMiner.mjs +7 -7
  222. package/package.json +2 -2
  223. package/dist/chunk-2ZM4JVFC.js.map +0 -1
  224. package/dist/chunk-3MVW6UIW.js.map +0 -1
  225. package/dist/chunk-3PNCB4W5.js +0 -4
  226. package/dist/chunk-3XYDN2XB.js.map +0 -1
  227. package/dist/chunk-5TL5V6UX.mjs +0 -3
  228. package/dist/chunk-5VV7STYK.js.map +0 -1
  229. package/dist/chunk-64ZQRKG3.mjs.map +0 -1
  230. package/dist/chunk-ADAAU4F5.mjs.map +0 -1
  231. package/dist/chunk-AZOBEWP3.mjs.map +0 -1
  232. package/dist/chunk-COOVGAOE.js.map +0 -1
  233. package/dist/chunk-CS6FVODR.mjs.map +0 -1
  234. package/dist/chunk-CUB4F546.js.map +0 -1
  235. package/dist/chunk-E2NF4AQB.mjs.map +0 -1
  236. package/dist/chunk-FVTTG72Z.mjs.map +0 -1
  237. package/dist/chunk-HJ4AS5DZ.mjs.map +0 -1
  238. package/dist/chunk-KITPRKQ4.mjs.map +0 -1
  239. package/dist/chunk-LPA32BIK.mjs.map +0 -1
  240. package/dist/chunk-M2EMKIP5.mjs.map +0 -1
  241. package/dist/chunk-MT34O3YL.js.map +0 -1
  242. package/dist/chunk-OF7BIKXV.js.map +0 -1
  243. package/dist/chunk-OGYWNJGI.js.map +0 -1
  244. package/dist/chunk-OROTK4OT.js.map +0 -1
  245. package/dist/chunk-QFQXHDC7.mjs.map +0 -1
  246. package/dist/chunk-QQEOKYEX.js.map +0 -1
  247. package/dist/chunk-RLUMYHPI.js.map +0 -1
  248. package/dist/chunk-SD7BHT2F.mjs +0 -3
  249. package/dist/chunk-SMTHFPBA.js.map +0 -1
  250. package/dist/chunk-VGCXJRUV.mjs.map +0 -1
  251. package/dist/chunk-VGOEXLQ2.js.map +0 -1
  252. package/dist/chunk-VK5HAWX6.mjs.map +0 -1
  253. package/dist/chunk-WDSV4O6T.mjs.map +0 -1
  254. package/dist/chunk-WKKOBMXR.js.map +0 -1
  255. package/dist/chunk-WTS75RUC.js +0 -4
  256. package/dist/chunk-ZRNPHFP3.mjs.map +0 -1
@@ -0,0 +1,147 @@
1
+ 'use strict';
2
+
3
+ var chunkXSJTASPK_js = require('./chunk-XSJTASPK.js');
4
+ var chunkMU56HCUI_js = require('./chunk-MU56HCUI.js');
5
+
6
+ // src/entities/auction/RehypeDopplerHook.ts
7
+ var RehypeDopplerHook = class {
8
+ get rpc() {
9
+ return this.client;
10
+ }
11
+ constructor(client, walletClient, hookAddress) {
12
+ this.client = client;
13
+ this.walletClient = walletClient;
14
+ this.hookAddress = hookAddress;
15
+ }
16
+ getAddress() {
17
+ return this.hookAddress;
18
+ }
19
+ async collectFees(asset) {
20
+ if (!this.walletClient) {
21
+ throw new Error("Wallet client required to collect rehype fees");
22
+ }
23
+ const { request, result } = await this.rpc.simulateContract({
24
+ address: this.hookAddress,
25
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
26
+ functionName: "collectFees",
27
+ args: [asset],
28
+ account: this.walletClient.account
29
+ });
30
+ const hash = await this.walletClient.writeContract(request);
31
+ await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
32
+ const decoded = chunkXSJTASPK_js.decodeBalanceDelta(result);
33
+ return {
34
+ amount0: decoded.amount0,
35
+ amount1: decoded.amount1,
36
+ transactionHash: hash
37
+ };
38
+ }
39
+ async claimAirlockOwnerFees(asset) {
40
+ if (!this.walletClient) {
41
+ throw new Error("Wallet client required to claim rehype owner fees");
42
+ }
43
+ const { request, result } = await this.rpc.simulateContract({
44
+ address: this.hookAddress,
45
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
46
+ functionName: "claimAirlockOwnerFees",
47
+ args: [asset],
48
+ account: this.walletClient.account
49
+ });
50
+ const hash = await this.walletClient.writeContract(request);
51
+ await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
52
+ const [fees0, fees1] = result;
53
+ return { fees0, fees1, transactionHash: hash };
54
+ }
55
+ async getFeeDistributionInfo(poolId) {
56
+ const result = await this.rpc.readContract({
57
+ address: this.hookAddress,
58
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
59
+ functionName: "getFeeDistributionInfo",
60
+ args: [poolId]
61
+ });
62
+ const info = result;
63
+ return {
64
+ assetFeesToAssetBuybackWad: BigInt(
65
+ info.assetFeesToAssetBuybackWad ?? info[0]
66
+ ),
67
+ assetFeesToNumeraireBuybackWad: BigInt(
68
+ info.assetFeesToNumeraireBuybackWad ?? info[1]
69
+ ),
70
+ assetFeesToBeneficiaryWad: BigInt(
71
+ info.assetFeesToBeneficiaryWad ?? info[2]
72
+ ),
73
+ assetFeesToLpWad: BigInt(info.assetFeesToLpWad ?? info[3]),
74
+ numeraireFeesToAssetBuybackWad: BigInt(
75
+ info.numeraireFeesToAssetBuybackWad ?? info[4]
76
+ ),
77
+ numeraireFeesToNumeraireBuybackWad: BigInt(
78
+ info.numeraireFeesToNumeraireBuybackWad ?? info[5]
79
+ ),
80
+ numeraireFeesToBeneficiaryWad: BigInt(
81
+ info.numeraireFeesToBeneficiaryWad ?? info[6]
82
+ ),
83
+ numeraireFeesToLpWad: BigInt(info.numeraireFeesToLpWad ?? info[7])
84
+ };
85
+ }
86
+ async getFeeRoutingMode(poolId) {
87
+ const mode = await this.rpc.readContract({
88
+ address: this.hookAddress,
89
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
90
+ functionName: "getFeeRoutingMode",
91
+ args: [poolId]
92
+ });
93
+ return Number(mode);
94
+ }
95
+ async getFeeSchedule(poolId) {
96
+ const result = await this.rpc.readContract({
97
+ address: this.hookAddress,
98
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
99
+ functionName: "getFeeSchedule",
100
+ args: [poolId]
101
+ });
102
+ const schedule = result;
103
+ return {
104
+ startingTime: Number(schedule.startingTime ?? schedule[0] ?? 0),
105
+ startFee: Number(schedule.startFee ?? schedule[1] ?? 0),
106
+ endFee: Number(schedule.endFee ?? schedule[2] ?? 0),
107
+ lastFee: Number(schedule.lastFee ?? schedule[3] ?? 0),
108
+ durationSeconds: Number(schedule.durationSeconds ?? schedule[4] ?? 0)
109
+ };
110
+ }
111
+ async getHookFees(poolId) {
112
+ const result = await this.rpc.readContract({
113
+ address: this.hookAddress,
114
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
115
+ functionName: "getHookFees",
116
+ args: [poolId]
117
+ });
118
+ const fees = result;
119
+ return {
120
+ fees0: BigInt(fees.fees0 ?? fees[0] ?? 0),
121
+ fees1: BigInt(fees.fees1 ?? fees[1] ?? 0),
122
+ beneficiaryFees0: BigInt(fees.beneficiaryFees0 ?? fees[2] ?? 0),
123
+ beneficiaryFees1: BigInt(fees.beneficiaryFees1 ?? fees[3] ?? 0),
124
+ airlockOwnerFees0: BigInt(fees.airlockOwnerFees0 ?? fees[4] ?? 0),
125
+ airlockOwnerFees1: BigInt(fees.airlockOwnerFees1 ?? fees[5] ?? 0),
126
+ customFee: Number(fees.customFee ?? fees[6] ?? 0)
127
+ };
128
+ }
129
+ async getPoolInfo(poolId) {
130
+ const result = await this.rpc.readContract({
131
+ address: this.hookAddress,
132
+ abi: chunkMU56HCUI_js.rehypeDopplerHookAbi,
133
+ functionName: "getPoolInfo",
134
+ args: [poolId]
135
+ });
136
+ const info = result;
137
+ return {
138
+ asset: info.asset ?? info[0],
139
+ numeraire: info.numeraire ?? info[1],
140
+ buybackDst: info.buybackDst ?? info[2]
141
+ };
142
+ }
143
+ };
144
+
145
+ exports.RehypeDopplerHook = RehypeDopplerHook;
146
+ //# sourceMappingURL=chunk-IIM2CSDQ.js.map
147
+ //# sourceMappingURL=chunk-IIM2CSDQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/entities/auction/RehypeDopplerHook.ts"],"names":["rehypeDopplerHookAbi","decodeBalanceDelta"],"mappings":"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","file":"chunk-IIM2CSDQ.js","sourcesContent":["import type {\n Address,\n Hash,\n Hex,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport type { SupportedPublicClient } from '../../types';\nimport { rehypeDopplerHookAbi } from '../../abis';\nimport { decodeBalanceDelta } from '../../utils';\n\nexport class RehypeDopplerHook {\n private client: SupportedPublicClient;\n private walletClient?: WalletClient;\n private hookAddress: Address;\n private get rpc(): PublicClient {\n return this.client as PublicClient;\n }\n\n constructor(\n client: SupportedPublicClient,\n walletClient: WalletClient | undefined,\n hookAddress: Address,\n ) {\n this.client = client;\n this.walletClient = walletClient;\n this.hookAddress = hookAddress;\n }\n\n getAddress(): Address {\n return this.hookAddress;\n }\n\n async collectFees(asset: Address): Promise<{\n amount0: bigint;\n amount1: bigint;\n transactionHash: Hash;\n }> {\n if (!this.walletClient) {\n throw new Error('Wallet client required to collect rehype fees');\n }\n\n const { request, result } = await this.rpc.simulateContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'collectFees',\n args: [asset],\n account: this.walletClient.account,\n });\n\n const hash = await this.walletClient.writeContract(request);\n await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });\n\n const decoded = decodeBalanceDelta(result as bigint);\n return {\n amount0: decoded.amount0,\n amount1: decoded.amount1,\n transactionHash: hash,\n };\n }\n\n async claimAirlockOwnerFees(asset: Address): Promise<{\n fees0: bigint;\n fees1: bigint;\n transactionHash: Hash;\n }> {\n if (!this.walletClient) {\n throw new Error('Wallet client required to claim rehype owner fees');\n }\n\n const { request, result } = await this.rpc.simulateContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'claimAirlockOwnerFees',\n args: [asset],\n account: this.walletClient.account,\n });\n\n const hash = await this.walletClient.writeContract(request);\n await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });\n\n const [fees0, fees1] = result as readonly [bigint, bigint];\n return { fees0, fees1, transactionHash: hash };\n }\n\n async getFeeDistributionInfo(poolId: Hex): Promise<{\n assetFeesToAssetBuybackWad: bigint;\n assetFeesToNumeraireBuybackWad: bigint;\n assetFeesToBeneficiaryWad: bigint;\n assetFeesToLpWad: bigint;\n numeraireFeesToAssetBuybackWad: bigint;\n numeraireFeesToNumeraireBuybackWad: bigint;\n numeraireFeesToBeneficiaryWad: bigint;\n numeraireFeesToLpWad: bigint;\n }> {\n const result = await this.rpc.readContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'getFeeDistributionInfo',\n args: [poolId],\n });\n\n const info = result as any;\n return {\n assetFeesToAssetBuybackWad: BigInt(\n info.assetFeesToAssetBuybackWad ?? info[0],\n ),\n assetFeesToNumeraireBuybackWad: BigInt(\n info.assetFeesToNumeraireBuybackWad ?? info[1],\n ),\n assetFeesToBeneficiaryWad: BigInt(\n info.assetFeesToBeneficiaryWad ?? info[2],\n ),\n assetFeesToLpWad: BigInt(info.assetFeesToLpWad ?? info[3]),\n numeraireFeesToAssetBuybackWad: BigInt(\n info.numeraireFeesToAssetBuybackWad ?? info[4],\n ),\n numeraireFeesToNumeraireBuybackWad: BigInt(\n info.numeraireFeesToNumeraireBuybackWad ?? info[5],\n ),\n numeraireFeesToBeneficiaryWad: BigInt(\n info.numeraireFeesToBeneficiaryWad ?? info[6],\n ),\n numeraireFeesToLpWad: BigInt(info.numeraireFeesToLpWad ?? info[7]),\n };\n }\n\n async getFeeRoutingMode(poolId: Hex): Promise<number> {\n const mode = await this.rpc.readContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'getFeeRoutingMode',\n args: [poolId],\n });\n return Number(mode);\n }\n\n async getFeeSchedule(poolId: Hex): Promise<{\n startingTime: number;\n startFee: number;\n endFee: number;\n lastFee: number;\n durationSeconds: number;\n }> {\n const result = await this.rpc.readContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'getFeeSchedule',\n args: [poolId],\n });\n\n const schedule = result as any;\n return {\n startingTime: Number(schedule.startingTime ?? schedule[0] ?? 0),\n startFee: Number(schedule.startFee ?? schedule[1] ?? 0),\n endFee: Number(schedule.endFee ?? schedule[2] ?? 0),\n lastFee: Number(schedule.lastFee ?? schedule[3] ?? 0),\n durationSeconds: Number(schedule.durationSeconds ?? schedule[4] ?? 0),\n };\n }\n\n async getHookFees(poolId: Hex): Promise<{\n fees0: bigint;\n fees1: bigint;\n beneficiaryFees0: bigint;\n beneficiaryFees1: bigint;\n airlockOwnerFees0: bigint;\n airlockOwnerFees1: bigint;\n customFee: number;\n }> {\n const result = await this.rpc.readContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'getHookFees',\n args: [poolId],\n });\n\n const fees = result as any;\n return {\n fees0: BigInt(fees.fees0 ?? fees[0] ?? 0),\n fees1: BigInt(fees.fees1 ?? fees[1] ?? 0),\n beneficiaryFees0: BigInt(fees.beneficiaryFees0 ?? fees[2] ?? 0),\n beneficiaryFees1: BigInt(fees.beneficiaryFees1 ?? fees[3] ?? 0),\n airlockOwnerFees0: BigInt(fees.airlockOwnerFees0 ?? fees[4] ?? 0),\n airlockOwnerFees1: BigInt(fees.airlockOwnerFees1 ?? fees[5] ?? 0),\n customFee: Number(fees.customFee ?? fees[6] ?? 0),\n };\n }\n\n async getPoolInfo(poolId: Hex): Promise<{\n asset: Address;\n numeraire: Address;\n buybackDst: Address;\n }> {\n const result = await this.rpc.readContract({\n address: this.hookAddress,\n abi: rehypeDopplerHookAbi,\n functionName: 'getPoolInfo',\n args: [poolId],\n });\n\n const info = result as any;\n return {\n asset: (info.asset ?? info[0]) as Address,\n numeraire: (info.numeraire ?? info[1]) as Address,\n buybackDst: (info.buybackDst ?? info[2]) as Address,\n };\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { getAddresses } from './chunk-ADAAU4F5.mjs';
2
- import { dopplerHookAbi, airlockAbi } from './chunk-E2NF4AQB.mjs';
1
+ import { getAddresses } from './chunk-WDC53TM7.mjs';
2
+ import { dopplerHookAbi, airlockAbi } from './chunk-JLUOFAE4.mjs';
3
3
  import { zeroAddress, encodeAbiParameters, keccak256 } from 'viem';
4
4
 
5
5
  var DynamicAuction = class {
@@ -291,5 +291,5 @@ var DynamicAuction = class {
291
291
  };
292
292
 
293
293
  export { DynamicAuction };
294
- //# sourceMappingURL=chunk-O3RH43H3.mjs.map
295
- //# sourceMappingURL=chunk-O3RH43H3.mjs.map
294
+ //# sourceMappingURL=chunk-IUTIHSLH.mjs.map
295
+ //# sourceMappingURL=chunk-IUTIHSLH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entities/auction/DynamicAuction.ts"],"names":[],"mappings":";;;;AAkBO,IAAM,iBAAN,MAAqB;AAAA,EAG1B,IAAY,GAAA,GAAoB;AAC9B,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,WAAA,CAAY,QAA+B,WAAA,EAAsB;AAC/D,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAA,CAAkB,IAAA,EAAW,aAAA,GAAwB,CAAA,EAAkB;AAC3E,IAAA,MAAM,KAAK,GAAA,CAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,eAAe,CAAA;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAsB;AACpB,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,GAAiC;AAErC,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,SAAA;AAAA,MACA,oBAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,MACpB,KAAK,aAAA,EAAc;AAAA,MACnB,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf;AAAA,KACF,CAAA;AAGD,IAAA,MAAM,WAAA,GAAc,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AACxD,IAAA,MAAM,cACJ,WAAA,GAAc,YAAA,GAAe,WAAA,GAAc,YAAA,GAAe,OAAO,CAAC,CAAA;AACpE,IAAA,MAAM,eACJ,WAAA,GAAc,EAAA,GAAK,MAAA,CAAO,WAAA,GAAc,WAAW,CAAA,GAAI,CAAA;AAGzD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,gBAAA,CAAiB,UAAiB,CAAA;AACvD,IAAA,MAAM,QAAA,GAAW,QAAQ,SAAA,KAAc,WAAA;AACvC,IAAA,MAAM,YAAA,GAAe,QAAA,GAAW,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA;AAC5D,IAAA,MAAM,gBAAA,GAAmB,QAAA,GAAW,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA;AAGhE,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,OAAO,CAAA;AAEzC,IAAA,OAAO;AAAA,MACL,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAgB,KAAA,CAAc,aAAA;AAAA,MAC9B,iBAAkB,KAAA,CAAc,eAAA;AAAA,MAChC,SAAA;AAAA,MACA,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAoC;AACxC,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC7C,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,gBAAA,CAAiB,UAAiB,CAAA;AAEvD,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC3C,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAED,IAAA,OAAO,QAAA,GAAW,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,GAA6B;AACjC,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC7C,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,gBAAA,CAAiB,UAAiB,CAAA;AACvD,IAAA,OAAO,IAAA,CAAK,cAAc,OAAO,CAAA;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,GAAiC;AACrC,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,EAAgB;AAChD,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,GAAA,CAAI,UAAA,EAAW;AAC1C,IAAA,MAAM,SAAA,GAAY,aAAa,OAAO,CAAA;AAEtC,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC5C,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,GAAA,EAAK,UAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,YAAY;AAAA,KACpB,CAAA;AAED,IAAA,MAAM,iBAAA,GAAoB,MAAM,OAAA,CAAQ,SAAS,IAC5C,SAAA,CAAkB,CAAC,IACnB,SAAA,EAAmB,iBAAA;AACxB,IAAA,OAAO,iBAAA,KAAsB,WAAA;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAmC;AACvC,IAAA,MAAM,CAAC,YAAA,EAAc,WAAW,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACpD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf;AAAA,KACF,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AACxD,IAAA,MAAM,cACJ,WAAA,GAAc,YAAA,GAAe,WAAA,GAAc,YAAA,GAAe,OAAO,CAAC,CAAA;AAEpE,IAAA,OAAO,MAAA,CAAO,cAAc,WAAW,CAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAA,GAAmC;AACvC,IAAA,MAAM,CAAC,MAAA,EAAQ,YAAA,EAAc,UAAA,EAAY,KAAA,EAAO,cAAc,WAAW,CAAA,GACvE,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,MAChB,KAAK,aAAA,EAAc;AAAA,MACnB,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf;AAAA,KACF,CAAA;AAGH,IAAA,MAAM,WAAA,GAAc,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AACxD,IAAA,MAAM,cACJ,WAAA,GAAc,YAAA,GAAe,WAAA,GAAc,YAAA,GAAe,OAAO,CAAC,CAAA;AACpE,IAAA,MAAM,eACJ,WAAA,GAAc,EAAA,GAAK,MAAA,CAAO,WAAA,GAAc,WAAW,CAAA,GAAI,CAAA;AAIzD,IAAA,MAAM,SAAA,GAAY,UAAA,GAAa,YAAA,GAAe,CAAA,GAAI,EAAA;AAClD,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,QAAQ,SAAS,CAAA;AAChE,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,YAAY,CAAA;AAM1D,IAAA,OAAO,OAAO,WAAW,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAA,GAAoC;AACxC,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,aAAA,EAAc;AAEvC,IAAA,OAAQ,KAAA,CAAc,aAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAA,GAAkC;AACtC,IAAA,OAAO,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MACjC,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc,OAAA,EAMX;AAET,IAAA,MAAM,OAAA,GAAU,mBAAA;AAAA,MACd;AAAA,QACE,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,QAAA,EAAS;AAAA,QACjB,EAAE,MAAM,OAAA,EAAQ;AAAA,QAChB,EAAE,MAAM,SAAA;AAAU,OACpB;AAAA,MACA;AAAA,QACE,OAAA,CAAQ,SAAA;AAAA,QACR,OAAA,CAAQ,SAAA;AAAA,QACR,OAAA,CAAQ,GAAA;AAAA,QACR,OAAA,CAAQ,WAAA;AAAA,QACR,OAAA,CAAQ;AAAA;AACV,KACF;AACA,IAAA,OAAO,UAAU,OAAO,CAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,aAAA,GAA8B;AAC1C,IAAA,MAAM,MAAA,GAAc,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC9C,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AACD,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,MAAA,MAAM;AAAA,QACJ,SAAA;AAAA,QACA,eAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,OACF,GAAI,MAAA;AACJ,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA,eAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,iBAAiB,KAAA,EAMvB;AACA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,CAAC,SAAA,EAAW,SAAA,EAAW,GAAA,EAAK,WAAA,EAAa,KAAK,CAAA,GAAI,KAAA;AAOxD,MAAA,OAAO,EAAE,SAAA,EAAW,SAAA,EAAW,GAAA,EAAK,aAAa,KAAA,EAAM;AAAA,IACzD;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACF","file":"chunk-O3RH43H3.mjs","sourcesContent":["import {\n type Address,\n type PublicClient,\n type Hex,\n keccak256,\n encodeAbiParameters,\n zeroAddress,\n} from 'viem';\nimport type { HookInfo, SupportedPublicClient } from '../../types';\nimport { dopplerHookAbi, airlockAbi } from '../../abis';\nimport { getAddresses } from '../../addresses';\n\n/**\n * DynamicAuction class for interacting with dynamic auctions (Uniswap V4 hook based)\n *\n * Dynamic auctions use a Uniswap V4 hook to create a gradual Dutch auction\n * where the price moves dynamically over time according to set parameters.\n */\nexport class DynamicAuction {\n private client: SupportedPublicClient;\n private hookAddress: Address;\n private get rpc(): PublicClient {\n return this.client as PublicClient;\n }\n\n constructor(client: SupportedPublicClient, hookAddress: Address) {\n this.client = client;\n this.hookAddress = hookAddress;\n }\n\n /**\n * Wait for a transaction to be confirmed and the contract to be ready for reads\n * @param hash - Transaction hash to wait for\n * @param confirmations - Number of block confirmations to wait for (default: 2)\n */\n async waitForDeployment(hash: Hex, confirmations: number = 2): Promise<void> {\n await this.rpc.waitForTransactionReceipt({ hash, confirmations });\n }\n\n /**\n * Get the hook address\n */\n getAddress(): Address {\n return this.hookAddress;\n }\n\n /**\n * Get current hook information\n */\n async getHookInfo(): Promise<HookInfo> {\n // Fetch all hook data in parallel\n const [\n state,\n earlyExit,\n insufficientProceeds,\n poolKeyRaw,\n startingTime,\n endingTime,\n epochLength,\n minimumProceeds,\n maximumProceeds,\n ] = await Promise.all([\n this.readHookState(),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'earlyExit',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'insufficientProceeds',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'poolKey',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'endingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'epochLength',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'minimumProceeds',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'maximumProceeds',\n }),\n ]);\n\n // Calculate current epoch\n const currentTime = BigInt(Math.floor(Date.now() / 1000));\n const elapsedTime =\n currentTime > startingTime ? currentTime - startingTime : BigInt(0);\n const currentEpoch =\n epochLength > 0n ? Number(elapsedTime / epochLength) : 0;\n\n // Determine token addresses from poolKey\n const poolKey = this.normalizePoolKey(poolKeyRaw as any);\n const isToken0 = poolKey.currency0 !== zeroAddress;\n const tokenAddress = isToken0 ? poolKey.currency0 : poolKey.currency1;\n const numeraireAddress = isToken0 ? poolKey.currency1 : poolKey.currency0;\n\n // Compute pool ID\n const poolId = this.computePoolId(poolKey);\n\n return {\n hookAddress: this.hookAddress,\n tokenAddress,\n numeraireAddress,\n poolId,\n currentEpoch,\n totalProceeds: (state as any).totalProceeds,\n totalTokensSold: (state as any).totalTokensSold,\n earlyExit,\n insufficientProceeds,\n startingTime,\n endingTime,\n epochLength,\n minimumProceeds,\n maximumProceeds,\n };\n }\n\n /**\n * Get the token address for this auction\n */\n async getTokenAddress(): Promise<Address> {\n const poolKeyRaw = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'poolKey',\n });\n const poolKey = this.normalizePoolKey(poolKeyRaw as any);\n\n const isToken0 = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'isToken0',\n });\n\n return isToken0 ? poolKey.currency0 : poolKey.currency1;\n }\n\n /**\n * Get the pool ID for this auction\n */\n async getPoolId(): Promise<string> {\n const poolKeyRaw = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'poolKey',\n });\n const poolKey = this.normalizePoolKey(poolKeyRaw as any);\n return this.computePoolId(poolKey);\n }\n\n /**\n * Check if the auction has graduated (ready for migration)\n */\n async hasGraduated(): Promise<boolean> {\n const tokenAddress = await this.getTokenAddress();\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId);\n\n const assetData = await this.rpc.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [tokenAddress],\n });\n // Check if the asset is graduated (liquidityMigrator is zero)\n const liquidityMigrator = Array.isArray(assetData)\n ? (assetData as any)[3]\n : (assetData as any)?.liquidityMigrator;\n return liquidityMigrator === zeroAddress;\n }\n\n /**\n * Get the current epoch\n */\n async getCurrentEpoch(): Promise<number> {\n const [startingTime, epochLength] = await Promise.all([\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'epochLength',\n }),\n ]);\n\n const currentTime = BigInt(Math.floor(Date.now() / 1000));\n const elapsedTime =\n currentTime > startingTime ? currentTime - startingTime : BigInt(0);\n\n return Number(elapsedTime / epochLength);\n }\n\n /**\n * Get the current price in the auction\n * Returns the current tick based on the epoch and gamma parameters\n */\n async getCurrentPrice(): Promise<bigint> {\n const [_state, startingTick, endingTick, gamma, startingTime, epochLength] =\n await Promise.all([\n this.readHookState(),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTick',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'endingTick',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'gamma',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'epochLength',\n }),\n ]);\n\n // Calculate current epoch\n const currentTime = BigInt(Math.floor(Date.now() / 1000));\n const elapsedTime =\n currentTime > startingTime ? currentTime - startingTime : BigInt(0);\n const currentEpoch =\n epochLength > 0n ? Number(elapsedTime / epochLength) : 0;\n\n // Calculate current tick based on the auction progression\n // The tick moves from startingTick towards endingTick based on epochs and gamma\n const direction = endingTick > startingTick ? 1 : -1;\n const tickMovement = Math.floor(currentEpoch * gamma * direction);\n const currentTick = Math.floor(startingTick + tickMovement);\n\n // Convert tick to price\n // price = 1.0001^tick\n // For simplicity, returning the tick as bigint for now\n // In production, you'd convert this to actual price using TickMath\n return BigInt(currentTick);\n }\n\n /**\n * Get total proceeds collected so far\n */\n async getTotalProceeds(): Promise<bigint> {\n const state = await this.readHookState();\n\n return (state as any).totalProceeds;\n }\n\n /**\n * Check if the auction ended early due to max proceeds\n */\n async hasEndedEarly(): Promise<boolean> {\n return await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'earlyExit',\n });\n }\n\n /**\n * Compute V4 pool ID from pool key components\n */\n private computePoolId(poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n }): string {\n // V4 pools are identified by the hash of their PoolKey\n const encoded = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'address' },\n { type: 'uint24' },\n { type: 'int24' },\n { type: 'address' },\n ],\n [\n poolKey.currency0,\n poolKey.currency1,\n poolKey.fee,\n poolKey.tickSpacing,\n poolKey.hooks,\n ],\n );\n return keccak256(encoded);\n }\n\n /**\n * Read hook state with backward-compatible decoding.\n * Falls back to legacy state() ABI if the latest ABI fails to decode.\n */\n private async readHookState(): Promise<any> {\n const result: any = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'state',\n });\n if (Array.isArray(result)) {\n const [\n lastEpoch,\n tickAccumulator,\n totalTokensSold,\n totalProceeds,\n totalTokensSoldLastEpoch,\n feesAccrued,\n ] = result as any[];\n return {\n lastEpoch,\n tickAccumulator,\n totalTokensSold,\n totalProceeds,\n totalTokensSoldLastEpoch,\n feesAccrued,\n };\n }\n return result;\n }\n\n private normalizePoolKey(value: any): {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n } {\n if (Array.isArray(value)) {\n const [currency0, currency1, fee, tickSpacing, hooks] = value as [\n Address,\n Address,\n number,\n number,\n Address,\n ];\n return { currency0, currency1, fee, tickSpacing, hooks };\n }\n return value as any;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/entities/auction/DynamicAuction.ts"],"names":[],"mappings":"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","file":"chunk-IUTIHSLH.mjs","sourcesContent":["import {\n type Address,\n type PublicClient,\n type Hex,\n keccak256,\n encodeAbiParameters,\n zeroAddress,\n} from 'viem';\nimport type { HookInfo, SupportedPublicClient } from '../../types';\nimport { dopplerHookAbi, airlockAbi } from '../../abis';\nimport { getAddresses } from '../../addresses';\n\n/**\n * DynamicAuction class for interacting with dynamic auctions (Uniswap V4 hook based)\n *\n * Dynamic auctions use a Uniswap V4 hook to create a gradual Dutch auction\n * where the price moves dynamically over time according to set parameters.\n */\nexport class DynamicAuction {\n private client: SupportedPublicClient;\n private hookAddress: Address;\n private get rpc(): PublicClient {\n return this.client as PublicClient;\n }\n\n constructor(client: SupportedPublicClient, hookAddress: Address) {\n this.client = client;\n this.hookAddress = hookAddress;\n }\n\n /**\n * Wait for a transaction to be confirmed and the contract to be ready for reads\n * @param hash - Transaction hash to wait for\n * @param confirmations - Number of block confirmations to wait for (default: 2)\n */\n async waitForDeployment(hash: Hex, confirmations: number = 2): Promise<void> {\n await this.rpc.waitForTransactionReceipt({ hash, confirmations });\n }\n\n /**\n * Get the hook address\n */\n getAddress(): Address {\n return this.hookAddress;\n }\n\n /**\n * Get current hook information\n */\n async getHookInfo(): Promise<HookInfo> {\n // Fetch all hook data in parallel\n const [\n state,\n earlyExit,\n insufficientProceeds,\n poolKeyRaw,\n startingTime,\n endingTime,\n epochLength,\n minimumProceeds,\n maximumProceeds,\n ] = await Promise.all([\n this.readHookState(),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'earlyExit',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'insufficientProceeds',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'poolKey',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'endingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'epochLength',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'minimumProceeds',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'maximumProceeds',\n }),\n ]);\n\n // Calculate current epoch\n const currentTime = BigInt(Math.floor(Date.now() / 1000));\n const elapsedTime =\n currentTime > startingTime ? currentTime - startingTime : BigInt(0);\n const currentEpoch =\n epochLength > 0n ? Number(elapsedTime / epochLength) : 0;\n\n // Determine token addresses from poolKey\n const poolKey = this.normalizePoolKey(poolKeyRaw as any);\n const isToken0 = poolKey.currency0 !== zeroAddress;\n const tokenAddress = isToken0 ? poolKey.currency0 : poolKey.currency1;\n const numeraireAddress = isToken0 ? poolKey.currency1 : poolKey.currency0;\n\n // Compute pool ID\n const poolId = this.computePoolId(poolKey);\n\n return {\n hookAddress: this.hookAddress,\n tokenAddress,\n numeraireAddress,\n poolId,\n currentEpoch,\n totalProceeds: (state as any).totalProceeds,\n totalTokensSold: (state as any).totalTokensSold,\n earlyExit,\n insufficientProceeds,\n startingTime,\n endingTime,\n epochLength,\n minimumProceeds,\n maximumProceeds,\n };\n }\n\n /**\n * Get the token address for this auction\n */\n async getTokenAddress(): Promise<Address> {\n const poolKeyRaw = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'poolKey',\n });\n const poolKey = this.normalizePoolKey(poolKeyRaw as any);\n\n const isToken0 = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'isToken0',\n });\n\n return isToken0 ? poolKey.currency0 : poolKey.currency1;\n }\n\n /**\n * Get the pool ID for this auction\n */\n async getPoolId(): Promise<string> {\n const poolKeyRaw = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'poolKey',\n });\n const poolKey = this.normalizePoolKey(poolKeyRaw as any);\n return this.computePoolId(poolKey);\n }\n\n /**\n * Check if the auction has graduated (ready for migration)\n */\n async hasGraduated(): Promise<boolean> {\n const tokenAddress = await this.getTokenAddress();\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId);\n\n const assetData = await this.rpc.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [tokenAddress],\n });\n // Check if the asset is graduated (liquidityMigrator is zero)\n const liquidityMigrator = Array.isArray(assetData)\n ? (assetData as any)[3]\n : (assetData as any)?.liquidityMigrator;\n return liquidityMigrator === zeroAddress;\n }\n\n /**\n * Get the current epoch\n */\n async getCurrentEpoch(): Promise<number> {\n const [startingTime, epochLength] = await Promise.all([\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'epochLength',\n }),\n ]);\n\n const currentTime = BigInt(Math.floor(Date.now() / 1000));\n const elapsedTime =\n currentTime > startingTime ? currentTime - startingTime : BigInt(0);\n\n return Number(elapsedTime / epochLength);\n }\n\n /**\n * Get the current price in the auction\n * Returns the current tick based on the epoch and gamma parameters\n */\n async getCurrentPrice(): Promise<bigint> {\n const [_state, startingTick, endingTick, gamma, startingTime, epochLength] =\n await Promise.all([\n this.readHookState(),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTick',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'endingTick',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'gamma',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'startingTime',\n }),\n this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'epochLength',\n }),\n ]);\n\n // Calculate current epoch\n const currentTime = BigInt(Math.floor(Date.now() / 1000));\n const elapsedTime =\n currentTime > startingTime ? currentTime - startingTime : BigInt(0);\n const currentEpoch =\n epochLength > 0n ? Number(elapsedTime / epochLength) : 0;\n\n // Calculate current tick based on the auction progression\n // The tick moves from startingTick towards endingTick based on epochs and gamma\n const direction = endingTick > startingTick ? 1 : -1;\n const tickMovement = Math.floor(currentEpoch * gamma * direction);\n const currentTick = Math.floor(startingTick + tickMovement);\n\n // Convert tick to price\n // price = 1.0001^tick\n // For simplicity, returning the tick as bigint for now\n // In production, you'd convert this to actual price using TickMath\n return BigInt(currentTick);\n }\n\n /**\n * Get total proceeds collected so far\n */\n async getTotalProceeds(): Promise<bigint> {\n const state = await this.readHookState();\n\n return (state as any).totalProceeds;\n }\n\n /**\n * Check if the auction ended early due to max proceeds\n */\n async hasEndedEarly(): Promise<boolean> {\n return await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'earlyExit',\n });\n }\n\n /**\n * Compute V4 pool ID from pool key components\n */\n private computePoolId(poolKey: {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n }): string {\n // V4 pools are identified by the hash of their PoolKey\n const encoded = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'address' },\n { type: 'uint24' },\n { type: 'int24' },\n { type: 'address' },\n ],\n [\n poolKey.currency0,\n poolKey.currency1,\n poolKey.fee,\n poolKey.tickSpacing,\n poolKey.hooks,\n ],\n );\n return keccak256(encoded);\n }\n\n /**\n * Read hook state with backward-compatible decoding.\n * Falls back to legacy state() ABI if the latest ABI fails to decode.\n */\n private async readHookState(): Promise<any> {\n const result: any = await this.rpc.readContract({\n address: this.hookAddress,\n abi: dopplerHookAbi,\n functionName: 'state',\n });\n if (Array.isArray(result)) {\n const [\n lastEpoch,\n tickAccumulator,\n totalTokensSold,\n totalProceeds,\n totalTokensSoldLastEpoch,\n feesAccrued,\n ] = result as any[];\n return {\n lastEpoch,\n tickAccumulator,\n totalTokensSold,\n totalProceeds,\n totalTokensSoldLastEpoch,\n feesAccrued,\n };\n }\n return result;\n }\n\n private normalizePoolKey(value: any): {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n } {\n if (Array.isArray(value)) {\n const [currency0, currency1, fee, tickSpacing, hooks] = value as [\n Address,\n Address,\n number,\n number,\n Address,\n ];\n return { currency0, currency1, fee, tickSpacing, hooks };\n }\n return value as any;\n }\n}\n"]}
@@ -0,0 +1,117 @@
1
+ import { WAD } from './chunk-IWJOPXYN.mjs';
2
+ import { encodeAbiParameters } from 'viem';
3
+
4
+ function normalizeRehypeFeeRoutingMode(mode) {
5
+ if (mode === void 0 || mode === 0 /* DirectBuyback */) {
6
+ return 0 /* DirectBuyback */;
7
+ }
8
+ if (mode === 1 /* RouteToBeneficiaryFees */) {
9
+ return 1 /* RouteToBeneficiaryFees */;
10
+ }
11
+ if (mode === "directBuyback") {
12
+ return 0 /* DirectBuyback */;
13
+ }
14
+ if (mode === "routeToBeneficiaryFees") {
15
+ return 1 /* RouteToBeneficiaryFees */;
16
+ }
17
+ throw new Error(
18
+ "Rehype feeRoutingMode must be DirectBuyback/directBuyback or RouteToBeneficiaryFees/routeToBeneficiaryFees"
19
+ );
20
+ }
21
+ function resolveRehypeFeeDistributionInfo(config) {
22
+ if (config.feeDistributionInfo) {
23
+ return config.feeDistributionInfo;
24
+ }
25
+ const assetBuyback = config.assetBuybackPercentWad;
26
+ const numeraireBuyback = config.numeraireBuybackPercentWad;
27
+ const beneficiary = config.beneficiaryPercentWad;
28
+ const lp = config.lpPercentWad;
29
+ if (assetBuyback === void 0 || numeraireBuyback === void 0 || beneficiary === void 0 || lp === void 0) {
30
+ throw new Error(
31
+ "Rehype feeDistributionInfo is required, or provide all deprecated legacy percentages."
32
+ );
33
+ }
34
+ return {
35
+ assetFeesToAssetBuybackWad: assetBuyback,
36
+ assetFeesToNumeraireBuybackWad: numeraireBuyback,
37
+ assetFeesToBeneficiaryWad: beneficiary,
38
+ assetFeesToLpWad: lp,
39
+ numeraireFeesToAssetBuybackWad: assetBuyback,
40
+ numeraireFeesToNumeraireBuybackWad: numeraireBuyback,
41
+ numeraireFeesToBeneficiaryWad: beneficiary,
42
+ numeraireFeesToLpWad: lp
43
+ };
44
+ }
45
+ function validateRehypeFeeDistributionInfo(feeDistributionInfo) {
46
+ const assetRowTotal = feeDistributionInfo.assetFeesToAssetBuybackWad + feeDistributionInfo.assetFeesToNumeraireBuybackWad + feeDistributionInfo.assetFeesToBeneficiaryWad + feeDistributionInfo.assetFeesToLpWad;
47
+ if (assetRowTotal !== WAD) {
48
+ throw new Error(
49
+ `Rehype asset fee distribution must sum to ${WAD} (100%), but got ${assetRowTotal}`
50
+ );
51
+ }
52
+ const numeraireRowTotal = feeDistributionInfo.numeraireFeesToAssetBuybackWad + feeDistributionInfo.numeraireFeesToNumeraireBuybackWad + feeDistributionInfo.numeraireFeesToBeneficiaryWad + feeDistributionInfo.numeraireFeesToLpWad;
53
+ if (numeraireRowTotal !== WAD) {
54
+ throw new Error(
55
+ `Rehype numeraire fee distribution must sum to ${WAD} (100%), but got ${numeraireRowTotal}`
56
+ );
57
+ }
58
+ }
59
+ function normalizeRehypeDopplerHookMigratorConfig(config) {
60
+ if (!Number.isInteger(config.customFee) || config.customFee < 0) {
61
+ throw new Error("Rehype customFee must be a non-negative integer");
62
+ }
63
+ if (config.customFee > 1e6) {
64
+ throw new Error("Rehype customFee must be <= 1000000 (100%)");
65
+ }
66
+ const feeDistributionInfo = resolveRehypeFeeDistributionInfo(config);
67
+ validateRehypeFeeDistributionInfo(feeDistributionInfo);
68
+ return {
69
+ buybackDestination: config.buybackDestination,
70
+ customFee: config.customFee,
71
+ feeRoutingMode: normalizeRehypeFeeRoutingMode(config.feeRoutingMode),
72
+ feeDistributionInfo
73
+ };
74
+ }
75
+ function encodeRehypeDopplerHookMigratorCalldata(params) {
76
+ const normalized = normalizeRehypeDopplerHookMigratorConfig(params.config);
77
+ return encodeAbiParameters(
78
+ [
79
+ {
80
+ type: "tuple",
81
+ components: [
82
+ { name: "numeraire", type: "address" },
83
+ { name: "buybackDst", type: "address" },
84
+ { name: "customFee", type: "uint24" },
85
+ { name: "feeRoutingMode", type: "uint8" },
86
+ {
87
+ name: "feeDistributionInfo",
88
+ type: "tuple",
89
+ components: [
90
+ { name: "assetFeesToAssetBuybackWad", type: "uint256" },
91
+ { name: "assetFeesToNumeraireBuybackWad", type: "uint256" },
92
+ { name: "assetFeesToBeneficiaryWad", type: "uint256" },
93
+ { name: "assetFeesToLpWad", type: "uint256" },
94
+ { name: "numeraireFeesToAssetBuybackWad", type: "uint256" },
95
+ { name: "numeraireFeesToNumeraireBuybackWad", type: "uint256" },
96
+ { name: "numeraireFeesToBeneficiaryWad", type: "uint256" },
97
+ { name: "numeraireFeesToLpWad", type: "uint256" }
98
+ ]
99
+ }
100
+ ]
101
+ }
102
+ ],
103
+ [
104
+ {
105
+ numeraire: params.numeraire,
106
+ buybackDst: normalized.buybackDestination,
107
+ customFee: normalized.customFee,
108
+ feeRoutingMode: normalized.feeRoutingMode,
109
+ feeDistributionInfo: normalized.feeDistributionInfo
110
+ }
111
+ ]
112
+ );
113
+ }
114
+
115
+ export { encodeRehypeDopplerHookMigratorCalldata, normalizeRehypeDopplerHookMigratorConfig };
116
+ //# sourceMappingURL=chunk-IUZ3BBQP.mjs.map
117
+ //# sourceMappingURL=chunk-IUZ3BBQP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/dopplerHookMigrator.ts"],"names":[],"mappings":"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","file":"chunk-IUZ3BBQP.mjs","sourcesContent":["import { encodeAbiParameters, type Address, type Hex } from 'viem';\nimport {\n RehypeFeeRoutingMode,\n type RehypeDopplerHookMigratorConfig,\n type RehypeFeeDistributionInfo,\n} from '../types';\nimport { WAD } from '../constants';\n\ntype NormalizedRehypeDopplerHookMigratorConfig = {\n buybackDestination: Address;\n customFee: number;\n feeRoutingMode: RehypeFeeRoutingMode;\n feeDistributionInfo: RehypeFeeDistributionInfo;\n};\n\nfunction normalizeRehypeFeeRoutingMode(\n mode: RehypeDopplerHookMigratorConfig['feeRoutingMode'],\n): RehypeFeeRoutingMode {\n if (mode === undefined || mode === RehypeFeeRoutingMode.DirectBuyback) {\n return RehypeFeeRoutingMode.DirectBuyback;\n }\n if (mode === RehypeFeeRoutingMode.RouteToBeneficiaryFees) {\n return RehypeFeeRoutingMode.RouteToBeneficiaryFees;\n }\n if (mode === 'directBuyback') {\n return RehypeFeeRoutingMode.DirectBuyback;\n }\n if (mode === 'routeToBeneficiaryFees') {\n return RehypeFeeRoutingMode.RouteToBeneficiaryFees;\n }\n throw new Error(\n 'Rehype feeRoutingMode must be DirectBuyback/directBuyback or RouteToBeneficiaryFees/routeToBeneficiaryFees',\n );\n}\n\nfunction resolveRehypeFeeDistributionInfo(\n config: RehypeDopplerHookMigratorConfig,\n): RehypeFeeDistributionInfo {\n if (config.feeDistributionInfo) {\n return config.feeDistributionInfo;\n }\n\n const assetBuyback = config.assetBuybackPercentWad;\n const numeraireBuyback = config.numeraireBuybackPercentWad;\n const beneficiary = config.beneficiaryPercentWad;\n const lp = config.lpPercentWad;\n\n if (\n assetBuyback === undefined ||\n numeraireBuyback === undefined ||\n beneficiary === undefined ||\n lp === undefined\n ) {\n throw new Error(\n 'Rehype feeDistributionInfo is required, or provide all deprecated legacy percentages.',\n );\n }\n\n return {\n assetFeesToAssetBuybackWad: assetBuyback,\n assetFeesToNumeraireBuybackWad: numeraireBuyback,\n assetFeesToBeneficiaryWad: beneficiary,\n assetFeesToLpWad: lp,\n numeraireFeesToAssetBuybackWad: assetBuyback,\n numeraireFeesToNumeraireBuybackWad: numeraireBuyback,\n numeraireFeesToBeneficiaryWad: beneficiary,\n numeraireFeesToLpWad: lp,\n };\n}\n\nfunction validateRehypeFeeDistributionInfo(\n feeDistributionInfo: RehypeFeeDistributionInfo,\n): void {\n const assetRowTotal =\n feeDistributionInfo.assetFeesToAssetBuybackWad +\n feeDistributionInfo.assetFeesToNumeraireBuybackWad +\n feeDistributionInfo.assetFeesToBeneficiaryWad +\n feeDistributionInfo.assetFeesToLpWad;\n if (assetRowTotal !== WAD) {\n throw new Error(\n `Rehype asset fee distribution must sum to ${WAD} (100%), but got ${assetRowTotal}`,\n );\n }\n\n const numeraireRowTotal =\n feeDistributionInfo.numeraireFeesToAssetBuybackWad +\n feeDistributionInfo.numeraireFeesToNumeraireBuybackWad +\n feeDistributionInfo.numeraireFeesToBeneficiaryWad +\n feeDistributionInfo.numeraireFeesToLpWad;\n if (numeraireRowTotal !== WAD) {\n throw new Error(\n `Rehype numeraire fee distribution must sum to ${WAD} (100%), but got ${numeraireRowTotal}`,\n );\n }\n}\n\nexport function normalizeRehypeDopplerHookMigratorConfig(\n config: RehypeDopplerHookMigratorConfig,\n): NormalizedRehypeDopplerHookMigratorConfig {\n if (!Number.isInteger(config.customFee) || config.customFee < 0) {\n throw new Error('Rehype customFee must be a non-negative integer');\n }\n if (config.customFee > 1_000_000) {\n throw new Error('Rehype customFee must be <= 1000000 (100%)');\n }\n\n const feeDistributionInfo = resolveRehypeFeeDistributionInfo(config);\n validateRehypeFeeDistributionInfo(feeDistributionInfo);\n\n return {\n buybackDestination: config.buybackDestination,\n customFee: config.customFee,\n feeRoutingMode: normalizeRehypeFeeRoutingMode(config.feeRoutingMode),\n feeDistributionInfo,\n };\n}\n\nexport function encodeRehypeDopplerHookMigratorCalldata(params: {\n numeraire: Address;\n config: RehypeDopplerHookMigratorConfig;\n}): Hex {\n const normalized = normalizeRehypeDopplerHookMigratorConfig(params.config);\n\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n { name: 'numeraire', type: 'address' },\n { name: 'buybackDst', type: 'address' },\n { name: 'customFee', type: 'uint24' },\n { name: 'feeRoutingMode', type: 'uint8' },\n {\n name: 'feeDistributionInfo',\n type: 'tuple',\n components: [\n { name: 'assetFeesToAssetBuybackWad', type: 'uint256' },\n { name: 'assetFeesToNumeraireBuybackWad', type: 'uint256' },\n { name: 'assetFeesToBeneficiaryWad', type: 'uint256' },\n { name: 'assetFeesToLpWad', type: 'uint256' },\n { name: 'numeraireFeesToAssetBuybackWad', type: 'uint256' },\n { name: 'numeraireFeesToNumeraireBuybackWad', type: 'uint256' },\n { name: 'numeraireFeesToBeneficiaryWad', type: 'uint256' },\n { name: 'numeraireFeesToLpWad', type: 'uint256' },\n ],\n },\n ],\n },\n ],\n [\n {\n numeraire: params.numeraire,\n buybackDst: normalized.buybackDestination,\n customFee: normalized.customFee,\n feeRoutingMode: normalized.feeRoutingMode,\n feeDistributionInfo: normalized.feeDistributionInfo,\n },\n ],\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { getAddresses } from './chunk-ADAAU4F5.mjs';
2
- import { uniswapV3PoolAbi, airlockAbi } from './chunk-E2NF4AQB.mjs';
1
+ import { getAddresses } from './chunk-WDC53TM7.mjs';
2
+ import { uniswapV3PoolAbi, airlockAbi } from './chunk-JLUOFAE4.mjs';
3
3
  import { zeroAddress } from 'viem';
4
4
 
5
5
  var StaticAuction = class {
@@ -137,5 +137,5 @@ var StaticAuction = class {
137
137
  };
138
138
 
139
139
  export { StaticAuction };
140
- //# sourceMappingURL=chunk-D7PCIMWU.mjs.map
141
- //# sourceMappingURL=chunk-D7PCIMWU.mjs.map
140
+ //# sourceMappingURL=chunk-IX4V4UGW.mjs.map
141
+ //# sourceMappingURL=chunk-IX4V4UGW.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entities/auction/StaticAuction.ts"],"names":[],"mappings":"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","file":"chunk-D7PCIMWU.mjs","sourcesContent":["import { type Address, zeroAddress, type PublicClient } from 'viem';\nimport type { PoolInfo, SupportedPublicClient } from '../../types';\nimport { uniswapV3PoolAbi, airlockAbi } from '../../abis';\nimport { getAddresses } from '../../addresses';\n\n/**\n * StaticAuction class for interacting with static auctions (Uniswap V3 based)\n *\n * Static auctions use a fixed price range on Uniswap V3 for initial liquidity bootstrapping.\n * This is ideal for simple, predictable price discovery events.\n */\nexport class StaticAuction {\n private client: SupportedPublicClient;\n private poolAddress: Address;\n private get rpc(): PublicClient {\n return this.client as PublicClient;\n }\n\n constructor(client: SupportedPublicClient, poolAddress: Address) {\n this.client = client;\n this.poolAddress = poolAddress;\n }\n\n /**\n * Get the pool address\n */\n getAddress(): Address {\n return this.poolAddress;\n }\n\n /**\n * Get current pool information\n */\n async getPoolInfo(): Promise<PoolInfo> {\n // Fetch all pool data in parallel\n const [slot0, liquidity, token0, token1, fee] = await Promise.all([\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'slot0',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'liquidity',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token0',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token1',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'fee',\n }),\n ]);\n\n // Determine which token is the auction token and which is numeraire\n // This requires checking with the Airlock contract\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId);\n\n const assetData = await this.rpc.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [token0],\n });\n // Determine whether token0 is the auction token.\n // Handle both tuple and object return shapes from getAssetData.\n // Tuple (legacy): [numeraire, timelock, governance, liquidityMigrator, poolInitializer, pool, ...]\n // Object (unified): { poolOrHook, liquidityMigrator, numeraire, ... }\n let poolOrHook0: any;\n if (Array.isArray(assetData)) {\n poolOrHook0 = assetData[5];\n } else if (assetData && typeof assetData === 'object') {\n poolOrHook0 = (assetData as any).poolOrHook ?? (assetData as any).pool;\n }\n const isToken0AuctionToken = poolOrHook0 && poolOrHook0 !== zeroAddress;\n\n return {\n address: this.poolAddress,\n tokenAddress: isToken0AuctionToken ? token0 : token1,\n numeraireAddress: isToken0AuctionToken ? token1 : token0,\n fee,\n liquidity,\n sqrtPriceX96: slot0[0], // First element is sqrtPriceX96\n };\n }\n\n /**\n * Get the token address for this auction\n */\n async getTokenAddress(): Promise<Address> {\n const poolInfo = await this.getPoolInfo();\n return poolInfo.tokenAddress;\n }\n\n /**\n * Check if the auction has graduated (ready for migration)\n */\n async hasGraduated(): Promise<boolean> {\n const tokenAddress = await this.getTokenAddress();\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId);\n\n const assetData = await this.rpc.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [tokenAddress],\n });\n // Check if the asset is graduated (liquidityMigrator is zero)\n const liquidityMigrator = Array.isArray(assetData)\n ? (assetData as any)[3]\n : (assetData as any)?.liquidityMigrator;\n return liquidityMigrator === zeroAddress;\n }\n\n /**\n * Get the current price in the pool\n * Returns the price of token in terms of numeraire (token/numeraire)\n */\n async getCurrentPrice(): Promise<bigint> {\n const poolInfo = await this.getPoolInfo();\n\n // Get token ordering\n const [token0] = await Promise.all([\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token0',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token1',\n }),\n ]);\n\n // Calculate price from sqrtPriceX96\n // sqrtPriceX96 = sqrt(price) * 2^96\n // price = (sqrtPriceX96 / 2^96)^2\n const sqrtPriceX96 = poolInfo.sqrtPriceX96;\n const Q96 = BigInt(2) ** BigInt(96);\n\n // price0 = amount of token1 per token0\n const sqrtPriceX96Squared = sqrtPriceX96 * sqrtPriceX96;\n const Q96Squared = Q96 * Q96;\n const price0 = sqrtPriceX96Squared / Q96Squared;\n\n // Return price based on which token is the auction token\n if (poolInfo.tokenAddress === token0) {\n // Auction token is token0, return price in terms of token1 (numeraire)\n return price0;\n } else {\n // Auction token is token1, return reciprocal price\n // price1 = 1 / price0 (with precision handling)\n return Q96Squared / price0;\n }\n }\n\n /**\n * Get total liquidity in the pool\n */\n async getTotalLiquidity(): Promise<bigint> {\n return await this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'liquidity',\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/entities/auction/StaticAuction.ts"],"names":[],"mappings":"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","file":"chunk-IX4V4UGW.mjs","sourcesContent":["import { type Address, zeroAddress, type PublicClient } from 'viem';\nimport type { PoolInfo, SupportedPublicClient } from '../../types';\nimport { uniswapV3PoolAbi, airlockAbi } from '../../abis';\nimport { getAddresses } from '../../addresses';\n\n/**\n * StaticAuction class for interacting with static auctions (Uniswap V3 based)\n *\n * Static auctions use a fixed price range on Uniswap V3 for initial liquidity bootstrapping.\n * This is ideal for simple, predictable price discovery events.\n */\nexport class StaticAuction {\n private client: SupportedPublicClient;\n private poolAddress: Address;\n private get rpc(): PublicClient {\n return this.client as PublicClient;\n }\n\n constructor(client: SupportedPublicClient, poolAddress: Address) {\n this.client = client;\n this.poolAddress = poolAddress;\n }\n\n /**\n * Get the pool address\n */\n getAddress(): Address {\n return this.poolAddress;\n }\n\n /**\n * Get current pool information\n */\n async getPoolInfo(): Promise<PoolInfo> {\n // Fetch all pool data in parallel\n const [slot0, liquidity, token0, token1, fee] = await Promise.all([\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'slot0',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'liquidity',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token0',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token1',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'fee',\n }),\n ]);\n\n // Determine which token is the auction token and which is numeraire\n // This requires checking with the Airlock contract\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId);\n\n const assetData = await this.rpc.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [token0],\n });\n // Determine whether token0 is the auction token.\n // Handle both tuple and object return shapes from getAssetData.\n // Tuple (legacy): [numeraire, timelock, governance, liquidityMigrator, poolInitializer, pool, ...]\n // Object (unified): { poolOrHook, liquidityMigrator, numeraire, ... }\n let poolOrHook0: any;\n if (Array.isArray(assetData)) {\n poolOrHook0 = assetData[5];\n } else if (assetData && typeof assetData === 'object') {\n poolOrHook0 = (assetData as any).poolOrHook ?? (assetData as any).pool;\n }\n const isToken0AuctionToken = poolOrHook0 && poolOrHook0 !== zeroAddress;\n\n return {\n address: this.poolAddress,\n tokenAddress: isToken0AuctionToken ? token0 : token1,\n numeraireAddress: isToken0AuctionToken ? token1 : token0,\n fee,\n liquidity,\n sqrtPriceX96: slot0[0], // First element is sqrtPriceX96\n };\n }\n\n /**\n * Get the token address for this auction\n */\n async getTokenAddress(): Promise<Address> {\n const poolInfo = await this.getPoolInfo();\n return poolInfo.tokenAddress;\n }\n\n /**\n * Check if the auction has graduated (ready for migration)\n */\n async hasGraduated(): Promise<boolean> {\n const tokenAddress = await this.getTokenAddress();\n const chainId = await this.rpc.getChainId();\n const addresses = getAddresses(chainId);\n\n const assetData = await this.rpc.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [tokenAddress],\n });\n // Check if the asset is graduated (liquidityMigrator is zero)\n const liquidityMigrator = Array.isArray(assetData)\n ? (assetData as any)[3]\n : (assetData as any)?.liquidityMigrator;\n return liquidityMigrator === zeroAddress;\n }\n\n /**\n * Get the current price in the pool\n * Returns the price of token in terms of numeraire (token/numeraire)\n */\n async getCurrentPrice(): Promise<bigint> {\n const poolInfo = await this.getPoolInfo();\n\n // Get token ordering\n const [token0] = await Promise.all([\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token0',\n }),\n this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token1',\n }),\n ]);\n\n // Calculate price from sqrtPriceX96\n // sqrtPriceX96 = sqrt(price) * 2^96\n // price = (sqrtPriceX96 / 2^96)^2\n const sqrtPriceX96 = poolInfo.sqrtPriceX96;\n const Q96 = BigInt(2) ** BigInt(96);\n\n // price0 = amount of token1 per token0\n const sqrtPriceX96Squared = sqrtPriceX96 * sqrtPriceX96;\n const Q96Squared = Q96 * Q96;\n const price0 = sqrtPriceX96Squared / Q96Squared;\n\n // Return price based on which token is the auction token\n if (poolInfo.tokenAddress === token0) {\n // Auction token is token0, return price in terms of token1 (numeraire)\n return price0;\n } else {\n // Auction token is token1, return reciprocal price\n // price1 = 1 / price0 (with precision handling)\n return Q96Squared / price0;\n }\n }\n\n /**\n * Get total liquidity in the pool\n */\n async getTotalLiquidity(): Promise<bigint> {\n return await this.rpc.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'liquidity',\n });\n }\n}\n"]}
@@ -4,5 +4,5 @@
4
4
  var derc2080_default = "0x6101c0604052346100ab5761002761001561023e565b9897909796919695929594939461070b565b60405161279f90816112d5823960805181611a67015260a05181611b24015260c05181611a31015260e05181611ab601526101005181611adc01526101205181610b8701526101405181610bb001526101605181818161065201528181610c7e01526115820152610180518181816104a501526115a401526101a051816114350152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176100e657604052565b6100af565b604051906100fa6040836100c3565b565b81601f820112156100ab578051906001600160401b0382116100e65760405192610130601f8401601f1916602001856100c3565b828452602083830101116100ab57815f9260208093018386015e8301015290565b51906001600160a01b03821682036100ab57565b6001600160401b0381116100e65760051b60200190565b9080601f830112156100ab57815161019381610165565b926101a160405194856100c3565b81845260208085019260051b8201019283116100ab57602001905b8282106101c95750505090565b602080916101d684610151565b8152019101906101bc565b9080601f830112156100ab5781516101f881610165565b9261020660405194856100c3565b81845260208085019260051b8201019283116100ab57602001905b82821061022e5750505090565b8151815260209182019101610221565b613ab490813803806040519361025482866100c3565b8439820191610140818403126100ab5780516001600160401b0381116100ab57836102809183016100fc565b60208201519093906001600160401b0381116100ab57816102a29184016100fc565b936040830151936102b560608501610151565b936102c260808201610151565b9360a08201519360c08301519360e084015160018060401b0381116100ab57836102ed91860161017c565b6101008501519094906001600160401b0381116100ab57846103109183016101e1565b6101208201519094906001600160401b0381116100ab5761033192016100fc565b9199989796959493929190565b156103465750565b630ca514df60e01b5f5260045266470de4df82000060245260445ffd5b90600182811c92168015610391575b602083101461037d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610372565b601f81116103a7575050565b60035f5260205f20906020601f840160051c830193106103e1575b601f0160051c01905b8181106103d6575050565b5f81556001016103cb565b90915081906103c2565b601f82116103f857505050565b5f5260205f20906020601f840160051c83019310610430575b601f0160051c01905b818110610425575050565b5f815560010161041a565b9091508190610411565b8160011b915f199060031b1c19161790565b80519091906001600160401b0381116100e6576104758161046e601054610363565b60106103eb565b602092601f82116001146104a857610498929382915f9261049d575b505061043a565b601055565b015190505f80610491565b60105f52601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672915f5b86811061050c57508360019596106104f4575b505050811b01601055565b01515f1960f88460031b161c191690555f80806104e9565b919260206001819286850151815501940192016104d6565b80519091906001600160401b0381116100e65761054d81610546600454610363565b60046103eb565b602092601f82116001146105745761056f929382915f9261049d57505061043a565b600455565b60045f52601f198216937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b8681106105d857508360019596106105c0575b505050811b01600455565b01515f1960f88460031b161c191690555f80806105b5565b919260206001819286850151815501940192016105a2565b156105f757565b631dc0052360e11b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b90670b1a2bc2ec500000820291808304670b1a2bc2ec500000149015171561063e57565b610606565b634e487b7160e01b5f52603260045260245ffd5b805182101561066b5760209160051b010190565b610643565b6001600160a01b03165f90815260096020526040902090565b9190820180921161063e57565b1561069f575050565b630443fb3960e11b5f5260045260245260445ffd5b156106bd575050565b6323f3f88b60e01b5f5260045260245260445ffd5b156106db575050565b6305767d1760e01b5f5260045260245260445ffd5b5f1981019190821161063e57565b9190820391821161063e57565b61074b9591816107249261073d959a9b99969c97610873565b6107388166470de4df82000081111561033e565b600d55565b42610160526101805261044c565b8251610759825182146105f0565b5f936107756107678561061a565b670de0b6b3a7640000900490565b5f935b8385106107d75750505050506100fa9291816107a661079c6107676107c29561061a565b83818111156106b4565b6107b381838181106106d2565b816101a052816107c8576106fe565b906109d9565b6107d282306109d9565b6106fe565b909192939561086884600192610863868b61085c61082a61081d8461085261082a61081d878f8161080791610657565b519c8d61084b61084361082a61081d8686610657565b516001600160a01b031690565b6001600160a01b03165f90815260116020526040902090565b918254610689565b9055610657565b541115938d610657565b5490610696565b610689565b960193929190610778565b9290604051916108846040846100c3565b60018352603160f81b60208401908152845190946001600160401b0382116100e6576108ba826108b5600354610363565b61039b565b602090601f83116001146109525791806108e0926108e895945f9261049d57505061043a565b600355610524565b6108f181610b0f565b610120526108fe82610bf7565b610140526020815191012060e052519020610100524660a05261091f610cdc565b6080523060c0526001600160a01b0381161561093e576100fa90610ac7565b631e4fbdf760e01b5f90815260045260245ffd5b60035f52601f19831691907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b925f5b8181106109c157509160019391856108e8979694106109a9575b505050811b01600355610524565b01515f1960f88460031b161c191690555f808061099b565b92936020600181928786015181550195019301610981565b91906001600160a01b0383168015610ab457600c546001600160a01b03811682149081610aa5575b50610a9657610a1a610a1583600254610689565b600255565b6001600160a01b0384165f90815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254926001600160d01b03808511610a7f57506100fa929350610da5565b630e58ae9360e11b5f52600485905260245260445ffd5b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f610a01565b63ec442f0560e01b5f525f60045260245ffd5b600b80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908151602081105f14610b2a575090610b2790610d3a565b90565b6001600160401b0381116100e657610b4e81610b47600554610363565b60056103eb565b602092601f8211600114610b7857610b70929382915f9261049d57505061043a565b60055560ff90565b60055f52601f198216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b868110610bdf5750836001959610610bc7575b505050811b0160055560ff90565b01515f1960f88460031b161c191690555f8080610bb9565b91926020600181928685015181550194019201610ba6565b908151602081105f14610c0f575090610b2790610d3a565b6001600160401b0381116100e657610c3381610c2c600654610363565b60066103eb565b602092601f8211600114610c5d57610c55929382915f9261049d57505061043a565b60065560ff90565b60065f52601f198216937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b868110610cc45750836001959610610cac575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080610c9e565b91926020600181928685015181550194019201610c8b565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152610d3460c0826100c3565b51902090565b601f815111610d65576020815191015160208210610d56571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b90610daf81610ea4565b9165ffffffffffff4311610e8c57600a5480610e565750610de9610dd96100fa945f5b6001611278565b65ffffffffffff4316600a611159565b50506001600160a01b03168015610e3e575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f9182526040909120546001600160a01b039081169116610fd3565b610e4f610e4a83610ea4565b610ed5565b5050610dfb565b92835f1981011161063e57600a5f525f80516020613a74833981519152909301546100fa93610de991610dd9919060301c610dd2565b6306dfcc6560e41b5f5260306004524360245260445ffd5b6001600160d01b038111610ebe576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b65ffffffffffff4311610e8c57600a5480610eff5750610dd9610efb915f5b6002611278565b9091565b805f1981011161063e57600a5f525f80516020613a748339815191520154610efb91610dd99160301c610ef4565b65ffffffffffff4311610e8c57805480610f615750610f51610efb925f6002611278565b9065ffffffffffff431690611159565b805f1981011161063e575f82815260209020015f190154610efb92610f519160301c610ef4565b65ffffffffffff4311610e8c57805480610fac5750610f51610efb925f6001611278565b805f1981011161063e575f82815260209020015f190154610efb92610f519160301c610dd2565b6001600160a01b038083169392919081169081851415806110a8575b610ffb575b5050505050565b8161105d575b505082611010575b8080610ff4565b5f80516020613a948339815191529161103461102e61103a93610670565b91610ea4565b90610f88565b604080516001600160d01b039384168152919092166020820152a25f8080611009565b6110866110775f80516020613a9483398151915292610670565b61108086610ea4565b90610f2d565b604080516001600160d01b039384168152919092166020820152a25f80611001565b50831515610fef565b9065ffffffffffff82549181199060301b169116179055565b908154680100000000000000008110156100e6576001810180845581101561066b576100fa925f5260205f20019065ffffffffffff81511665ffffffffffff19835416178255602060018060d01b0391015116906110b1565b604080519192919081016001600160401b038111828210176100e657604052915465ffffffffffff8116835260301c6020830152565b80549293929190821561124f57611185611180611175856106f0565b835f5260205f200190565b611123565b9065ffffffffffff61119d835165ffffffffffff1690565b8185169182911611611240576112049460209488926111d06111c5875165ffffffffffff1690565b65ffffffffffff1690565b0361120857506111f6926111e66111f1926106f0565b905f5260205f200190565b6110b1565b01516001600160d01b031690565b9190565b91505061123b9161122861121a6100eb565b65ffffffffffff9093168352565b6001600160d01b038816828601526110ca565b6111f6565b632520601d60e01b5f5260045ffd5b611273925061125f61121a6100eb565b6001600160d01b03851660208301526110ca565b5f9190565b919091806001146112ba5760021461129e57634e487b7160e01b5f52605160045260245ffd5b6001600160d01b039081169181169190910390811161063e5790565b506001600160d01b039182169082160190811161063e579056fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146102d4578063095ea7b3146102cf57806310aa0ebb146102ca57806313cff13d146102c55780631514617e146102c057806316f0115b146102bb57806318160ddd146102b657806320720df7146102b1578063207d0636146102ac57806323b872dd146102a7578063254800d4146102a2578063313ce5671461029d5780633644e515146102985780633a46b1a8146102935780633c130d901461028e57806342966c68146102895780634bf5d7e9146102845780634c8697951461027f578063587cde1e1461027a5780635c19a95c146102755780636fcfff451461027057806370a082311461026b578063715018a6146102665780637ecebe001461026157806384b0196e1461025c57806386d1a69f1461025757806389026538146102525780638da5cb5b1461024d5780638e539e8c146102485780638e80ff5d1461024357806391ddadf41461023e57806395d89b411461023957806398cd6153146102345780639ab24eb01461022f5780639ccb51751461022a578063a9059cbb14610225578063c3cda52014610220578063c551a2f91461021b578063d505accf14610216578063dd62ed3e14610211578063f1127ed81461020c578063f2fde38b14610207578063f68d90d8146102025763f6939d34146101fd575f80fd5b6114b0565b61141e565b6113ab565b611314565b6112e8565b6111dd565b6111c5565b6110cd565b611087565b61100a565b610fc3565b610f52565b610e81565b610e56565b610e39565b610d45565b610d1d565b610ce7565b610c6c565b610b6f565b610b37565b610aef565b610acc565b610a6a565b610a48565b610a08565b6109e5565b610955565b610868565b6107d6565b6106b2565b610690565b610675565b61063b565b61056d565b61052a565b61050d565b6104f0565b6104c8565b61048e565b610471565b61044c565b61041b565b610311565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061030e9281815201906102d9565b90565b346103eb575f3660031901126103eb576040515f60035461033181610747565b80845290600181169081156103c75750600114610369575b61036583610359818503826107b3565b604051918291826102fd565b0390f35b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106103ad57509091508101602001610359610349565b919260018160209254838588010152019101909291610395565b60ff191660208086019190915291151560051b840190910191506103599050610349565b5f80fd5b600435906001600160a01b03821682036103eb57565b602435906001600160a01b03821682036103eb57565b346103eb5760403660031901126103eb576104416104376103ef565b6024359033611da8565b602060405160018152f35b346103eb575f3660031901126103eb57602060ff600c5460a01c166040519015158152f35b346103eb575f3660031901126103eb576020600e54604051908152f35b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103eb575f3660031901126103eb57600c546040516001600160a01b039091168152602090f35b346103eb575f3660031901126103eb576020600254604051908152f35b346103eb575f3660031901126103eb576020600d54604051908152f35b346103eb5760203660031901126103eb576105436103ef565b61054b611929565b600c80546001600160a81b0319166001600160a01b0392909216919091179055005b346103eb5760603660031901126103eb576105866103ef565b61058e610405565b6044359061059c33846118ca565b92600184016105bc575b6105b09350611967565b60405160018152602090f35b828410610620576001600160a01b038116801561060d5733156105fa576105b09484915f526001602052036105f43360405f2061148a565b556105a6565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103eb575f3660031901126103eb57602060405160128152f35b346103eb575f3660031901126103eb5760206106aa611a2e565b604051908152f35b346103eb5760403660031901126103eb576106cb6103ef565b60243565ffffffffffff6106de43611b4a565b169182821015610731576001600160a01b03165f90815260096020526040902061036592506001600160d01b0391610720919061071a90611b4a565b90611b79565b604051911681529081906020820190565b50637669fc0f60e11b5f5260045260245260445ffd5b90600182811c92168015610775575b602083101461076157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610756565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176107ae57604052565b61077f565b601f909101601f19168101906001600160401b038211908210176107ae57604052565b346103eb575f3660031901126103eb576040515f6010546107f681610747565b80845290600181169081156103c7575060011461081d5761036583610359818503826107b3565b60105f9081525f80516020612753833981519152939250905b80821061084e57509091508101602001610359610349565b919260018160209254838588010152019101909291610836565b346103eb5760203660031901126103eb57600435610884611929565b600b546001600160a01b031690811561094257600c546001600160a01b038116159081610933575b50610924576108ba82611458565b5481811061090e5761090c92825f92036108d382611458565b556108e18360025403600255565b81815f805160206127338339815191526040518061090488829190602083019252565b0390a36124c2565b005b63391434e360e21b5f5261092192611950565b5ffd5b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f6108ac565b634b637e8f60e11b5f525f60045260245ffd5b346103eb575f3660031901126103eb5761096e43611b4a565b65ffffffffffff8061097f43611b4a565b169116036109d6576103656040516109986040826107b3565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c7400000060208201526040519182916020835260208301906102d9565b6301bfc1c560e61b5f5260045ffd5b346103eb5760203660031901126103eb5760206106aa610a036103ef565b611580565b346103eb5760203660031901126103eb576001600160a01b03610a296103ef565b165f526008602052602060018060a01b0360405f205416604051908152f35b346103eb5760203660031901126103eb5761090c610a646103ef565b33611c0a565b346103eb5760203660031901126103eb576001600160a01b03610a8b6103ef565b165f52600960205260405f205463ffffffff8111610ab55760405163ffffffff9091168152602090f35b6306dfcc6560e41b5f52602060045260245260445ffd5b346103eb5760203660031901126103eb5760206106aa610aea6103ef565b61165c565b346103eb575f3660031901126103eb57610b07611929565b600b80546001600160a01b031981169091555f906001600160a01b03165f805160206127138339815191528280a3005b346103eb5760203660031901126103eb576001600160a01b03610b586103ef565b165f526007602052602060405f2054604051908152f35b346103eb575f3660031901126103eb57610c13610bab7f00000000000000000000000000000000000000000000000000000000000000006120cc565b610bd47f0000000000000000000000000000000000000000000000000000000000000000612191565b6020604051610be382826107b3565b5f815281610c2181830194601f198301368737604051978897600f60f81b895260e0858a015260e08901906102d9565b9087820360408901526102d9565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b828110610c5557505050500390f35b835185528695509381019392810192600101610c46565b346103eb575f3660031901126103eb577f000000000000000000000000000000000000000000000000000000000000000015610cd857610cab33611580565b335f526011602052600160405f2001908154818101809111610cd35761090c92553330611967565b6114f4565b63641c0b2160e11b5f5260045ffd5b346103eb575f3660031901126103eb57610cff611929565b600c805460ff60a01b1916600160a01b17905542600f819055600e55005b346103eb575f3660031901126103eb57600b546040516001600160a01b039091168152602090f35b346103eb5760203660031901126103eb5760043565ffffffffffff610d6943611b4a565b169081811015610e2457610d7c90611b4a565b600a54905f829160058411610dd0575b610d989350600a611f80565b80610db4575060205f5b6040516001600160d01b039091168152f35b610dbf602091611534565b600a5f52815f20015460301c610da2565b9192610ddb81611e0d565b8103908111610cd357610d9893600a5f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14610e12575091610d8c565b929150610e1e90611519565b90610d8c565b637669fc0f60e11b5f5260045260245260445ffd5b346103eb575f3660031901126103eb576020600f54604051908152f35b346103eb575f3660031901126103eb576020610e7143611b4a565b65ffffffffffff60405191168152f35b346103eb575f3660031901126103eb576040515f600454610ea181610747565b80845290600181169081156103c75750600114610ec85761036583610359818503826107b3565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610f0c57509091508101602001610359610349565b919260018160209254838588010152019101909291610ef4565b60405190610f356040836107b3565b565b6001600160401b0381116107ae57601f01601f191660200190565b346103eb5760203660031901126103eb576004356001600160401b0381116103eb57366023820112156103eb578060040135610f8d81610f37565b90610f9b60405192836107b3565b80825236602482850101116103eb576020815f92602461090c96018386013783010152611676565b346103eb5760203660031901126103eb576001600160a01b03610fe46103ef565b165f526009602052602060018060d01b0361100160405f20611c76565b16604051908152f35b346103eb5760203660031901126103eb57600435611026611929565b66470de4df820000811161106a57600e54151580611055575b61104857600d55005b6110506117c8565b600d55005b50600f544281420311610cd35742141561103f565b630ca514df60e01b5f5260045266470de4df82000060245260445ffd5b346103eb5760403660031901126103eb576104416110a36103ef565b6024359033611967565b6064359060ff821682036103eb57565b6084359060ff821682036103eb57565b346103eb5760c03660031901126103eb576110e66103ef565b602435906044356110f56110ad565b6084359060a435928042116111b3579161117a939161116c6111719460405160208101917fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf835260018060a01b038a1660408301528a606083015260808201526080815261116460a0826107b3565b519020611ca0565b612236565b909291926122d7565b61118381611d86565b8093036111945761090c9250611c0a565b90506301d4b62360e61b5f5260018060a01b031660045260245260445ffd5b632341d78760e11b5f5260045260245ffd5b346103eb575f3660031901126103eb5761090c6117c8565b346103eb5760e03660031901126103eb576111f66103ef565b6111fe610405565b604435906064359261120e6110bd565b60a43560c435908642116112d55761129a9261129561122c86611d86565b9860405160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835260018060a01b0389169b8c604084015260018060a01b038b1660608401528b608084015260a083015260c082015260c0815261116460e0826107b3565b611cc6565b936001600160a01b038516036112b45761090c9350611da8565b6325c0072360e11b5f526001600160a01b038085166004521660245260445ffd5b8663313c898160e11b5f5260045260245ffd5b346103eb5760403660031901126103eb5760206106aa6113066103ef565b61130e610405565b906118ca565b346103eb5760403660031901126103eb5761132d6103ef565b6024359063ffffffff821682036103eb576113829161137c9161134e611911565b50611357611911565b506001600160a01b03165f908152600960205260409020611376611911565b50612353565b5061237c565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925290f35b346103eb5760203660031901126103eb576113c46103ef565b6113cc611929565b6001600160a01b0316801561140b57600b80546001600160a01b0319811683179091556001600160a01b03165f805160206127138339815191525f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6001600160a01b03165f90815260208190526040902090565b6001600160a01b03165f90815260096020526040902090565b9060018060a01b03165f5260205260405f2090565b908152602081019190915260400190565b346103eb5760203660031901126103eb576001600160a01b036114d16103ef565b165f52601160205260405f2060018154910154906103656040519283928361149f565b634e487b7160e01b5f52601160045260245ffd5b906301e133808201809211610cd357565b9060018201809211610cd357565b91908201809211610cd357565b5f19810191908211610cd357565b91908203918211610cd357565b81810292918115918404141715610cd357565b811561156c570490565b634e487b7160e01b5f52601260045260245ffd5b7f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000808301808411610cd357421015611635576001600160a01b0382165f9081526011602052604090205442938403938411610cd35761161260019261160d61030e9661162d9461154f565b611562565b6001600160a01b039093165f90815260116020526040902090565b015490611542565b506001600160a01b03165f908152601160205260409020805461030e92509060019061162d565b6001600160a01b03165f9081526020819052604090205490565b9061167f611929565b81516001600160401b0381116107ae576116a38161169e601054610747565b61174c565b602092601f82116001146116e3576116d3929382915f926116d8575b50508160011b915f199060031b1c19161790565b601055565b015190505f806116bf565b60105f52601f198216935f80516020612753833981519152915f5b868110611734575083600195961061171c575b505050811b01601055565b01515f1960f88460031b161c191690555f8080611711565b919260206001819286850151815501940192016116fe565b601f8111611758575050565b60105f5260205f20906020601f840160051c83019310611792575b601f0160051c01905b818110611787575050565b5f815560010161177c565b9091508190611773565b156117a357565b633601f27d60e11b5f5260045ffd5b156117b957565b63bbb80c2b60e01b5f5260045ffd5b600e546117d681151561179c565b5f90600254600f5490600d54915b6117ed84611508565b421115611851576118499161183d611836611825611816611843956118118a611508565b611542565b611820888661154f565b61154f565b6a1a1601fc4ea7109e000000900490565b8092611527565b95611527565b92611508565b9192826117e4565b9091610f35949392824211611892575b505050611878906118738315156117b2565b600e55565b61188142600f55565b600b546001600160a01b0316611cd5565b6118256118c1936118b56118ae6118789798956118bb9561154f565b9142611542565b9061154f565b90611527565b91905f80611861565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba31461190a576119069160018060a01b03165f52600160205260405f2061148a565b5490565b50505f1990565b6040519061191e82610793565b5f6020838281520152565b600b546001600160a01b0316330361193d57565b63118cdaa760e01b5f523360045260245ffd5b6001600160a01b0316600452602452604452606490565b6001600160a01b038116939291908415610942576001600160a01b0382168015611a1b57600c546001600160a01b03811682149081611a0c575b50610924576119af82611458565b54958487106119f75784610f359697036119c884611458565b556119d284611458565b8054860190556040518581525f80516020612733833981519152908060208101610904565b63391434e360e21b5f52610921858885611950565b60ff915060a01c16155f6119a1565b63ec442f0560e01b5f525f60045260245ffd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611b21575b15611a89577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611b1b60c0826107b3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611a60565b65ffffffffffff8111611b625765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b908154905f829160058411611bb7575b611b94935084611f80565b80611b9f5750505f90565b611ba890611534565b905f5260205f20015460301c90565b9192611bc281611e0d565b8103908111610cd357611b9493855f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14611bf8575091611b89565b929150611c0490611519565b90611b89565b6001600160a01b038181165f81815260086020526040812080548685166001600160a01b031982168117909255610f3596941694611c709390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a461165c565b91611fe4565b80549081611c845750505f90565b815f19810111610cd3575f525f199060205f2001015460301c90565b604290611cab611a2e565b906040519161190160f01b8352600283015260228201522090565b9161030e939161117193612236565b91906001600160a01b0383168015611a1b57600c546001600160a01b03811682149081611d77575b5061092457611d16611d1183600254611527565b600255565b611d1f84611458565b8054830190556040518281525f905f8051602061273383398151915290602090a3600254926001600160d01b03808511611d605750610f359293505f6124c2565b630e58ae9360e11b5f52600485905260245260445ffd5b60ff915060a01c16155f611cfd565b6001600160a01b03165f90815260076020526040902080546001810190915590565b6001600160a01b031690811561060d576001600160a01b0381169283156105fa5780611e007f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593855f52600160205260405f2061148a565b55604051908152602090a3565b8015611f7b5761030e90611f11611f0a611f00611ef6611eec611ee2611ed8611ece6001611ebc5f8b608081901c80611f6d575b5080611e50611eb29260401c90565b80611f60575b50611e618160201c90565b80611f53575b50611e728160101c90565b80611f46575b50611e838160081c90565b80611f39575b50611e948160041c90565b80611f2c575b50611ea58160021c90565b80611f1f575b5060011c90565b611f175760011c90565b1b611ec7818b611562565b0160011c90565b611ec7818a611562565b611ec78189611562565b611ec78188611562565b611ec78187611562565b611ec78186611562565b611ec78185611562565b8092611562565b906123a0565b820160011c90565b600291509201915f611eab565b600491509201915f611e9a565b600891509201915f611e89565b601091509201915f611e78565b602091509201915f611e67565b604091509201915f611e56565b608092509050611eb2611e41565b505f90565b91905b838210611f905750505090565b9091928083169080841860011c8201809211610cd357845f5265ffffffffffff8260205f2001541665ffffffffffff8416105f14611fd25750925b9190611f83565b939250611fde90611519565b91611fcb565b6001600160a01b038083169392919081169081851415806120c3575b61200c575b5050505050565b81612073575b505082612021575b8080612005565b5f805160206127738339815191529161204561203f61204b93611471565b916123b2565b9061241b565b604051918291612068916001600160d01b0391821691168361149f565b0390a25f808061201a565b61209c61208d5f8051602061277383398151915292611471565b612096866123b2565b906123e3565b6040519182916120b9916001600160d01b0391821691168361149f565b0390a25f80612012565b50831515612000565b60ff81146120dd5761030e90612484565b50604051600554815f6120ef83610747565b80835292600181169081156121725750600114612113575b61030e925003826107b3565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b81831061215657505090602061030e92820101612107565b602091935080600191548385880101520191019091839261213e565b6020925061030e94915060ff191682840152151560051b820101612107565b60ff81146121a25761030e90612484565b50604051600654815f6121b483610747565b808352926001811690811561217257506001146121d75761030e925003826107b3565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b81831061221a57505090602061030e92820101612107565b6020919350806001915483858801015201910190918392612202565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384116122ae579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156122a3575f516001600160a01b0381161561229957905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600411156122c357565b634e487b7160e01b5f52602160045260245ffd5b6122e0816122b9565b806122e9575050565b6122f2816122b9565b600181036123095763f645eedf60e01b5f5260045ffd5b612312816122b9565b6002810361232d575063fce698f760e01b5f5260045260245ffd5b806123396003926122b9565b146123415750565b6335e2f38360e21b5f5260045260245ffd5b8054821015612368575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9060405161238981610793565b915465ffffffffffff8116835260301c6020830152565b90808210156123ad575090565b905090565b6001600160d01b0381116123cc576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b906123ed43611b4a565b906123f783611c76565b6001600160d01b039182169082160391908211610cd357612417926125f3565b9091565b9061242543611b4a565b9061242f83611c76565b6001600160d01b039182169082160191908211610cd357612417926125f3565b61245843611b4a565b90612463600a611c76565b6001600160d01b0391821690821603908111610cd35761241791600a6125f3565b60ff811690601f82116124b357604051916124a06040846107b3565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b9091906001600160a01b03168015612529575b610f35926001600160a01b0316908115612511575b5f90815260086020526040808220549282529020546001600160a01b039081169116611fe4565b61252261251d846123b2565b61244f565b50506124ea565b612532826123b2565b9261253c43611b4a565b93612547600a611c76565b6001600160d01b039182169082160194908511610cd357610f359461256d91600a6125f3565b90505092506124d5565b9065ffffffffffff82549181199060301b169116179055565b8054600160401b8110156107ae576125ad91600182018155612353565b6125e0578165ffffffffffff610f3593511665ffffffffffff19835416178255602060018060d01b039101511690612577565b634e487b7160e01b5f525f60045260245ffd5b8054929392919082156126e95761261f61261a61260f85611534565b835f5260205f200190565b61237c565b9065ffffffffffff612637835165ffffffffffff1690565b81851691829116116126da5761269e94602094889261266a61265f875165ffffffffffff1690565b65ffffffffffff1690565b036126a257506126909261268061268b92611534565b905f5260205f200190565b612577565b01516001600160d01b031690565b9190565b9150506126d5916126c26126b4610f26565b65ffffffffffff9093168352565b6001600160d01b03881682860152612590565b612690565b632520601d60e01b5f5260045ffd5b61270d92506126f96126b4610f26565b6001600160d01b0385166020830152612590565b5f919056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724a164736f6c634300081a000ac65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724";
5
5
 
6
6
  exports.derc2080_default = derc2080_default;
7
- //# sourceMappingURL=chunk-2ZM4JVFC.js.map
8
- //# sourceMappingURL=chunk-2ZM4JVFC.js.map
7
+ //# sourceMappingURL=chunk-J62YDWIK.js.map
8
+ //# sourceMappingURL=chunk-J62YDWIK.js.map