@whetstone-research/doppler-sdk 0.0.23 → 1.0.0

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 (425) hide show
  1. package/README.md +556 -229
  2. package/dist/chunk-3LTCKCJC.js +319 -0
  3. package/dist/chunk-3LTCKCJC.js.map +1 -0
  4. package/dist/chunk-PZ5AY32C.js +9 -0
  5. package/dist/{chunk-3PNCB4W5.js.map → chunk-PZ5AY32C.js.map} +1 -1
  6. package/dist/chunk-RO6R66OM.js +974 -0
  7. package/dist/chunk-RO6R66OM.js.map +1 -0
  8. package/dist/evm/index.d.ts +8533 -0
  9. package/dist/evm/index.js +15055 -0
  10. package/dist/evm/index.js.map +1 -0
  11. package/dist/oracle-BSvZ6pxp.d.ts +820 -0
  12. package/dist/pda-RVIHNLRP.js +4 -0
  13. package/dist/pda-RVIHNLRP.js.map +1 -0
  14. package/dist/solana/index.d.ts +2495 -0
  15. package/dist/solana/index.js +2209 -0
  16. package/dist/solana/index.js.map +1 -0
  17. package/dist/solana/react/index.d.ts +1046 -0
  18. package/dist/solana/react/index.js +1436 -0
  19. package/dist/solana/react/index.js.map +1 -0
  20. package/package.json +37 -21
  21. package/dist/DopplerSDK.d.mts +0 -94
  22. package/dist/DopplerSDK.d.ts +0 -94
  23. package/dist/DopplerSDK.js +0 -51
  24. package/dist/DopplerSDK.js.map +0 -1
  25. package/dist/DopplerSDK.mjs +0 -42
  26. package/dist/DopplerSDK.mjs.map +0 -1
  27. package/dist/abis/bytecodes/derc20.d.mts +0 -3
  28. package/dist/abis/bytecodes/derc20.d.ts +0 -3
  29. package/dist/abis/bytecodes/derc20.js +0 -9
  30. package/dist/abis/bytecodes/derc20.js.map +0 -1
  31. package/dist/abis/bytecodes/derc20.mjs +0 -3
  32. package/dist/abis/bytecodes/derc20.mjs.map +0 -1
  33. package/dist/abis/bytecodes/derc2080.d.mts +0 -3
  34. package/dist/abis/bytecodes/derc2080.d.ts +0 -3
  35. package/dist/abis/bytecodes/derc2080.js +0 -9
  36. package/dist/abis/bytecodes/derc2080.js.map +0 -1
  37. package/dist/abis/bytecodes/derc2080.mjs +0 -3
  38. package/dist/abis/bytecodes/derc2080.mjs.map +0 -1
  39. package/dist/abis/bytecodes/doppler.d.mts +0 -3
  40. package/dist/abis/bytecodes/doppler.d.ts +0 -3
  41. package/dist/abis/bytecodes/doppler.js +0 -9
  42. package/dist/abis/bytecodes/doppler.js.map +0 -1
  43. package/dist/abis/bytecodes/doppler.mjs +0 -3
  44. package/dist/abis/bytecodes/doppler.mjs.map +0 -1
  45. package/dist/abis/bytecodes/dopplerDN404.d.mts +0 -3
  46. package/dist/abis/bytecodes/dopplerDN404.d.ts +0 -3
  47. package/dist/abis/bytecodes/dopplerDN404.js +0 -9
  48. package/dist/abis/bytecodes/dopplerDN404.js.map +0 -1
  49. package/dist/abis/bytecodes/dopplerDN404.mjs +0 -3
  50. package/dist/abis/bytecodes/dopplerDN404.mjs.map +0 -1
  51. package/dist/abis/bytecodes/stateView.d.mts +0 -3
  52. package/dist/abis/bytecodes/stateView.d.ts +0 -3
  53. package/dist/abis/bytecodes/stateView.js +0 -9
  54. package/dist/abis/bytecodes/stateView.js.map +0 -1
  55. package/dist/abis/bytecodes/stateView.mjs +0 -3
  56. package/dist/abis/bytecodes/stateView.mjs.map +0 -1
  57. package/dist/abis/bytecodes.d.mts +0 -5
  58. package/dist/abis/bytecodes.d.ts +0 -5
  59. package/dist/abis/bytecodes.js +0 -33
  60. package/dist/abis/bytecodes.js.map +0 -1
  61. package/dist/abis/bytecodes.mjs +0 -8
  62. package/dist/abis/bytecodes.mjs.map +0 -1
  63. package/dist/abis/index.d.mts +0 -3460
  64. package/dist/abis/index.d.ts +0 -3460
  65. package/dist/abis/index.js +0 -122
  66. package/dist/abis/index.js.map +0 -1
  67. package/dist/abis/index.mjs +0 -9
  68. package/dist/abis/index.mjs.map +0 -1
  69. package/dist/addresses.d.mts +0 -65
  70. package/dist/addresses.d.ts +0 -65
  71. package/dist/addresses.js +0 -29
  72. package/dist/addresses.js.map +0 -1
  73. package/dist/addresses.mjs +0 -4
  74. package/dist/addresses.mjs.map +0 -1
  75. package/dist/builders/DynamicAuctionBuilder.d.mts +0 -138
  76. package/dist/builders/DynamicAuctionBuilder.d.ts +0 -138
  77. package/dist/builders/DynamicAuctionBuilder.js +0 -35
  78. package/dist/builders/DynamicAuctionBuilder.js.map +0 -1
  79. package/dist/builders/DynamicAuctionBuilder.mjs +0 -26
  80. package/dist/builders/DynamicAuctionBuilder.mjs.map +0 -1
  81. package/dist/builders/MulticurveBuilder.d.mts +0 -183
  82. package/dist/builders/MulticurveBuilder.d.ts +0 -183
  83. package/dist/builders/MulticurveBuilder.js +0 -35
  84. package/dist/builders/MulticurveBuilder.js.map +0 -1
  85. package/dist/builders/MulticurveBuilder.mjs +0 -26
  86. package/dist/builders/MulticurveBuilder.mjs.map +0 -1
  87. package/dist/builders/StaticAuctionBuilder.d.mts +0 -131
  88. package/dist/builders/StaticAuctionBuilder.d.ts +0 -131
  89. package/dist/builders/StaticAuctionBuilder.js +0 -35
  90. package/dist/builders/StaticAuctionBuilder.js.map +0 -1
  91. package/dist/builders/StaticAuctionBuilder.mjs +0 -26
  92. package/dist/builders/StaticAuctionBuilder.mjs.map +0 -1
  93. package/dist/builders/index.d.mts +0 -8
  94. package/dist/builders/index.d.ts +0 -8
  95. package/dist/builders/index.js +0 -62
  96. package/dist/builders/index.js.map +0 -1
  97. package/dist/builders/index.mjs +0 -29
  98. package/dist/builders/index.mjs.map +0 -1
  99. package/dist/builders/shared.d.mts +0 -115
  100. package/dist/builders/shared.d.ts +0 -115
  101. package/dist/builders/shared.js +0 -45
  102. package/dist/builders/shared.js.map +0 -1
  103. package/dist/builders/shared.mjs +0 -24
  104. package/dist/builders/shared.mjs.map +0 -1
  105. package/dist/chunk-25GEBO3B.mjs +0 -219
  106. package/dist/chunk-25GEBO3B.mjs.map +0 -1
  107. package/dist/chunk-3MVW6UIW.js +0 -2294
  108. package/dist/chunk-3MVW6UIW.js.map +0 -1
  109. package/dist/chunk-3NMGCQJ4.mjs +0 -6
  110. package/dist/chunk-3NMGCQJ4.mjs.map +0 -1
  111. package/dist/chunk-3PNCB4W5.js +0 -4
  112. package/dist/chunk-4VWQNNNW.js +0 -233
  113. package/dist/chunk-4VWQNNNW.js.map +0 -1
  114. package/dist/chunk-4XN6DQBW.js +0 -4
  115. package/dist/chunk-4XN6DQBW.js.map +0 -1
  116. package/dist/chunk-5TQOT6CW.js +0 -8
  117. package/dist/chunk-5TQOT6CW.js.map +0 -1
  118. package/dist/chunk-6BQY5EPB.js +0 -144
  119. package/dist/chunk-6BQY5EPB.js.map +0 -1
  120. package/dist/chunk-6H6X3VTZ.js +0 -18
  121. package/dist/chunk-6H6X3VTZ.js.map +0 -1
  122. package/dist/chunk-6UHDSD42.js +0 -2585
  123. package/dist/chunk-6UHDSD42.js.map +0 -1
  124. package/dist/chunk-7CAAI5DL.js +0 -273
  125. package/dist/chunk-7CAAI5DL.js.map +0 -1
  126. package/dist/chunk-7M57PU6V.js +0 -28
  127. package/dist/chunk-7M57PU6V.js.map +0 -1
  128. package/dist/chunk-7P2SPZC7.mjs +0 -2583
  129. package/dist/chunk-7P2SPZC7.mjs.map +0 -1
  130. package/dist/chunk-7ZUV6WPX.mjs +0 -3
  131. package/dist/chunk-7ZUV6WPX.mjs.map +0 -1
  132. package/dist/chunk-ABT6AT7C.mjs +0 -16
  133. package/dist/chunk-ABT6AT7C.mjs.map +0 -1
  134. package/dist/chunk-C6MH7HYT.mjs +0 -138
  135. package/dist/chunk-C6MH7HYT.mjs.map +0 -1
  136. package/dist/chunk-CATH4QRQ.mjs +0 -141
  137. package/dist/chunk-CATH4QRQ.mjs.map +0 -1
  138. package/dist/chunk-CFAAYL5M.mjs +0 -26
  139. package/dist/chunk-CFAAYL5M.mjs.map +0 -1
  140. package/dist/chunk-CMNJZKTM.js +0 -140
  141. package/dist/chunk-CMNJZKTM.js.map +0 -1
  142. package/dist/chunk-CWTGQAOG.mjs +0 -72
  143. package/dist/chunk-CWTGQAOG.mjs.map +0 -1
  144. package/dist/chunk-DNB3T5P2.js +0 -269
  145. package/dist/chunk-DNB3T5P2.js.map +0 -1
  146. package/dist/chunk-DOUF6NON.mjs +0 -3
  147. package/dist/chunk-DOUF6NON.mjs.map +0 -1
  148. package/dist/chunk-DSYPZETD.js +0 -4
  149. package/dist/chunk-DSYPZETD.js.map +0 -1
  150. package/dist/chunk-E2NF4AQB.mjs +0 -2271
  151. package/dist/chunk-E2NF4AQB.mjs.map +0 -1
  152. package/dist/chunk-EH3V2BJF.js +0 -592
  153. package/dist/chunk-EH3V2BJF.js.map +0 -1
  154. package/dist/chunk-EIXUJANI.mjs +0 -590
  155. package/dist/chunk-EIXUJANI.mjs.map +0 -1
  156. package/dist/chunk-FFV6DMPA.mjs +0 -263
  157. package/dist/chunk-FFV6DMPA.mjs.map +0 -1
  158. package/dist/chunk-FLFYAWSS.mjs +0 -238
  159. package/dist/chunk-FLFYAWSS.mjs.map +0 -1
  160. package/dist/chunk-FNUBKONK.js +0 -291
  161. package/dist/chunk-FNUBKONK.js.map +0 -1
  162. package/dist/chunk-FOESYJP3.mjs +0 -3
  163. package/dist/chunk-FOESYJP3.mjs.map +0 -1
  164. package/dist/chunk-FTRCBE3J.js +0 -320
  165. package/dist/chunk-FTRCBE3J.js.map +0 -1
  166. package/dist/chunk-FZ4FIWCR.js +0 -240
  167. package/dist/chunk-FZ4FIWCR.js.map +0 -1
  168. package/dist/chunk-GDODJJ7D.mjs +0 -36
  169. package/dist/chunk-GDODJJ7D.mjs.map +0 -1
  170. package/dist/chunk-GSBQIVME.mjs +0 -278
  171. package/dist/chunk-GSBQIVME.mjs.map +0 -1
  172. package/dist/chunk-GSTY3GO7.mjs +0 -40
  173. package/dist/chunk-GSTY3GO7.mjs.map +0 -1
  174. package/dist/chunk-H3B54PFV.mjs +0 -17
  175. package/dist/chunk-H3B54PFV.mjs.map +0 -1
  176. package/dist/chunk-H7WPK5CR.js +0 -297
  177. package/dist/chunk-H7WPK5CR.js.map +0 -1
  178. package/dist/chunk-HJFVRV47.js +0 -120
  179. package/dist/chunk-HJFVRV47.js.map +0 -1
  180. package/dist/chunk-HL7ZAAD4.mjs +0 -375
  181. package/dist/chunk-HL7ZAAD4.mjs.map +0 -1
  182. package/dist/chunk-IWJOPXYN.mjs +0 -96
  183. package/dist/chunk-IWJOPXYN.mjs.map +0 -1
  184. package/dist/chunk-J62YDWIK.js +0 -8
  185. package/dist/chunk-J62YDWIK.js.map +0 -1
  186. package/dist/chunk-JB5XXPLL.js +0 -377
  187. package/dist/chunk-JB5XXPLL.js.map +0 -1
  188. package/dist/chunk-JIKAD4YL.js +0 -4
  189. package/dist/chunk-JIKAD4YL.js.map +0 -1
  190. package/dist/chunk-KAZQJ24E.mjs +0 -59
  191. package/dist/chunk-KAZQJ24E.mjs.map +0 -1
  192. package/dist/chunk-KHUE77HC.js +0 -81
  193. package/dist/chunk-KHUE77HC.js.map +0 -1
  194. package/dist/chunk-KOAC3BBP.mjs +0 -11
  195. package/dist/chunk-KOAC3BBP.mjs.map +0 -1
  196. package/dist/chunk-OHA5KJ2M.mjs +0 -6
  197. package/dist/chunk-OHA5KJ2M.mjs.map +0 -1
  198. package/dist/chunk-OX5CESVM.js +0 -40
  199. package/dist/chunk-OX5CESVM.js.map +0 -1
  200. package/dist/chunk-P25HBGP5.mjs +0 -3
  201. package/dist/chunk-P25HBGP5.mjs.map +0 -1
  202. package/dist/chunk-P7CHGWY7.js +0 -4
  203. package/dist/chunk-P7CHGWY7.js.map +0 -1
  204. package/dist/chunk-QAPQGDWK.js +0 -8
  205. package/dist/chunk-QAPQGDWK.js.map +0 -1
  206. package/dist/chunk-QOGBOT2M.mjs +0 -328
  207. package/dist/chunk-QOGBOT2M.mjs.map +0 -1
  208. package/dist/chunk-QRTABC4Z.js +0 -8
  209. package/dist/chunk-QRTABC4Z.js.map +0 -1
  210. package/dist/chunk-QSQGLWNY.mjs +0 -3
  211. package/dist/chunk-QSQGLWNY.mjs.map +0 -1
  212. package/dist/chunk-RI6SDMER.mjs +0 -295
  213. package/dist/chunk-RI6SDMER.mjs.map +0 -1
  214. package/dist/chunk-RIIVW6TQ.mjs +0 -267
  215. package/dist/chunk-RIIVW6TQ.mjs.map +0 -1
  216. package/dist/chunk-RV64M4Q6.mjs +0 -3
  217. package/dist/chunk-RV64M4Q6.mjs.map +0 -1
  218. package/dist/chunk-RXUJ4DUB.js +0 -330
  219. package/dist/chunk-RXUJ4DUB.js.map +0 -1
  220. package/dist/chunk-SD7BHT2F.mjs +0 -3
  221. package/dist/chunk-SD7BHT2F.mjs.map +0 -1
  222. package/dist/chunk-SWWLOD7Q.mjs +0 -6
  223. package/dist/chunk-SWWLOD7Q.mjs.map +0 -1
  224. package/dist/chunk-TIGHBA37.js +0 -143
  225. package/dist/chunk-TIGHBA37.js.map +0 -1
  226. package/dist/chunk-TLEVIIUE.mjs +0 -34
  227. package/dist/chunk-TLEVIIUE.mjs.map +0 -1
  228. package/dist/chunk-U3GOWK6J.mjs +0 -6
  229. package/dist/chunk-U3GOWK6J.mjs.map +0 -1
  230. package/dist/chunk-UPVKABAV.js +0 -19
  231. package/dist/chunk-UPVKABAV.js.map +0 -1
  232. package/dist/chunk-VCX6FG3E.mjs +0 -318
  233. package/dist/chunk-VCX6FG3E.mjs.map +0 -1
  234. package/dist/chunk-VEIVYUYF.js +0 -4
  235. package/dist/chunk-VEIVYUYF.js.map +0 -1
  236. package/dist/chunk-VYSOAGRU.mjs +0 -6
  237. package/dist/chunk-VYSOAGRU.mjs.map +0 -1
  238. package/dist/chunk-WJBJARLJ.js +0 -38
  239. package/dist/chunk-WJBJARLJ.js.map +0 -1
  240. package/dist/chunk-WNUB3UTT.js +0 -241
  241. package/dist/chunk-WNUB3UTT.js.map +0 -1
  242. package/dist/chunk-WQHTNL5L.js +0 -4
  243. package/dist/chunk-WQHTNL5L.js.map +0 -1
  244. package/dist/chunk-X3UMAHOJ.js +0 -4
  245. package/dist/chunk-X3UMAHOJ.js.map +0 -1
  246. package/dist/chunk-XMFOZYNI.js +0 -8
  247. package/dist/chunk-XMFOZYNI.js.map +0 -1
  248. package/dist/chunk-XNMXN5SZ.mjs +0 -3
  249. package/dist/chunk-XNMXN5SZ.mjs.map +0 -1
  250. package/dist/chunk-XRYLHTVV.mjs +0 -267
  251. package/dist/chunk-XRYLHTVV.mjs.map +0 -1
  252. package/dist/chunk-XSJTASPK.js +0 -13
  253. package/dist/chunk-XSJTASPK.js.map +0 -1
  254. package/dist/chunk-XT3BAM4H.js +0 -45
  255. package/dist/chunk-XT3BAM4H.js.map +0 -1
  256. package/dist/chunk-YBK6EBA5.mjs +0 -239
  257. package/dist/chunk-YBK6EBA5.mjs.map +0 -1
  258. package/dist/chunk-YFEPTSI2.js +0 -265
  259. package/dist/chunk-YFEPTSI2.js.map +0 -1
  260. package/dist/chunk-YYLD3AJ7.js +0 -61
  261. package/dist/chunk-YYLD3AJ7.js.map +0 -1
  262. package/dist/chunk-ZEDJUNC6.mjs +0 -115
  263. package/dist/chunk-ZEDJUNC6.mjs.map +0 -1
  264. package/dist/constants.d.mts +0 -91
  265. package/dist/constants.d.ts +0 -91
  266. package/dist/constants.js +0 -196
  267. package/dist/constants.js.map +0 -1
  268. package/dist/constants.mjs +0 -3
  269. package/dist/constants.mjs.map +0 -1
  270. package/dist/deployments.generated.d.mts +0 -267
  271. package/dist/deployments.generated.d.ts +0 -267
  272. package/dist/deployments.generated.js +0 -12
  273. package/dist/deployments.generated.js.map +0 -1
  274. package/dist/deployments.generated.mjs +0 -3
  275. package/dist/deployments.generated.mjs.map +0 -1
  276. package/dist/entities/DopplerFactory.d.mts +0 -266
  277. package/dist/entities/DopplerFactory.d.ts +0 -266
  278. package/dist/entities/DopplerFactory.js +0 -33
  279. package/dist/entities/DopplerFactory.js.map +0 -1
  280. package/dist/entities/DopplerFactory.mjs +0 -24
  281. package/dist/entities/DopplerFactory.mjs.map +0 -1
  282. package/dist/entities/auction/DynamicAuction.d.mts +0 -72
  283. package/dist/entities/auction/DynamicAuction.d.ts +0 -72
  284. package/dist/entities/auction/DynamicAuction.js +0 -21
  285. package/dist/entities/auction/DynamicAuction.js.map +0 -1
  286. package/dist/entities/auction/DynamicAuction.mjs +0 -12
  287. package/dist/entities/auction/DynamicAuction.mjs.map +0 -1
  288. package/dist/entities/auction/MulticurvePool.d.mts +0 -74
  289. package/dist/entities/auction/MulticurvePool.d.ts +0 -74
  290. package/dist/entities/auction/MulticurvePool.js +0 -24
  291. package/dist/entities/auction/MulticurvePool.js.map +0 -1
  292. package/dist/entities/auction/MulticurvePool.mjs +0 -15
  293. package/dist/entities/auction/MulticurvePool.mjs.map +0 -1
  294. package/dist/entities/auction/StaticAuction.d.mts +0 -44
  295. package/dist/entities/auction/StaticAuction.d.ts +0 -44
  296. package/dist/entities/auction/StaticAuction.js +0 -21
  297. package/dist/entities/auction/StaticAuction.js.map +0 -1
  298. package/dist/entities/auction/StaticAuction.mjs +0 -12
  299. package/dist/entities/auction/StaticAuction.mjs.map +0 -1
  300. package/dist/entities/auction/index.d.mts +0 -7
  301. package/dist/entities/auction/index.d.ts +0 -7
  302. package/dist/entities/auction/index.js +0 -35
  303. package/dist/entities/auction/index.js.map +0 -1
  304. package/dist/entities/auction/index.mjs +0 -18
  305. package/dist/entities/auction/index.mjs.map +0 -1
  306. package/dist/entities/quoter/Quoter.d.mts +0 -150
  307. package/dist/entities/quoter/Quoter.d.ts +0 -150
  308. package/dist/entities/quoter/Quoter.js +0 -21
  309. package/dist/entities/quoter/Quoter.js.map +0 -1
  310. package/dist/entities/quoter/Quoter.mjs +0 -12
  311. package/dist/entities/quoter/Quoter.mjs.map +0 -1
  312. package/dist/entities/quoter/index.d.mts +0 -5
  313. package/dist/entities/quoter/index.d.ts +0 -5
  314. package/dist/entities/quoter/index.js +0 -22
  315. package/dist/entities/quoter/index.js.map +0 -1
  316. package/dist/entities/quoter/index.mjs +0 -13
  317. package/dist/entities/quoter/index.mjs.map +0 -1
  318. package/dist/entities/token/derc20/Derc20.d.mts +0 -102
  319. package/dist/entities/token/derc20/Derc20.d.ts +0 -102
  320. package/dist/entities/token/derc20/Derc20.js +0 -19
  321. package/dist/entities/token/derc20/Derc20.js.map +0 -1
  322. package/dist/entities/token/derc20/Derc20.mjs +0 -10
  323. package/dist/entities/token/derc20/Derc20.mjs.map +0 -1
  324. package/dist/entities/token/derc20/index.d.mts +0 -5
  325. package/dist/entities/token/derc20/index.d.ts +0 -5
  326. package/dist/entities/token/derc20/index.js +0 -20
  327. package/dist/entities/token/derc20/index.js.map +0 -1
  328. package/dist/entities/token/derc20/index.mjs +0 -11
  329. package/dist/entities/token/derc20/index.mjs.map +0 -1
  330. package/dist/entities/token/eth/Eth.d.mts +0 -54
  331. package/dist/entities/token/eth/Eth.d.ts +0 -54
  332. package/dist/entities/token/eth/Eth.js +0 -12
  333. package/dist/entities/token/eth/Eth.js.map +0 -1
  334. package/dist/entities/token/eth/Eth.mjs +0 -3
  335. package/dist/entities/token/eth/Eth.mjs.map +0 -1
  336. package/dist/entities/token/eth/index.d.mts +0 -5
  337. package/dist/entities/token/eth/index.d.ts +0 -5
  338. package/dist/entities/token/eth/index.js +0 -13
  339. package/dist/entities/token/eth/index.js.map +0 -1
  340. package/dist/entities/token/eth/index.mjs +0 -4
  341. package/dist/entities/token/eth/index.mjs.map +0 -1
  342. package/dist/entities/token/index.d.mts +0 -6
  343. package/dist/entities/token/index.d.ts +0 -6
  344. package/dist/entities/token/index.js +0 -27
  345. package/dist/entities/token/index.js.map +0 -1
  346. package/dist/entities/token/index.mjs +0 -14
  347. package/dist/entities/token/index.mjs.map +0 -1
  348. package/dist/index.d.mts +0 -37
  349. package/dist/index.d.ts +0 -37
  350. package/dist/index.js +0 -565
  351. package/dist/index.js.map +0 -1
  352. package/dist/index.mjs +0 -47
  353. package/dist/index.mjs.map +0 -1
  354. package/dist/types.d.mts +0 -607
  355. package/dist/types.d.ts +0 -607
  356. package/dist/types.js +0 -30
  357. package/dist/types.js.map +0 -1
  358. package/dist/types.mjs +0 -5
  359. package/dist/types.mjs.map +0 -1
  360. package/dist/utils/airlock.d.mts +0 -11
  361. package/dist/utils/airlock.d.ts +0 -11
  362. package/dist/utils/airlock.js +0 -26
  363. package/dist/utils/airlock.js.map +0 -1
  364. package/dist/utils/airlock.mjs +0 -5
  365. package/dist/utils/airlock.mjs.map +0 -1
  366. package/dist/utils/balanceDelta.d.mts +0 -10
  367. package/dist/utils/balanceDelta.d.ts +0 -10
  368. package/dist/utils/balanceDelta.js +0 -12
  369. package/dist/utils/balanceDelta.js.map +0 -1
  370. package/dist/utils/balanceDelta.mjs +0 -3
  371. package/dist/utils/balanceDelta.mjs.map +0 -1
  372. package/dist/utils/computeOptimalGamma.d.mts +0 -7
  373. package/dist/utils/computeOptimalGamma.d.ts +0 -7
  374. package/dist/utils/computeOptimalGamma.js +0 -12
  375. package/dist/utils/computeOptimalGamma.js.map +0 -1
  376. package/dist/utils/computeOptimalGamma.mjs +0 -3
  377. package/dist/utils/computeOptimalGamma.mjs.map +0 -1
  378. package/dist/utils/dopplerHookMigrator.d.mts +0 -11
  379. package/dist/utils/dopplerHookMigrator.d.ts +0 -11
  380. package/dist/utils/dopplerHookMigrator.js +0 -12
  381. package/dist/utils/dopplerHookMigrator.js.map +0 -1
  382. package/dist/utils/dopplerHookMigrator.mjs +0 -3
  383. package/dist/utils/dopplerHookMigrator.mjs.map +0 -1
  384. package/dist/utils/index.d.mts +0 -14
  385. package/dist/utils/index.d.ts +0 -14
  386. package/dist/utils/index.js +0 -195
  387. package/dist/utils/index.js.map +0 -1
  388. package/dist/utils/index.mjs +0 -22
  389. package/dist/utils/index.mjs.map +0 -1
  390. package/dist/utils/isToken0Expected.d.mts +0 -13
  391. package/dist/utils/isToken0Expected.d.ts +0 -13
  392. package/dist/utils/isToken0Expected.js +0 -12
  393. package/dist/utils/isToken0Expected.js.map +0 -1
  394. package/dist/utils/isToken0Expected.mjs +0 -3
  395. package/dist/utils/isToken0Expected.mjs.map +0 -1
  396. package/dist/utils/marketCapHelpers.d.mts +0 -259
  397. package/dist/utils/marketCapHelpers.d.ts +0 -259
  398. package/dist/utils/marketCapHelpers.js +0 -58
  399. package/dist/utils/marketCapHelpers.js.map +0 -1
  400. package/dist/utils/marketCapHelpers.mjs +0 -5
  401. package/dist/utils/marketCapHelpers.mjs.map +0 -1
  402. package/dist/utils/poolKey.d.mts +0 -17
  403. package/dist/utils/poolKey.d.ts +0 -17
  404. package/dist/utils/poolKey.js +0 -12
  405. package/dist/utils/poolKey.js.map +0 -1
  406. package/dist/utils/poolKey.mjs +0 -3
  407. package/dist/utils/poolKey.mjs.map +0 -1
  408. package/dist/utils/priceHelpers.d.mts +0 -86
  409. package/dist/utils/priceHelpers.d.ts +0 -86
  410. package/dist/utils/priceHelpers.js +0 -41
  411. package/dist/utils/priceHelpers.js.map +0 -1
  412. package/dist/utils/priceHelpers.mjs +0 -4
  413. package/dist/utils/priceHelpers.mjs.map +0 -1
  414. package/dist/utils/tickMath.d.mts +0 -72
  415. package/dist/utils/tickMath.d.ts +0 -72
  416. package/dist/utils/tickMath.js +0 -60
  417. package/dist/utils/tickMath.js.map +0 -1
  418. package/dist/utils/tickMath.mjs +0 -3
  419. package/dist/utils/tickMath.mjs.map +0 -1
  420. package/dist/utils/tokenAddressMiner.d.mts +0 -37
  421. package/dist/utils/tokenAddressMiner.d.ts +0 -37
  422. package/dist/utils/tokenAddressMiner.js +0 -19
  423. package/dist/utils/tokenAddressMiner.js.map +0 -1
  424. package/dist/utils/tokenAddressMiner.mjs +0 -10
  425. package/dist/utils/tokenAddressMiner.mjs.map +0 -1
@@ -1,138 +0,0 @@
1
- import { StaticAuction } from './chunk-CATH4QRQ.mjs';
2
- import { Quoter } from './chunk-FFV6DMPA.mjs';
3
- import { Derc20 } from './chunk-QOGBOT2M.mjs';
4
- import { DynamicAuction } from './chunk-RI6SDMER.mjs';
5
- import { MulticurvePool } from './chunk-FLFYAWSS.mjs';
6
- import { DynamicAuctionBuilder } from './chunk-HL7ZAAD4.mjs';
7
- import { MulticurveBuilder } from './chunk-EIXUJANI.mjs';
8
- import { StaticAuctionBuilder } from './chunk-VCX6FG3E.mjs';
9
- import { DopplerFactory } from './chunk-7P2SPZC7.mjs';
10
- import { getAirlockOwner, DEFAULT_AIRLOCK_BENEFICIARY_SHARES, getAirlockBeneficiary } from './chunk-GSTY3GO7.mjs';
11
-
12
- // src/DopplerSDK.ts
13
- var DopplerSDK = class {
14
- constructor(config) {
15
- this.publicClient = config.publicClient;
16
- this.walletClient = config.walletClient;
17
- this.chainId = config.chainId;
18
- }
19
- /**
20
- * Get the factory instance for creating auctions
21
- */
22
- get factory() {
23
- if (!this._factory) {
24
- this._factory = new DopplerFactory(
25
- this.publicClient,
26
- this.walletClient,
27
- this.chainId
28
- );
29
- }
30
- return this._factory;
31
- }
32
- /**
33
- * Get the quoter instance for price queries
34
- */
35
- get quoter() {
36
- if (!this._quoter) {
37
- this._quoter = new Quoter(this.publicClient, this.chainId);
38
- }
39
- return this._quoter;
40
- }
41
- /**
42
- * Get a StaticAuction instance for interacting with a static auction pool
43
- * @param poolAddress The address of the Uniswap V3 pool
44
- */
45
- async getStaticAuction(poolAddress) {
46
- return new StaticAuction(this.publicClient, poolAddress);
47
- }
48
- /**
49
- * Get a DynamicAuction instance for interacting with a dynamic auction hook
50
- * @param hookAddress The address of the Uniswap V4 hook
51
- */
52
- async getDynamicAuction(hookAddress) {
53
- return new DynamicAuction(this.publicClient, hookAddress);
54
- }
55
- /**
56
- * Get a MulticurvePool instance for interacting with a V4 multicurve pool
57
- * @param tokenAddress The address of the token created by the auction (called "asset" in contracts; V4 pools don't have addresses, so the token is used as the lookup key)
58
- */
59
- async getMulticurvePool(tokenAddress) {
60
- return new MulticurvePool(
61
- this.publicClient,
62
- this.walletClient,
63
- tokenAddress
64
- );
65
- }
66
- /**
67
- * Get a DERC20 token instance for interacting with a token
68
- * @param tokenAddress The address of the DERC20 token
69
- */
70
- getDerc20(tokenAddress) {
71
- return new Derc20(this.publicClient, this.walletClient, tokenAddress);
72
- }
73
- /**
74
- * Get information about a static auction pool
75
- * @param poolAddress The address of the pool
76
- */
77
- async getPoolInfo(poolAddress) {
78
- const auction = new StaticAuction(this.publicClient, poolAddress);
79
- return auction.getPoolInfo();
80
- }
81
- /**
82
- * Get information about a dynamic auction hook
83
- * @param hookAddress The address of the hook
84
- */
85
- async getHookInfo(hookAddress) {
86
- const auction = new DynamicAuction(this.publicClient, hookAddress);
87
- return auction.getHookInfo();
88
- }
89
- /**
90
- * Create a new static auction builder
91
- */
92
- buildStaticAuction() {
93
- return new StaticAuctionBuilder(this.chainId);
94
- }
95
- /**
96
- * Create a new dynamic auction builder
97
- */
98
- buildDynamicAuction() {
99
- return new DynamicAuctionBuilder(this.chainId);
100
- }
101
- /**
102
- * Create a new multicurve (V4 initializer) auction builder
103
- */
104
- buildMulticurveAuction() {
105
- return new MulticurveBuilder(this.chainId);
106
- }
107
- /**
108
- * Get the current chain ID
109
- */
110
- getChainId() {
111
- return this.chainId;
112
- }
113
- /**
114
- * Get the underlying clients
115
- */
116
- getClients() {
117
- return {
118
- publicClient: this.publicClient,
119
- walletClient: this.walletClient
120
- };
121
- }
122
- /**
123
- * Get the airlock owner address for the configured chain
124
- */
125
- async getAirlockOwner() {
126
- return getAirlockOwner(this.publicClient);
127
- }
128
- /**
129
- * Convenience helper for building the airlock beneficiary entry with the default 5% (0.05e18 WAD shares)
130
- */
131
- async getAirlockBeneficiary(shares = DEFAULT_AIRLOCK_BENEFICIARY_SHARES) {
132
- return getAirlockBeneficiary(this.publicClient, shares);
133
- }
134
- };
135
-
136
- export { DopplerSDK };
137
- //# sourceMappingURL=chunk-C6MH7HYT.mjs.map
138
- //# sourceMappingURL=chunk-C6MH7HYT.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/DopplerSDK.ts"],"names":[],"mappings":";;;;;;;;;;;;AA4BO,IAAM,aAAN,MAAgE;AAAA,EAOrE,YAAY,MAAA,EAA0B;AACpC,IAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAC3B,IAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAC3B,IAAA,IAAA,CAAK,UAAU,MAAA,CAAO,OAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAA,GAA6B;AAC/B,IAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,MAAA,IAAA,CAAK,WAAW,IAAI,cAAA;AAAA,QAClB,IAAA,CAAK,YAAA;AAAA,QACL,IAAA,CAAK,YAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACP;AAAA,IACF;AACA,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAA,GAAiB;AACnB,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,IAAA,CAAK,UAAU,IAAI,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,KAAK,OAAO,CAAA;AAAA,IAC3D;AACA,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,WAAA,EAA8C;AACnE,IAAA,OAAO,IAAI,aAAA,CAAc,IAAA,CAAK,YAAA,EAAc,WAAW,CAAA;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,WAAA,EAA+C;AACrE,IAAA,OAAO,IAAI,cAAA,CAAe,IAAA,CAAK,YAAA,EAAc,WAAW,CAAA;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,YAAA,EAAgD;AACtE,IAAA,OAAO,IAAI,cAAA;AAAA,MACT,IAAA,CAAK,YAAA;AAAA,MACL,IAAA,CAAK,YAAA;AAAA,MACL;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,YAAA,EAA+B;AACvC,IAAA,OAAO,IAAI,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,cAAc,YAAY,CAAA;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,WAAA,EAAyC;AACzD,IAAA,MAAM,OAAA,GAAU,IAAI,aAAA,CAAc,IAAA,CAAK,cAAc,WAAW,CAAA;AAChE,IAAA,OAAO,QAAQ,WAAA,EAAY;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,WAAA,EAAyC;AACzD,IAAA,MAAM,OAAA,GAAU,IAAI,cAAA,CAAe,IAAA,CAAK,cAAc,WAAW,CAAA;AACjE,IAAA,OAAO,QAAQ,WAAA,EAAY;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAA,GAA8C;AAC5C,IAAA,OAAO,IAAI,oBAAA,CAAqB,IAAA,CAAK,OAAO,CAAA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAA,GAAgD;AAC9C,IAAA,OAAO,IAAI,qBAAA,CAAsB,IAAA,CAAK,OAAO,CAAA;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAA,GAA+C;AAC7C,IAAA,OAAO,IAAI,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAgB;AACd,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAGE;AACA,IAAA,OAAO;AAAA,MACL,cAAc,IAAA,CAAK,YAAA;AAAA,MACnB,cAAc,IAAA,CAAK;AAAA,KACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAoC;AACxC,IAAA,OAAO,eAAA,CAAkB,KAAK,YAAY,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAA,CACJ,MAAA,GAAiB,kCAAA,EACS;AAC1B,IAAA,OAAO,qBAAA,CAAsB,IAAA,CAAK,YAAA,EAAc,MAAM,CAAA;AAAA,EACxD;AACF","file":"chunk-C6MH7HYT.mjs","sourcesContent":["import type { Address, WalletClient } from 'viem';\nimport type {\n BeneficiaryData,\n DopplerSDKConfig,\n HookInfo,\n PoolInfo,\n SupportedPublicClient,\n} from './types';\nimport type { SupportedChainId } from './addresses';\nimport { DopplerFactory } from './entities/DopplerFactory';\nimport {\n StaticAuction,\n DynamicAuction,\n MulticurvePool,\n} from './entities/auction';\nimport { Quoter } from './entities/quoter';\nimport { Derc20 } from './entities/token';\nimport {\n StaticAuctionBuilder,\n DynamicAuctionBuilder,\n MulticurveBuilder,\n} from './builders';\nimport {\n DEFAULT_AIRLOCK_BENEFICIARY_SHARES,\n getAirlockBeneficiary,\n getAirlockOwner as fetchAirlockOwner,\n} from './utils/airlock';\n\nexport class DopplerSDK<C extends SupportedChainId = SupportedChainId> {\n private publicClient: SupportedPublicClient;\n private walletClient?: WalletClient;\n public chainId: C;\n private _factory?: DopplerFactory<C>;\n private _quoter?: Quoter;\n\n constructor(config: DopplerSDKConfig) {\n this.publicClient = config.publicClient;\n this.walletClient = config.walletClient;\n this.chainId = config.chainId as unknown as C;\n }\n\n /**\n * Get the factory instance for creating auctions\n */\n get factory(): DopplerFactory<C> {\n if (!this._factory) {\n this._factory = new DopplerFactory(\n this.publicClient,\n this.walletClient,\n this.chainId,\n );\n }\n return this._factory;\n }\n\n /**\n * Get the quoter instance for price queries\n */\n get quoter(): Quoter {\n if (!this._quoter) {\n this._quoter = new Quoter(this.publicClient, this.chainId);\n }\n return this._quoter;\n }\n\n /**\n * Get a StaticAuction instance for interacting with a static auction pool\n * @param poolAddress The address of the Uniswap V3 pool\n */\n async getStaticAuction(poolAddress: Address): Promise<StaticAuction> {\n return new StaticAuction(this.publicClient, poolAddress);\n }\n\n /**\n * Get a DynamicAuction instance for interacting with a dynamic auction hook\n * @param hookAddress The address of the Uniswap V4 hook\n */\n async getDynamicAuction(hookAddress: Address): Promise<DynamicAuction> {\n return new DynamicAuction(this.publicClient, hookAddress);\n }\n\n /**\n * Get a MulticurvePool instance for interacting with a V4 multicurve pool\n * @param tokenAddress The address of the token created by the auction (called \"asset\" in contracts; V4 pools don't have addresses, so the token is used as the lookup key)\n */\n async getMulticurvePool(tokenAddress: Address): Promise<MulticurvePool> {\n return new MulticurvePool(\n this.publicClient,\n this.walletClient,\n tokenAddress,\n );\n }\n\n /**\n * Get a DERC20 token instance for interacting with a token\n * @param tokenAddress The address of the DERC20 token\n */\n getDerc20(tokenAddress: Address): Derc20 {\n return new Derc20(this.publicClient, this.walletClient, tokenAddress);\n }\n\n /**\n * Get information about a static auction pool\n * @param poolAddress The address of the pool\n */\n async getPoolInfo(poolAddress: Address): Promise<PoolInfo> {\n const auction = new StaticAuction(this.publicClient, poolAddress);\n return auction.getPoolInfo();\n }\n\n /**\n * Get information about a dynamic auction hook\n * @param hookAddress The address of the hook\n */\n async getHookInfo(hookAddress: Address): Promise<HookInfo> {\n const auction = new DynamicAuction(this.publicClient, hookAddress);\n return auction.getHookInfo();\n }\n\n /**\n * Create a new static auction builder\n */\n buildStaticAuction(): StaticAuctionBuilder<C> {\n return new StaticAuctionBuilder(this.chainId);\n }\n\n /**\n * Create a new dynamic auction builder\n */\n buildDynamicAuction(): DynamicAuctionBuilder<C> {\n return new DynamicAuctionBuilder(this.chainId);\n }\n\n /**\n * Create a new multicurve (V4 initializer) auction builder\n */\n buildMulticurveAuction(): MulticurveBuilder<C> {\n return new MulticurveBuilder(this.chainId);\n }\n\n /**\n * Get the current chain ID\n */\n getChainId(): C {\n return this.chainId;\n }\n\n /**\n * Get the underlying clients\n */\n getClients(): {\n publicClient: SupportedPublicClient;\n walletClient?: WalletClient;\n } {\n return {\n publicClient: this.publicClient,\n walletClient: this.walletClient,\n };\n }\n\n /**\n * Get the airlock owner address for the configured chain\n */\n async getAirlockOwner(): Promise<Address> {\n return fetchAirlockOwner(this.publicClient);\n }\n\n /**\n * Convenience helper for building the airlock beneficiary entry with the default 5% (0.05e18 WAD shares)\n */\n async getAirlockBeneficiary(\n shares: bigint = DEFAULT_AIRLOCK_BENEFICIARY_SHARES,\n ): Promise<BeneficiaryData> {\n return getAirlockBeneficiary(this.publicClient, shares);\n }\n}\n"]}
@@ -1,141 +0,0 @@
1
- import { getAddresses } from './chunk-RIIVW6TQ.mjs';
2
- import { uniswapV3PoolAbi, airlockAbi } from './chunk-E2NF4AQB.mjs';
3
- import { zeroAddress } from 'viem';
4
-
5
- var StaticAuction = class {
6
- get rpc() {
7
- return this.client;
8
- }
9
- constructor(client, poolAddress) {
10
- this.client = client;
11
- this.poolAddress = poolAddress;
12
- }
13
- /**
14
- * Get the pool address
15
- */
16
- getAddress() {
17
- return this.poolAddress;
18
- }
19
- /**
20
- * Get current pool information
21
- */
22
- async getPoolInfo() {
23
- const [slot0, liquidity, token0, token1, fee] = await Promise.all([
24
- this.rpc.readContract({
25
- address: this.poolAddress,
26
- abi: uniswapV3PoolAbi,
27
- functionName: "slot0"
28
- }),
29
- this.rpc.readContract({
30
- address: this.poolAddress,
31
- abi: uniswapV3PoolAbi,
32
- functionName: "liquidity"
33
- }),
34
- this.rpc.readContract({
35
- address: this.poolAddress,
36
- abi: uniswapV3PoolAbi,
37
- functionName: "token0"
38
- }),
39
- this.rpc.readContract({
40
- address: this.poolAddress,
41
- abi: uniswapV3PoolAbi,
42
- functionName: "token1"
43
- }),
44
- this.rpc.readContract({
45
- address: this.poolAddress,
46
- abi: uniswapV3PoolAbi,
47
- functionName: "fee"
48
- })
49
- ]);
50
- const chainId = await this.rpc.getChainId();
51
- const addresses = getAddresses(chainId);
52
- const assetData = await this.rpc.readContract({
53
- address: addresses.airlock,
54
- abi: airlockAbi,
55
- functionName: "getAssetData",
56
- args: [token0]
57
- });
58
- let poolOrHook0;
59
- if (Array.isArray(assetData)) {
60
- poolOrHook0 = assetData[5];
61
- } else if (assetData && typeof assetData === "object") {
62
- poolOrHook0 = assetData.poolOrHook ?? assetData.pool;
63
- }
64
- const isToken0AuctionToken = poolOrHook0 && poolOrHook0 !== zeroAddress;
65
- return {
66
- address: this.poolAddress,
67
- tokenAddress: isToken0AuctionToken ? token0 : token1,
68
- numeraireAddress: isToken0AuctionToken ? token1 : token0,
69
- fee,
70
- liquidity,
71
- sqrtPriceX96: slot0[0]
72
- // First element is sqrtPriceX96
73
- };
74
- }
75
- /**
76
- * Get the token address for this auction
77
- */
78
- async getTokenAddress() {
79
- const poolInfo = await this.getPoolInfo();
80
- return poolInfo.tokenAddress;
81
- }
82
- /**
83
- * Check if the auction has graduated (ready for migration)
84
- */
85
- async hasGraduated() {
86
- const tokenAddress = await this.getTokenAddress();
87
- const chainId = await this.rpc.getChainId();
88
- const addresses = getAddresses(chainId);
89
- const assetData = await this.rpc.readContract({
90
- address: addresses.airlock,
91
- abi: airlockAbi,
92
- functionName: "getAssetData",
93
- args: [tokenAddress]
94
- });
95
- const liquidityMigrator = Array.isArray(assetData) ? assetData[3] : assetData?.liquidityMigrator;
96
- return liquidityMigrator === zeroAddress;
97
- }
98
- /**
99
- * Get the current price in the pool
100
- * Returns the price of token in terms of numeraire (token/numeraire)
101
- */
102
- async getCurrentPrice() {
103
- const poolInfo = await this.getPoolInfo();
104
- const [token0] = await Promise.all([
105
- this.rpc.readContract({
106
- address: this.poolAddress,
107
- abi: uniswapV3PoolAbi,
108
- functionName: "token0"
109
- }),
110
- this.rpc.readContract({
111
- address: this.poolAddress,
112
- abi: uniswapV3PoolAbi,
113
- functionName: "token1"
114
- })
115
- ]);
116
- const sqrtPriceX96 = poolInfo.sqrtPriceX96;
117
- const Q96 = BigInt(2) ** BigInt(96);
118
- const sqrtPriceX96Squared = sqrtPriceX96 * sqrtPriceX96;
119
- const Q96Squared = Q96 * Q96;
120
- const price0 = sqrtPriceX96Squared / Q96Squared;
121
- if (poolInfo.tokenAddress === token0) {
122
- return price0;
123
- } else {
124
- return Q96Squared / price0;
125
- }
126
- }
127
- /**
128
- * Get total liquidity in the pool
129
- */
130
- async getTotalLiquidity() {
131
- return await this.rpc.readContract({
132
- address: this.poolAddress,
133
- abi: uniswapV3PoolAbi,
134
- functionName: "liquidity"
135
- });
136
- }
137
- };
138
-
139
- export { StaticAuction };
140
- //# sourceMappingURL=chunk-CATH4QRQ.mjs.map
141
- //# sourceMappingURL=chunk-CATH4QRQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/entities/auction/StaticAuction.ts"],"names":[],"mappings":"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","file":"chunk-CATH4QRQ.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,26 +0,0 @@
1
- import { encodeAbiParameters, keccak256 } from 'viem';
2
-
3
- // src/utils/poolKey.ts
4
- function computePoolId(poolKey) {
5
- const encoded = encodeAbiParameters(
6
- [
7
- { name: "currency0", type: "address" },
8
- { name: "currency1", type: "address" },
9
- { name: "fee", type: "uint24" },
10
- { name: "tickSpacing", type: "int24" },
11
- { name: "hooks", type: "address" }
12
- ],
13
- [
14
- poolKey.currency0,
15
- poolKey.currency1,
16
- poolKey.fee,
17
- poolKey.tickSpacing,
18
- poolKey.hooks
19
- ]
20
- );
21
- return keccak256(encoded);
22
- }
23
-
24
- export { computePoolId };
25
- //# sourceMappingURL=chunk-CFAAYL5M.mjs.map
26
- //# sourceMappingURL=chunk-CFAAYL5M.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/poolKey.ts"],"names":[],"mappings":";;;AAYO,SAAS,cAAc,OAAA,EAAyB;AAGrD,EAAA,MAAM,OAAA,GAAU,mBAAA;AAAA,IACd;AAAA,MACE,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,SAAA,EAAU;AAAA,MACrC,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,SAAA,EAAU;AAAA,MACrC,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,QAAA,EAAS;AAAA,MAC9B,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAQ;AAAA,MACrC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA;AAAU,KACnC;AAAA,IACA;AAAA,MACE,OAAA,CAAQ,SAAA;AAAA,MACR,OAAA,CAAQ,SAAA;AAAA,MACR,OAAA,CAAQ,GAAA;AAAA,MACR,OAAA,CAAQ,WAAA;AAAA,MACR,OAAA,CAAQ;AAAA;AACV,GACF;AAGA,EAAA,OAAO,UAAU,OAAO,CAAA;AAC1B","file":"chunk-CFAAYL5M.mjs","sourcesContent":["import { encodeAbiParameters, keccak256, type Hex } from 'viem';\nimport type { V4PoolKey } from '../types';\n\n/**\n * Computes the PoolId (bytes32) from a V4 PoolKey\n *\n * In Uniswap V4, a PoolId is computed as keccak256(abi.encode(poolKey))\n * where poolKey contains: currency0, currency1, fee, tickSpacing, hooks\n *\n * @param poolKey - The V4 pool key containing currency0, currency1, fee, tickSpacing, and hooks\n * @returns The computed PoolId as a bytes32 hex string\n */\nexport function computePoolId(poolKey: V4PoolKey): Hex {\n // Encode the poolKey struct following Solidity's abi.encode rules\n // PoolKey struct has 5 fields, each taking 32 bytes (0xa0 = 160 bytes total)\n const encoded = encodeAbiParameters(\n [\n { name: 'currency0', type: 'address' },\n { name: 'currency1', type: 'address' },\n { name: 'fee', type: 'uint24' },\n { name: 'tickSpacing', type: 'int24' },\n { name: 'hooks', type: 'address' },\n ],\n [\n poolKey.currency0,\n poolKey.currency1,\n poolKey.fee,\n poolKey.tickSpacing,\n poolKey.hooks,\n ],\n );\n\n // Return keccak256 hash of the encoded poolKey\n return keccak256(encoded);\n}\n"]}
@@ -1,140 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkTIGHBA37_js = require('./chunk-TIGHBA37.js');
4
- var chunkYFEPTSI2_js = require('./chunk-YFEPTSI2.js');
5
- var chunkRXUJ4DUB_js = require('./chunk-RXUJ4DUB.js');
6
- var chunkH7WPK5CR_js = require('./chunk-H7WPK5CR.js');
7
- var chunkFZ4FIWCR_js = require('./chunk-FZ4FIWCR.js');
8
- var chunkJB5XXPLL_js = require('./chunk-JB5XXPLL.js');
9
- var chunkEH3V2BJF_js = require('./chunk-EH3V2BJF.js');
10
- var chunkFTRCBE3J_js = require('./chunk-FTRCBE3J.js');
11
- var chunk6UHDSD42_js = require('./chunk-6UHDSD42.js');
12
- var chunkXT3BAM4H_js = require('./chunk-XT3BAM4H.js');
13
-
14
- // src/DopplerSDK.ts
15
- var DopplerSDK = class {
16
- constructor(config) {
17
- this.publicClient = config.publicClient;
18
- this.walletClient = config.walletClient;
19
- this.chainId = config.chainId;
20
- }
21
- /**
22
- * Get the factory instance for creating auctions
23
- */
24
- get factory() {
25
- if (!this._factory) {
26
- this._factory = new chunk6UHDSD42_js.DopplerFactory(
27
- this.publicClient,
28
- this.walletClient,
29
- this.chainId
30
- );
31
- }
32
- return this._factory;
33
- }
34
- /**
35
- * Get the quoter instance for price queries
36
- */
37
- get quoter() {
38
- if (!this._quoter) {
39
- this._quoter = new chunkYFEPTSI2_js.Quoter(this.publicClient, this.chainId);
40
- }
41
- return this._quoter;
42
- }
43
- /**
44
- * Get a StaticAuction instance for interacting with a static auction pool
45
- * @param poolAddress The address of the Uniswap V3 pool
46
- */
47
- async getStaticAuction(poolAddress) {
48
- return new chunkTIGHBA37_js.StaticAuction(this.publicClient, poolAddress);
49
- }
50
- /**
51
- * Get a DynamicAuction instance for interacting with a dynamic auction hook
52
- * @param hookAddress The address of the Uniswap V4 hook
53
- */
54
- async getDynamicAuction(hookAddress) {
55
- return new chunkH7WPK5CR_js.DynamicAuction(this.publicClient, hookAddress);
56
- }
57
- /**
58
- * Get a MulticurvePool instance for interacting with a V4 multicurve pool
59
- * @param tokenAddress The address of the token created by the auction (called "asset" in contracts; V4 pools don't have addresses, so the token is used as the lookup key)
60
- */
61
- async getMulticurvePool(tokenAddress) {
62
- return new chunkFZ4FIWCR_js.MulticurvePool(
63
- this.publicClient,
64
- this.walletClient,
65
- tokenAddress
66
- );
67
- }
68
- /**
69
- * Get a DERC20 token instance for interacting with a token
70
- * @param tokenAddress The address of the DERC20 token
71
- */
72
- getDerc20(tokenAddress) {
73
- return new chunkRXUJ4DUB_js.Derc20(this.publicClient, this.walletClient, tokenAddress);
74
- }
75
- /**
76
- * Get information about a static auction pool
77
- * @param poolAddress The address of the pool
78
- */
79
- async getPoolInfo(poolAddress) {
80
- const auction = new chunkTIGHBA37_js.StaticAuction(this.publicClient, poolAddress);
81
- return auction.getPoolInfo();
82
- }
83
- /**
84
- * Get information about a dynamic auction hook
85
- * @param hookAddress The address of the hook
86
- */
87
- async getHookInfo(hookAddress) {
88
- const auction = new chunkH7WPK5CR_js.DynamicAuction(this.publicClient, hookAddress);
89
- return auction.getHookInfo();
90
- }
91
- /**
92
- * Create a new static auction builder
93
- */
94
- buildStaticAuction() {
95
- return new chunkFTRCBE3J_js.StaticAuctionBuilder(this.chainId);
96
- }
97
- /**
98
- * Create a new dynamic auction builder
99
- */
100
- buildDynamicAuction() {
101
- return new chunkJB5XXPLL_js.DynamicAuctionBuilder(this.chainId);
102
- }
103
- /**
104
- * Create a new multicurve (V4 initializer) auction builder
105
- */
106
- buildMulticurveAuction() {
107
- return new chunkEH3V2BJF_js.MulticurveBuilder(this.chainId);
108
- }
109
- /**
110
- * Get the current chain ID
111
- */
112
- getChainId() {
113
- return this.chainId;
114
- }
115
- /**
116
- * Get the underlying clients
117
- */
118
- getClients() {
119
- return {
120
- publicClient: this.publicClient,
121
- walletClient: this.walletClient
122
- };
123
- }
124
- /**
125
- * Get the airlock owner address for the configured chain
126
- */
127
- async getAirlockOwner() {
128
- return chunkXT3BAM4H_js.getAirlockOwner(this.publicClient);
129
- }
130
- /**
131
- * Convenience helper for building the airlock beneficiary entry with the default 5% (0.05e18 WAD shares)
132
- */
133
- async getAirlockBeneficiary(shares = chunkXT3BAM4H_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES) {
134
- return chunkXT3BAM4H_js.getAirlockBeneficiary(this.publicClient, shares);
135
- }
136
- };
137
-
138
- exports.DopplerSDK = DopplerSDK;
139
- //# sourceMappingURL=chunk-CMNJZKTM.js.map
140
- //# sourceMappingURL=chunk-CMNJZKTM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/DopplerSDK.ts"],"names":["DopplerFactory","Quoter","StaticAuction","DynamicAuction","MulticurvePool","Derc20","StaticAuctionBuilder","DynamicAuctionBuilder","MulticurveBuilder","getAirlockOwner","DEFAULT_AIRLOCK_BENEFICIARY_SHARES","getAirlockBeneficiary"],"mappings":";;;;;;;;;;;;;;AA4BO,IAAM,aAAN,MAAgE;AAAA,EAOrE,YAAY,MAAA,EAA0B;AACpC,IAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAC3B,IAAA,IAAA,CAAK,eAAe,MAAA,CAAO,YAAA;AAC3B,IAAA,IAAA,CAAK,UAAU,MAAA,CAAO,OAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAA,GAA6B;AAC/B,IAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,MAAA,IAAA,CAAK,WAAW,IAAIA,+BAAA;AAAA,QAClB,IAAA,CAAK,YAAA;AAAA,QACL,IAAA,CAAK,YAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACP;AAAA,IACF;AACA,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAA,GAAiB;AACnB,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,IAAA,CAAK,UAAU,IAAIC,uBAAA,CAAO,IAAA,CAAK,YAAA,EAAc,KAAK,OAAO,CAAA;AAAA,IAC3D;AACA,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,WAAA,EAA8C;AACnE,IAAA,OAAO,IAAIC,8BAAA,CAAc,IAAA,CAAK,YAAA,EAAc,WAAW,CAAA;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,WAAA,EAA+C;AACrE,IAAA,OAAO,IAAIC,+BAAA,CAAe,IAAA,CAAK,YAAA,EAAc,WAAW,CAAA;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,YAAA,EAAgD;AACtE,IAAA,OAAO,IAAIC,+BAAA;AAAA,MACT,IAAA,CAAK,YAAA;AAAA,MACL,IAAA,CAAK,YAAA;AAAA,MACL;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,YAAA,EAA+B;AACvC,IAAA,OAAO,IAAIC,uBAAA,CAAO,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,cAAc,YAAY,CAAA;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,WAAA,EAAyC;AACzD,IAAA,MAAM,OAAA,GAAU,IAAIH,8BAAA,CAAc,IAAA,CAAK,cAAc,WAAW,CAAA;AAChE,IAAA,OAAO,QAAQ,WAAA,EAAY;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAY,WAAA,EAAyC;AACzD,IAAA,MAAM,OAAA,GAAU,IAAIC,+BAAA,CAAe,IAAA,CAAK,cAAc,WAAW,CAAA;AACjE,IAAA,OAAO,QAAQ,WAAA,EAAY;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAA,GAA8C;AAC5C,IAAA,OAAO,IAAIG,qCAAA,CAAqB,IAAA,CAAK,OAAO,CAAA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAA,GAAgD;AAC9C,IAAA,OAAO,IAAIC,sCAAA,CAAsB,IAAA,CAAK,OAAO,CAAA;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAA,GAA+C;AAC7C,IAAA,OAAO,IAAIC,kCAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAgB;AACd,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAGE;AACA,IAAA,OAAO;AAAA,MACL,cAAc,IAAA,CAAK,YAAA;AAAA,MACnB,cAAc,IAAA,CAAK;AAAA,KACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAoC;AACxC,IAAA,OAAOC,gCAAA,CAAkB,KAAK,YAAY,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAA,CACJ,MAAA,GAAiBC,mDAAA,EACS;AAC1B,IAAA,OAAOC,sCAAA,CAAsB,IAAA,CAAK,YAAA,EAAc,MAAM,CAAA;AAAA,EACxD;AACF","file":"chunk-CMNJZKTM.js","sourcesContent":["import type { Address, WalletClient } from 'viem';\nimport type {\n BeneficiaryData,\n DopplerSDKConfig,\n HookInfo,\n PoolInfo,\n SupportedPublicClient,\n} from './types';\nimport type { SupportedChainId } from './addresses';\nimport { DopplerFactory } from './entities/DopplerFactory';\nimport {\n StaticAuction,\n DynamicAuction,\n MulticurvePool,\n} from './entities/auction';\nimport { Quoter } from './entities/quoter';\nimport { Derc20 } from './entities/token';\nimport {\n StaticAuctionBuilder,\n DynamicAuctionBuilder,\n MulticurveBuilder,\n} from './builders';\nimport {\n DEFAULT_AIRLOCK_BENEFICIARY_SHARES,\n getAirlockBeneficiary,\n getAirlockOwner as fetchAirlockOwner,\n} from './utils/airlock';\n\nexport class DopplerSDK<C extends SupportedChainId = SupportedChainId> {\n private publicClient: SupportedPublicClient;\n private walletClient?: WalletClient;\n public chainId: C;\n private _factory?: DopplerFactory<C>;\n private _quoter?: Quoter;\n\n constructor(config: DopplerSDKConfig) {\n this.publicClient = config.publicClient;\n this.walletClient = config.walletClient;\n this.chainId = config.chainId as unknown as C;\n }\n\n /**\n * Get the factory instance for creating auctions\n */\n get factory(): DopplerFactory<C> {\n if (!this._factory) {\n this._factory = new DopplerFactory(\n this.publicClient,\n this.walletClient,\n this.chainId,\n );\n }\n return this._factory;\n }\n\n /**\n * Get the quoter instance for price queries\n */\n get quoter(): Quoter {\n if (!this._quoter) {\n this._quoter = new Quoter(this.publicClient, this.chainId);\n }\n return this._quoter;\n }\n\n /**\n * Get a StaticAuction instance for interacting with a static auction pool\n * @param poolAddress The address of the Uniswap V3 pool\n */\n async getStaticAuction(poolAddress: Address): Promise<StaticAuction> {\n return new StaticAuction(this.publicClient, poolAddress);\n }\n\n /**\n * Get a DynamicAuction instance for interacting with a dynamic auction hook\n * @param hookAddress The address of the Uniswap V4 hook\n */\n async getDynamicAuction(hookAddress: Address): Promise<DynamicAuction> {\n return new DynamicAuction(this.publicClient, hookAddress);\n }\n\n /**\n * Get a MulticurvePool instance for interacting with a V4 multicurve pool\n * @param tokenAddress The address of the token created by the auction (called \"asset\" in contracts; V4 pools don't have addresses, so the token is used as the lookup key)\n */\n async getMulticurvePool(tokenAddress: Address): Promise<MulticurvePool> {\n return new MulticurvePool(\n this.publicClient,\n this.walletClient,\n tokenAddress,\n );\n }\n\n /**\n * Get a DERC20 token instance for interacting with a token\n * @param tokenAddress The address of the DERC20 token\n */\n getDerc20(tokenAddress: Address): Derc20 {\n return new Derc20(this.publicClient, this.walletClient, tokenAddress);\n }\n\n /**\n * Get information about a static auction pool\n * @param poolAddress The address of the pool\n */\n async getPoolInfo(poolAddress: Address): Promise<PoolInfo> {\n const auction = new StaticAuction(this.publicClient, poolAddress);\n return auction.getPoolInfo();\n }\n\n /**\n * Get information about a dynamic auction hook\n * @param hookAddress The address of the hook\n */\n async getHookInfo(hookAddress: Address): Promise<HookInfo> {\n const auction = new DynamicAuction(this.publicClient, hookAddress);\n return auction.getHookInfo();\n }\n\n /**\n * Create a new static auction builder\n */\n buildStaticAuction(): StaticAuctionBuilder<C> {\n return new StaticAuctionBuilder(this.chainId);\n }\n\n /**\n * Create a new dynamic auction builder\n */\n buildDynamicAuction(): DynamicAuctionBuilder<C> {\n return new DynamicAuctionBuilder(this.chainId);\n }\n\n /**\n * Create a new multicurve (V4 initializer) auction builder\n */\n buildMulticurveAuction(): MulticurveBuilder<C> {\n return new MulticurveBuilder(this.chainId);\n }\n\n /**\n * Get the current chain ID\n */\n getChainId(): C {\n return this.chainId;\n }\n\n /**\n * Get the underlying clients\n */\n getClients(): {\n publicClient: SupportedPublicClient;\n walletClient?: WalletClient;\n } {\n return {\n publicClient: this.publicClient,\n walletClient: this.walletClient,\n };\n }\n\n /**\n * Get the airlock owner address for the configured chain\n */\n async getAirlockOwner(): Promise<Address> {\n return fetchAirlockOwner(this.publicClient);\n }\n\n /**\n * Convenience helper for building the airlock beneficiary entry with the default 5% (0.05e18 WAD shares)\n */\n async getAirlockBeneficiary(\n shares: bigint = DEFAULT_AIRLOCK_BENEFICIARY_SHARES,\n ): Promise<BeneficiaryData> {\n return getAirlockBeneficiary(this.publicClient, shares);\n }\n}\n"]}
@@ -1,72 +0,0 @@
1
- import { getNearestUsableTick, priceToTick, tickToPrice } from './chunk-25GEBO3B.mjs';
2
- import { parseEther, formatEther } from 'viem';
3
-
4
- function calculateTickRange(minPrice, maxPrice, tickSpacing, wethDecimals = 18, tokenDecimals = 18) {
5
- const startTick = getNearestUsableTick(
6
- priceToTick(1 / maxPrice, tokenDecimals, wethDecimals),
7
- tickSpacing
8
- );
9
- const endTick = getNearestUsableTick(
10
- priceToTick(1 / minPrice, tokenDecimals, wethDecimals),
11
- tickSpacing
12
- );
13
- return { startTick, endTick };
14
- }
15
- function calculateTokensToSell(targetRaiseETH, avgPricePerToken) {
16
- const tokensToSell = targetRaiseETH / avgPricePerToken;
17
- return parseEther(tokensToSell.toFixed(18));
18
- }
19
- function calculateGamma(startTick, endTick, duration, epochLength) {
20
- const totalEpochs = duration / epochLength;
21
- const tickRange = Math.abs(endTick - startTick);
22
- return Math.floor(tickRange / totalEpochs);
23
- }
24
- function estimatePriceAtEpoch(startTick, gamma, currentEpoch, tokenDecimals = 18, wethDecimals = 18, isIncreasing = true) {
25
- const direction = isIncreasing ? 1 : -1;
26
- const currentTick = startTick + currentEpoch * gamma * direction;
27
- const wethPerToken = tickToPrice(
28
- currentTick,
29
- tokenDecimals,
30
- wethDecimals,
31
- false
32
- );
33
- return 1 / wethPerToken;
34
- }
35
- function formatTickAsPrice(tick, tokenSymbol, numeraireSymbol, tokenDecimals = 18, numeraireDecimals = 18) {
36
- const price = tickToPrice(tick, tokenDecimals, numeraireDecimals, false);
37
- const ethPerToken = 1 / price;
38
- if (ethPerToken < 1e-4) {
39
- return `${ethPerToken.toExponential(2)} ${numeraireSymbol} per ${tokenSymbol}`;
40
- } else if (ethPerToken < 1) {
41
- return `${ethPerToken.toFixed(6)} ${numeraireSymbol} per ${tokenSymbol}`;
42
- } else {
43
- return `${ethPerToken.toFixed(2)} ${numeraireSymbol} per ${tokenSymbol}`;
44
- }
45
- }
46
- function calculateMarketCap(totalSupply, pricePerToken, ethPrice) {
47
- const totalSupplyNumber = Number(formatEther(totalSupply));
48
- const marketCapETH = totalSupplyNumber * pricePerToken;
49
- const result = {
50
- eth: `${marketCapETH.toFixed(2)} ETH`
51
- };
52
- if (ethPrice) {
53
- const marketCapUSD = marketCapETH * ethPrice;
54
- result.usd = `$${marketCapUSD.toLocaleString("en-US", { maximumFractionDigits: 0 })}`;
55
- }
56
- return result;
57
- }
58
- function calculateFDV(totalSupply, pricePerToken, ethPrice) {
59
- return calculateMarketCap(totalSupply, pricePerToken, ethPrice);
60
- }
61
- function estimateSlippage(amountIn, liquidity, currentTick, fee) {
62
- const feeMultiplier = 1 - fee / 1e6;
63
- const liquidityNumber = Number(liquidity) / 1e18;
64
- const amountNumber = Number(amountIn) / 1e18;
65
- const impactRatio = amountNumber / liquidityNumber;
66
- const slippage = impactRatio * 100 * feeMultiplier;
67
- return Math.min(slippage, 100);
68
- }
69
-
70
- export { calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, estimatePriceAtEpoch, estimateSlippage, formatTickAsPrice };
71
- //# sourceMappingURL=chunk-CWTGQAOG.mjs.map
72
- //# sourceMappingURL=chunk-CWTGQAOG.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/priceHelpers.ts"],"names":[],"mappings":"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","file":"chunk-CWTGQAOG.mjs","sourcesContent":["/**\n * Price helper utilities for common token launch scenarios\n */\n\nimport { parseEther, formatEther } from 'viem';\nimport { priceToTick, tickToPrice, getNearestUsableTick } from './tickMath';\n\n/**\n * Calculate the tick range for a desired price range\n * @param minPrice Minimum price (ETH per token)\n * @param maxPrice Maximum price (ETH per token)\n * @param tickSpacing The tick spacing of the pool\n * @param wethDecimals Decimals of WETH (usually 18)\n * @param tokenDecimals Decimals of the token (usually 18)\n * @returns Object with startTick and endTick\n */\nexport function calculateTickRange(\n minPrice: number,\n maxPrice: number,\n tickSpacing: number,\n wethDecimals = 18,\n tokenDecimals = 18,\n): { startTick: number; endTick: number } {\n // For token/WETH pools, we need to invert the price\n // because Uniswap orders tokens by address\n const startTick = getNearestUsableTick(\n priceToTick(1 / maxPrice, tokenDecimals, wethDecimals),\n tickSpacing,\n );\n\n const endTick = getNearestUsableTick(\n priceToTick(1 / minPrice, tokenDecimals, wethDecimals),\n tickSpacing,\n );\n\n return { startTick, endTick };\n}\n\n/**\n * Calculate the number of tokens to sell based on desired raise\n * @param targetRaiseETH Target amount to raise in ETH\n * @param avgPricePerToken Average expected price per token in ETH\n * @returns Number of tokens to sell (as bigint)\n */\nexport function calculateTokensToSell(\n targetRaiseETH: number,\n avgPricePerToken: number,\n): bigint {\n const tokensToSell = targetRaiseETH / avgPricePerToken;\n return parseEther(tokensToSell.toFixed(18));\n}\n\n/**\n * Calculate gamma for dynamic auctions\n * @param startTick Starting tick\n * @param endTick Ending tick\n * @param duration Duration in seconds\n * @param epochLength Epoch length in seconds\n * @returns Gamma value\n */\nexport function calculateGamma(\n startTick: number,\n endTick: number,\n duration: number,\n epochLength: number,\n): number {\n const totalEpochs = duration / epochLength;\n const tickRange = Math.abs(endTick - startTick);\n return Math.floor(tickRange / totalEpochs);\n}\n\n/**\n * Estimate the price at a specific epoch in a dynamic auction\n * @param startTick Starting tick\n * @param gamma Tick movement per epoch\n * @param currentEpoch Current epoch number\n * @param tokenDecimals Token decimals\n * @param wethDecimals WETH decimals\n * @param isIncreasing Whether price increases (true) or decreases (false) over time\n * @returns Estimated price in ETH per token\n */\nexport function estimatePriceAtEpoch(\n startTick: number,\n gamma: number,\n currentEpoch: number,\n tokenDecimals = 18,\n wethDecimals = 18,\n isIncreasing = true,\n): number {\n const direction = isIncreasing ? 1 : -1;\n const currentTick = startTick + currentEpoch * gamma * direction;\n\n // Get price from tick (returns WETH/token)\n const wethPerToken = tickToPrice(\n currentTick,\n tokenDecimals,\n wethDecimals,\n false,\n );\n\n // Invert to get ETH per token\n return 1 / wethPerToken;\n}\n\n/**\n * Format a tick value to a human-readable price string\n * @param tick The tick value\n * @param tokenSymbol Symbol of the token\n * @param numeraireSymbol Symbol of the numeraire (e.g., \"ETH\")\n * @param tokenDecimals Token decimals\n * @param numeraireDecimals Numeraire decimals\n * @returns Formatted price string\n */\nexport function formatTickAsPrice(\n tick: number,\n tokenSymbol: string,\n numeraireSymbol: string,\n tokenDecimals = 18,\n numeraireDecimals = 18,\n): string {\n const price = tickToPrice(tick, tokenDecimals, numeraireDecimals, false);\n const ethPerToken = 1 / price;\n\n if (ethPerToken < 0.0001) {\n return `${ethPerToken.toExponential(2)} ${numeraireSymbol} per ${tokenSymbol}`;\n } else if (ethPerToken < 1) {\n return `${ethPerToken.toFixed(6)} ${numeraireSymbol} per ${tokenSymbol}`;\n } else {\n return `${ethPerToken.toFixed(2)} ${numeraireSymbol} per ${tokenSymbol}`;\n }\n}\n\n/**\n * Calculate the market cap at a given price\n * @param totalSupply Total token supply (as bigint)\n * @param pricePerToken Price per token in ETH\n * @param ethPrice Current ETH price in USD (optional)\n * @returns Market cap object with ETH and USD values\n */\nexport function calculateMarketCap(\n totalSupply: bigint,\n pricePerToken: number,\n ethPrice?: number,\n): { eth: string; usd?: string } {\n const totalSupplyNumber = Number(formatEther(totalSupply));\n const marketCapETH = totalSupplyNumber * pricePerToken;\n\n const result: { eth: string; usd?: string } = {\n eth: `${marketCapETH.toFixed(2)} ETH`,\n };\n\n if (ethPrice) {\n const marketCapUSD = marketCapETH * ethPrice;\n result.usd = `$${marketCapUSD.toLocaleString('en-US', { maximumFractionDigits: 0 })}`;\n }\n\n return result;\n}\n\n/**\n * Calculate fully diluted valuation (FDV)\n * @param totalSupply Total token supply including vested tokens (as bigint)\n * @param pricePerToken Price per token in ETH\n * @param ethPrice Current ETH price in USD (optional)\n * @returns FDV object with ETH and USD values\n */\nexport function calculateFDV(\n totalSupply: bigint,\n pricePerToken: number,\n ethPrice?: number,\n): { eth: string; usd?: string } {\n // FDV is the same calculation as market cap but includes all tokens\n return calculateMarketCap(totalSupply, pricePerToken, ethPrice);\n}\n\n/**\n * Estimate slippage for a trade in a concentrated liquidity pool\n * @param amountIn Amount to trade\n * @param liquidity Current liquidity\n * @param currentTick Current tick\n * @param fee Pool fee (e.g., 3000 for 0.3%)\n * @returns Estimated slippage percentage\n */\nexport function estimateSlippage(\n amountIn: bigint,\n liquidity: bigint,\n currentTick: number,\n fee: number,\n): number {\n // Simplified slippage estimation\n // In practice, you'd need to simulate the swap through tick ranges\n const feeMultiplier = 1 - fee / 1000000;\n const liquidityNumber = Number(liquidity) / 1e18;\n const amountNumber = Number(amountIn) / 1e18;\n\n // Basic approximation: slippage increases with trade size relative to liquidity\n const impactRatio = amountNumber / liquidityNumber;\n const slippage = impactRatio * 100 * feeMultiplier;\n\n return Math.min(slippage, 100); // Cap at 100%\n}\n"]}