@whetstone-research/doppler-sdk 0.0.1-alpha.8 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +726 -25
  3. package/dist/DopplerSDK.d.mts +45 -7
  4. package/dist/DopplerSDK.d.ts +45 -7
  5. package/dist/DopplerSDK.js +35 -12
  6. package/dist/DopplerSDK.mjs +34 -11
  7. package/dist/abis/bytecodes.d.mts +3 -2
  8. package/dist/abis/bytecodes.d.ts +3 -2
  9. package/dist/abis/bytecodes.js +9 -6
  10. package/dist/abis/bytecodes.mjs +1 -2
  11. package/dist/abis/index.d.mts +1507 -129
  12. package/dist/abis/index.d.ts +1507 -129
  13. package/dist/abis/index.js +43 -20
  14. package/dist/abis/index.mjs +2 -3
  15. package/dist/addresses.d.mts +16 -3
  16. package/dist/addresses.d.ts +16 -3
  17. package/dist/addresses.js +13 -5
  18. package/dist/addresses.mjs +2 -2
  19. package/dist/builders/DynamicAuctionBuilder.d.mts +119 -0
  20. package/dist/builders/DynamicAuctionBuilder.d.ts +119 -0
  21. package/dist/builders/DynamicAuctionBuilder.js +29 -0
  22. package/dist/builders/DynamicAuctionBuilder.js.map +1 -0
  23. package/dist/builders/DynamicAuctionBuilder.mjs +20 -0
  24. package/dist/builders/DynamicAuctionBuilder.mjs.map +1 -0
  25. package/dist/builders/MulticurveBuilder.d.mts +132 -0
  26. package/dist/builders/MulticurveBuilder.d.ts +132 -0
  27. package/dist/builders/MulticurveBuilder.js +29 -0
  28. package/dist/builders/MulticurveBuilder.js.map +1 -0
  29. package/dist/builders/MulticurveBuilder.mjs +20 -0
  30. package/dist/builders/MulticurveBuilder.mjs.map +1 -0
  31. package/dist/builders/StaticAuctionBuilder.d.mts +124 -0
  32. package/dist/builders/StaticAuctionBuilder.d.ts +124 -0
  33. package/dist/builders/StaticAuctionBuilder.js +29 -0
  34. package/dist/builders/StaticAuctionBuilder.js.map +1 -0
  35. package/dist/builders/StaticAuctionBuilder.mjs +20 -0
  36. package/dist/builders/StaticAuctionBuilder.mjs.map +1 -0
  37. package/dist/builders/index.d.mts +8 -0
  38. package/dist/builders/index.d.ts +8 -0
  39. package/dist/builders/index.js +56 -0
  40. package/dist/builders/index.js.map +1 -0
  41. package/dist/builders/index.mjs +23 -0
  42. package/dist/builders/index.mjs.map +1 -0
  43. package/dist/builders/shared.d.mts +116 -0
  44. package/dist/builders/shared.d.ts +116 -0
  45. package/dist/builders/shared.js +39 -0
  46. package/dist/builders/shared.js.map +1 -0
  47. package/dist/builders/shared.mjs +18 -0
  48. package/dist/builders/shared.mjs.map +1 -0
  49. package/dist/builders.d.mts +8 -131
  50. package/dist/builders.d.ts +8 -131
  51. package/dist/builders.js +44 -5
  52. package/dist/builders.mjs +22 -3
  53. package/dist/chunk-3PNCB4W5.js +4 -0
  54. package/dist/{chunk-KRN3ROUE.js.map → chunk-3PNCB4W5.js.map} +1 -1
  55. package/dist/chunk-3RK7LRAA.js +282 -0
  56. package/dist/chunk-3RK7LRAA.js.map +1 -0
  57. package/dist/chunk-4HM3ERBU.js +13 -0
  58. package/dist/chunk-4HM3ERBU.js.map +1 -0
  59. package/dist/{chunk-7W72MFJO.mjs → chunk-4TROGENW.mjs} +5 -4
  60. package/dist/chunk-4TROGENW.mjs.map +1 -0
  61. package/dist/chunk-5TL5V6UX.mjs +3 -0
  62. package/dist/{chunk-AZLFJNTG.mjs.map → chunk-5TL5V6UX.mjs.map} +1 -1
  63. package/dist/chunk-64AWG57M.mjs +192 -0
  64. package/dist/chunk-64AWG57M.mjs.map +1 -0
  65. package/dist/chunk-6KWCHTK3.js +166 -0
  66. package/dist/chunk-6KWCHTK3.js.map +1 -0
  67. package/dist/chunk-6OOWOPCX.js +1708 -0
  68. package/dist/chunk-6OOWOPCX.js.map +1 -0
  69. package/dist/chunk-7BBRPWQJ.js +257 -0
  70. package/dist/chunk-7BBRPWQJ.js.map +1 -0
  71. package/dist/{chunk-FVTIDXYK.mjs → chunk-AKSEBAR7.mjs} +29 -19
  72. package/dist/chunk-AKSEBAR7.mjs.map +1 -0
  73. package/dist/chunk-AS64GWBX.js +204 -0
  74. package/dist/chunk-AS64GWBX.js.map +1 -0
  75. package/dist/chunk-AULFBXM5.mjs +331 -0
  76. package/dist/chunk-AULFBXM5.mjs.map +1 -0
  77. package/dist/chunk-AW3WR2D3.mjs +238 -0
  78. package/dist/chunk-AW3WR2D3.mjs.map +1 -0
  79. package/dist/chunk-BIQQ53O2.js +45 -0
  80. package/dist/chunk-BIQQ53O2.js.map +1 -0
  81. package/dist/chunk-C6MPV3CY.js +260 -0
  82. package/dist/chunk-C6MPV3CY.js.map +1 -0
  83. package/dist/{chunk-AYPP5JEQ.mjs → chunk-CLEQO6GU.mjs} +5 -5
  84. package/dist/chunk-CLEQO6GU.mjs.map +1 -0
  85. package/dist/chunk-CVHPLURA.js +147 -0
  86. package/dist/chunk-CVHPLURA.js.map +1 -0
  87. package/dist/chunk-D2RBCFNW.mjs +130 -0
  88. package/dist/chunk-D2RBCFNW.mjs.map +1 -0
  89. package/dist/chunk-ECD4FV3A.mjs +11 -0
  90. package/dist/chunk-ECD4FV3A.mjs.map +1 -0
  91. package/dist/chunk-EDJBZPMW.mjs +255 -0
  92. package/dist/chunk-EDJBZPMW.mjs.map +1 -0
  93. package/dist/chunk-FPAI4QYW.mjs +145 -0
  94. package/dist/chunk-FPAI4QYW.mjs.map +1 -0
  95. package/dist/chunk-HM25ZMO3.js +18 -0
  96. package/dist/chunk-HM25ZMO3.js.map +1 -0
  97. package/dist/chunk-IHC6UYKK.js +4 -0
  98. package/dist/{chunk-DRBRT57F.js.map → chunk-IHC6UYKK.js.map} +1 -1
  99. package/dist/{chunk-DMAHXBA5.mjs → chunk-J5BFFL3X.mjs} +87 -47
  100. package/dist/chunk-J5BFFL3X.mjs.map +1 -0
  101. package/dist/chunk-JIKAD4YL.js +4 -0
  102. package/dist/{chunk-KEXKKQVW.js.map → chunk-JIKAD4YL.js.map} +1 -1
  103. package/dist/{chunk-EFAPDN4J.js → chunk-JWEXGALU.js} +730 -33
  104. package/dist/chunk-JWEXGALU.js.map +1 -0
  105. package/dist/{chunk-4K5GBNQV.mjs → chunk-KDT76YQE.mjs} +52 -13
  106. package/dist/chunk-KDT76YQE.mjs.map +1 -0
  107. package/dist/chunk-LMQLMMEX.js +317 -0
  108. package/dist/chunk-LMQLMMEX.js.map +1 -0
  109. package/dist/{chunk-TOMVBPNZ.js → chunk-LS4TK6SX.js} +9 -4
  110. package/dist/chunk-LS4TK6SX.js.map +1 -0
  111. package/dist/chunk-M4WMHD3X.mjs +40 -0
  112. package/dist/chunk-M4WMHD3X.mjs.map +1 -0
  113. package/dist/chunk-MCOK3UFR.mjs +280 -0
  114. package/dist/chunk-MCOK3UFR.mjs.map +1 -0
  115. package/dist/chunk-MGQSQCFG.js +176 -0
  116. package/dist/chunk-MGQSQCFG.js.map +1 -0
  117. package/dist/chunk-MKE3BUL3.mjs +3 -0
  118. package/dist/{chunk-CYDWEPFL.mjs.map → chunk-MKE3BUL3.mjs.map} +1 -1
  119. package/dist/chunk-MNJ5OYPE.mjs +17 -0
  120. package/dist/chunk-MNJ5OYPE.mjs.map +1 -0
  121. package/dist/chunk-MNXD45J7.mjs +164 -0
  122. package/dist/chunk-MNXD45J7.mjs.map +1 -0
  123. package/dist/chunk-NGDPQC5E.js +333 -0
  124. package/dist/chunk-NGDPQC5E.js.map +1 -0
  125. package/dist/chunk-NNNCVFOH.mjs +16 -0
  126. package/dist/chunk-NNNCVFOH.mjs.map +1 -0
  127. package/dist/chunk-NZ4BJ2IC.mjs +315 -0
  128. package/dist/chunk-NZ4BJ2IC.mjs.map +1 -0
  129. package/dist/chunk-OKNM7ODQ.js +29 -0
  130. package/dist/chunk-OKNM7ODQ.js.map +1 -0
  131. package/dist/{chunk-DCFHANLR.mjs → chunk-OTG75GVH.mjs} +725 -34
  132. package/dist/chunk-OTG75GVH.mjs.map +1 -0
  133. package/dist/chunk-OZ6DGBRL.mjs +25 -0
  134. package/dist/chunk-OZ6DGBRL.mjs.map +1 -0
  135. package/dist/chunk-P25HBGP5.mjs +3 -0
  136. package/dist/chunk-P25HBGP5.mjs.map +1 -0
  137. package/dist/{chunk-XG7K4R56.js → chunk-P7KLEPVI.js} +52 -12
  138. package/dist/chunk-P7KLEPVI.js.map +1 -0
  139. package/dist/{chunk-OPKQMN46.mjs → chunk-PAPXGPJB.mjs} +9 -4
  140. package/dist/chunk-PAPXGPJB.mjs.map +1 -0
  141. package/dist/chunk-PCNXJAU5.js +19 -0
  142. package/dist/chunk-PCNXJAU5.js.map +1 -0
  143. package/dist/{chunk-5IT5OXQ5.js → chunk-PD6HWEMG.js} +40 -30
  144. package/dist/chunk-PD6HWEMG.js.map +1 -0
  145. package/dist/{chunk-ER42VG7H.js → chunk-PH2KXREH.js} +20 -3
  146. package/dist/chunk-PH2KXREH.js.map +1 -0
  147. package/dist/chunk-Q5ERW5ZW.mjs +107 -0
  148. package/dist/chunk-Q5ERW5ZW.mjs.map +1 -0
  149. package/dist/chunk-Q7YNBSVH.js +28 -0
  150. package/dist/chunk-Q7YNBSVH.js.map +1 -0
  151. package/dist/{chunk-T644D54P.mjs → chunk-QKO2FZGN.mjs} +16 -4
  152. package/dist/chunk-QKO2FZGN.mjs.map +1 -0
  153. package/dist/{chunk-CIRZKWLL.js → chunk-RVFSRYI5.js} +5 -3
  154. package/dist/chunk-RVFSRYI5.js.map +1 -0
  155. package/dist/{chunk-KPBCG4X2.js → chunk-RW37KJ77.js} +11 -11
  156. package/dist/chunk-RW37KJ77.js.map +1 -0
  157. package/dist/chunk-SD7BHT2F.mjs +3 -0
  158. package/dist/chunk-SD7BHT2F.mjs.map +1 -0
  159. package/dist/chunk-SP5M57BG.mjs +258 -0
  160. package/dist/chunk-SP5M57BG.mjs.map +1 -0
  161. package/dist/chunk-TKSHYEYA.mjs +1706 -0
  162. package/dist/chunk-TKSHYEYA.mjs.map +1 -0
  163. package/dist/chunk-WTS75RUC.js +4 -0
  164. package/dist/chunk-WTS75RUC.js.map +1 -0
  165. package/dist/{chunk-ZRDU6CIB.js → chunk-XRPIGMA2.js} +108 -68
  166. package/dist/chunk-XRPIGMA2.js.map +1 -0
  167. package/dist/chunk-XTKSM4QE.js +132 -0
  168. package/dist/chunk-XTKSM4QE.js.map +1 -0
  169. package/dist/chunk-XUE3CIJ5.mjs +174 -0
  170. package/dist/chunk-XUE3CIJ5.mjs.map +1 -0
  171. package/dist/chunk-YYUOLM6U.js +244 -0
  172. package/dist/chunk-YYUOLM6U.js.map +1 -0
  173. package/dist/chunk-ZH44DHVR.mjs +26 -0
  174. package/dist/chunk-ZH44DHVR.mjs.map +1 -0
  175. package/dist/chunk-ZPHOOG72.js +112 -0
  176. package/dist/chunk-ZPHOOG72.js.map +1 -0
  177. package/dist/constants.d.mts +7 -2
  178. package/dist/constants.d.ts +7 -2
  179. package/dist/constants.js +57 -38
  180. package/dist/constants.mjs +1 -2
  181. package/dist/deployments.generated.d.mts +2 -0
  182. package/dist/deployments.generated.d.ts +2 -0
  183. package/dist/deployments.generated.js +12 -0
  184. package/dist/deployments.generated.js.map +1 -0
  185. package/dist/deployments.generated.mjs +3 -0
  186. package/dist/deployments.generated.mjs.map +1 -0
  187. package/dist/entities/DopplerFactory.d.mts +139 -11
  188. package/dist/entities/DopplerFactory.d.ts +139 -11
  189. package/dist/entities/DopplerFactory.js +17 -7
  190. package/dist/entities/DopplerFactory.mjs +16 -6
  191. package/dist/entities/auction/DynamicAuction.d.mts +19 -4
  192. package/dist/entities/auction/DynamicAuction.d.ts +19 -4
  193. package/dist/entities/auction/DynamicAuction.js +6 -6
  194. package/dist/entities/auction/DynamicAuction.mjs +5 -5
  195. package/dist/entities/auction/MulticurvePool.d.mts +55 -0
  196. package/dist/entities/auction/MulticurvePool.d.ts +55 -0
  197. package/dist/entities/auction/MulticurvePool.js +18 -0
  198. package/dist/entities/auction/MulticurvePool.js.map +1 -0
  199. package/dist/entities/auction/MulticurvePool.mjs +9 -0
  200. package/dist/entities/auction/MulticurvePool.mjs.map +1 -0
  201. package/dist/entities/auction/StaticAuction.d.mts +6 -3
  202. package/dist/entities/auction/StaticAuction.d.ts +6 -3
  203. package/dist/entities/auction/StaticAuction.js +6 -6
  204. package/dist/entities/auction/StaticAuction.mjs +5 -5
  205. package/dist/entities/auction/index.d.mts +3 -0
  206. package/dist/entities/auction/index.d.ts +3 -0
  207. package/dist/entities/auction/index.js +16 -9
  208. package/dist/entities/auction/index.mjs +10 -7
  209. package/dist/entities/quoter/Quoter.d.mts +44 -2
  210. package/dist/entities/quoter/Quoter.d.ts +44 -2
  211. package/dist/entities/quoter/Quoter.js +6 -6
  212. package/dist/entities/quoter/Quoter.mjs +5 -5
  213. package/dist/entities/quoter/index.d.mts +3 -0
  214. package/dist/entities/quoter/index.d.ts +3 -0
  215. package/dist/entities/quoter/index.js +6 -6
  216. package/dist/entities/quoter/index.mjs +5 -5
  217. package/dist/entities/token/derc20/Derc20.d.mts +33 -7
  218. package/dist/entities/token/derc20/Derc20.d.ts +33 -7
  219. package/dist/entities/token/derc20/Derc20.js +4 -5
  220. package/dist/entities/token/derc20/Derc20.mjs +3 -4
  221. package/dist/entities/token/derc20/index.d.mts +3 -0
  222. package/dist/entities/token/derc20/index.d.ts +3 -0
  223. package/dist/entities/token/derc20/index.js +4 -5
  224. package/dist/entities/token/derc20/index.mjs +3 -4
  225. package/dist/entities/token/eth/Eth.d.mts +7 -3
  226. package/dist/entities/token/eth/Eth.d.ts +7 -3
  227. package/dist/entities/token/eth/Eth.js +2 -3
  228. package/dist/entities/token/eth/Eth.mjs +1 -2
  229. package/dist/entities/token/eth/index.d.mts +3 -0
  230. package/dist/entities/token/eth/index.d.ts +3 -0
  231. package/dist/entities/token/eth/index.js +2 -3
  232. package/dist/entities/token/eth/index.mjs +1 -2
  233. package/dist/entities/token/index.d.mts +3 -0
  234. package/dist/entities/token/index.d.ts +3 -0
  235. package/dist/entities/token/index.js +6 -7
  236. package/dist/entities/token/index.mjs +4 -5
  237. package/dist/index.d.mts +18 -6
  238. package/dist/index.d.ts +18 -6
  239. package/dist/index.js +305 -140
  240. package/dist/index.js.map +1 -1
  241. package/dist/index.mjs +32 -19
  242. package/dist/index.mjs.map +1 -1
  243. package/dist/types.d.mts +260 -22
  244. package/dist/types.d.ts +260 -22
  245. package/dist/types.js +12 -3
  246. package/dist/types.mjs +3 -2
  247. package/dist/utils/airlock.d.mts +11 -0
  248. package/dist/utils/airlock.d.ts +11 -0
  249. package/dist/utils/airlock.js +26 -0
  250. package/dist/utils/airlock.js.map +1 -0
  251. package/dist/utils/airlock.mjs +5 -0
  252. package/dist/utils/airlock.mjs.map +1 -0
  253. package/dist/utils/balanceDelta.d.mts +10 -0
  254. package/dist/utils/balanceDelta.d.ts +10 -0
  255. package/dist/utils/balanceDelta.js +12 -0
  256. package/dist/utils/balanceDelta.js.map +1 -0
  257. package/dist/utils/balanceDelta.mjs +3 -0
  258. package/dist/utils/balanceDelta.mjs.map +1 -0
  259. package/dist/utils/computeOptimalGamma.d.mts +7 -0
  260. package/dist/utils/computeOptimalGamma.d.ts +7 -0
  261. package/dist/utils/computeOptimalGamma.js +12 -0
  262. package/dist/utils/computeOptimalGamma.js.map +1 -0
  263. package/dist/utils/computeOptimalGamma.mjs +3 -0
  264. package/dist/utils/computeOptimalGamma.mjs.map +1 -0
  265. package/dist/utils/index.d.mts +11 -0
  266. package/dist/utils/index.d.ts +11 -0
  267. package/dist/utils/index.js +114 -24
  268. package/dist/utils/index.mjs +14 -4
  269. package/dist/utils/isToken0Expected.d.mts +13 -0
  270. package/dist/utils/isToken0Expected.d.ts +13 -0
  271. package/dist/utils/isToken0Expected.js +12 -0
  272. package/dist/utils/isToken0Expected.js.map +1 -0
  273. package/dist/utils/isToken0Expected.mjs +3 -0
  274. package/dist/utils/isToken0Expected.mjs.map +1 -0
  275. package/dist/utils/marketCapHelpers.d.mts +309 -0
  276. package/dist/utils/marketCapHelpers.d.ts +309 -0
  277. package/dist/utils/marketCapHelpers.js +54 -0
  278. package/dist/utils/marketCapHelpers.js.map +1 -0
  279. package/dist/utils/marketCapHelpers.mjs +5 -0
  280. package/dist/utils/marketCapHelpers.mjs.map +1 -0
  281. package/dist/utils/poolKey.d.mts +17 -0
  282. package/dist/utils/poolKey.d.ts +17 -0
  283. package/dist/utils/poolKey.js +12 -0
  284. package/dist/utils/poolKey.js.map +1 -0
  285. package/dist/utils/poolKey.mjs +3 -0
  286. package/dist/utils/poolKey.mjs.map +1 -0
  287. package/dist/utils/priceHelpers.d.mts +3 -3
  288. package/dist/utils/priceHelpers.d.ts +3 -3
  289. package/dist/utils/priceHelpers.js +10 -11
  290. package/dist/utils/priceHelpers.mjs +2 -3
  291. package/dist/utils/tickMath.d.mts +8 -1
  292. package/dist/utils/tickMath.d.ts +8 -1
  293. package/dist/utils/tickMath.js +17 -14
  294. package/dist/utils/tickMath.mjs +1 -2
  295. package/dist/utils/tokenAddressMiner.d.mts +30 -0
  296. package/dist/utils/tokenAddressMiner.d.ts +30 -0
  297. package/dist/utils/tokenAddressMiner.js +14 -0
  298. package/dist/utils/tokenAddressMiner.js.map +1 -0
  299. package/dist/utils/tokenAddressMiner.mjs +5 -0
  300. package/dist/utils/tokenAddressMiner.mjs.map +1 -0
  301. package/package.json +14 -11
  302. package/dist/__tests__/mocks/addresses.d.mts +0 -46
  303. package/dist/__tests__/mocks/addresses.d.ts +0 -46
  304. package/dist/__tests__/mocks/addresses.js +0 -53
  305. package/dist/__tests__/mocks/addresses.js.map +0 -1
  306. package/dist/__tests__/mocks/addresses.mjs +0 -44
  307. package/dist/__tests__/mocks/addresses.mjs.map +0 -1
  308. package/dist/__tests__/mocks/clients.d.mts +0 -22
  309. package/dist/__tests__/mocks/clients.d.ts +0 -22
  310. package/dist/__tests__/mocks/clients.js +0 -17036
  311. package/dist/__tests__/mocks/clients.js.map +0 -1
  312. package/dist/__tests__/mocks/clients.mjs +0 -17032
  313. package/dist/__tests__/mocks/clients.mjs.map +0 -1
  314. package/dist/chunk-2N5JZSZ4.js +0 -14
  315. package/dist/chunk-2N5JZSZ4.js.map +0 -1
  316. package/dist/chunk-3OZRDL3O.js +0 -162
  317. package/dist/chunk-3OZRDL3O.js.map +0 -1
  318. package/dist/chunk-4K5GBNQV.mjs.map +0 -1
  319. package/dist/chunk-5IT5OXQ5.js.map +0 -1
  320. package/dist/chunk-7F5IXZLH.js +0 -308
  321. package/dist/chunk-7F5IXZLH.js.map +0 -1
  322. package/dist/chunk-7VP5VR7J.js +0 -82
  323. package/dist/chunk-7VP5VR7J.js.map +0 -1
  324. package/dist/chunk-7W72MFJO.mjs.map +0 -1
  325. package/dist/chunk-AYPP5JEQ.mjs.map +0 -1
  326. package/dist/chunk-AZLFJNTG.mjs +0 -3
  327. package/dist/chunk-CIRZKWLL.js.map +0 -1
  328. package/dist/chunk-CYDWEPFL.mjs +0 -3
  329. package/dist/chunk-DCFHANLR.mjs.map +0 -1
  330. package/dist/chunk-DMAHXBA5.mjs.map +0 -1
  331. package/dist/chunk-DRBRT57F.js +0 -4
  332. package/dist/chunk-EFAPDN4J.js.map +0 -1
  333. package/dist/chunk-ER42VG7H.js.map +0 -1
  334. package/dist/chunk-FVTIDXYK.mjs.map +0 -1
  335. package/dist/chunk-IHBIBFZK.mjs +0 -12
  336. package/dist/chunk-IHBIBFZK.mjs.map +0 -1
  337. package/dist/chunk-IXSKPEHB.mjs +0 -160
  338. package/dist/chunk-IXSKPEHB.mjs.map +0 -1
  339. package/dist/chunk-KEXKKQVW.js +0 -42
  340. package/dist/chunk-KFD6U3LQ.mjs +0 -305
  341. package/dist/chunk-KFD6U3LQ.mjs.map +0 -1
  342. package/dist/chunk-KPBCG4X2.js.map +0 -1
  343. package/dist/chunk-KRN3ROUE.js +0 -4
  344. package/dist/chunk-KT7U37XS.mjs +0 -207
  345. package/dist/chunk-KT7U37XS.mjs.map +0 -1
  346. package/dist/chunk-LOROXNH3.mjs +0 -37
  347. package/dist/chunk-LOROXNH3.mjs.map +0 -1
  348. package/dist/chunk-O6GYIJ6X.mjs +0 -80
  349. package/dist/chunk-O6GYIJ6X.mjs.map +0 -1
  350. package/dist/chunk-OPKQMN46.mjs.map +0 -1
  351. package/dist/chunk-RIMM47JL.mjs +0 -176
  352. package/dist/chunk-RIMM47JL.mjs.map +0 -1
  353. package/dist/chunk-SUOMK3CU.js +0 -872
  354. package/dist/chunk-SUOMK3CU.js.map +0 -1
  355. package/dist/chunk-T644D54P.mjs.map +0 -1
  356. package/dist/chunk-TOMVBPNZ.js.map +0 -1
  357. package/dist/chunk-XEMZQHTX.mjs +0 -870
  358. package/dist/chunk-XEMZQHTX.mjs.map +0 -1
  359. package/dist/chunk-XG7K4R56.js.map +0 -1
  360. package/dist/chunk-XQ2VMR26.js +0 -180
  361. package/dist/chunk-XQ2VMR26.js.map +0 -1
  362. package/dist/chunk-ZAIP54LX.js +0 -209
  363. package/dist/chunk-ZAIP54LX.js.map +0 -1
  364. package/dist/chunk-ZRDU6CIB.js.map +0 -1
  365. package/dist/magic-string.es-CBLXTCZP.js +0 -1304
  366. package/dist/magic-string.es-CBLXTCZP.js.map +0 -1
  367. package/dist/magic-string.es-QHA47FSB.mjs +0 -1298
  368. package/dist/magic-string.es-QHA47FSB.mjs.map +0 -1
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- // src/types.ts
4
- var LockablePoolStatus = /* @__PURE__ */ ((LockablePoolStatus2) => {
5
- LockablePoolStatus2[LockablePoolStatus2["Uninitialized"] = 0] = "Uninitialized";
6
- LockablePoolStatus2[LockablePoolStatus2["Initialized"] = 1] = "Initialized";
7
- LockablePoolStatus2[LockablePoolStatus2["Locked"] = 2] = "Locked";
8
- LockablePoolStatus2[LockablePoolStatus2["Exited"] = 3] = "Exited";
9
- return LockablePoolStatus2;
10
- })(LockablePoolStatus || {});
11
-
12
- exports.LockablePoolStatus = LockablePoolStatus;
13
- //# sourceMappingURL=chunk-2N5JZSZ4.js.map
14
- //# sourceMappingURL=chunk-2N5JZSZ4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":["LockablePoolStatus"],"mappings":";;;AAqFY,IAAA,kBAAA,qBAAAA,mBAAL,KAAA;AACL,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAgB,CAAhB,CAAA,GAAA,eAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAc,CAAd,CAAA,GAAA,aAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAS,CAAT,CAAA,GAAA,QAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAS,CAAT,CAAA,GAAA,QAAA;AAJU,EAAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA","file":"chunk-2N5JZSZ4.js","sourcesContent":["import type { Address, PublicClient, WalletClient } from 'viem'\n\n// Core configuration types\n// Token configuration (discriminated union)\nexport interface StandardTokenConfig {\n type?: 'standard' // default behavior (backwards compatible)\n name: string\n symbol: string\n tokenURI: string\n yearlyMintRate?: bigint // Optional yearly mint rate (in WAD, default: 2% = 0.02e18)\n}\n\nexport interface Doppler404TokenConfig {\n type: 'doppler404'\n name: string\n symbol: string\n baseURI: string\n // Optional unit for DN404 factory (uint256). Defaults to 1000 when omitted.\n unit?: bigint\n}\n\nexport type TokenConfig = StandardTokenConfig | Doppler404TokenConfig\n\nexport interface SaleConfig {\n initialSupply: bigint\n numTokensToSell: bigint\n numeraire: Address // e.g., WETH address\n}\n\n// Static Auction Pool configuration\nexport interface StaticPoolConfig {\n startTick: number\n endTick: number\n fee: number // e.g., 3000 for 0.3%\n // Optional parameters for lockable initializer\n numPositions?: number // Number of liquidity positions (default: based on tick range)\n maxShareToBeSold?: bigint // Maximum share of tokens to sell (in WAD, default: 1e18 = 100%)\n lockableBeneficiaries?: LockableBeneficiaryData[] // Optional beneficiaries for fee streaming\n}\n\n// Dynamic Auction configuration\nexport interface DynamicAuctionConfig {\n duration: number // in days\n epochLength: number // in seconds\n startTick: number\n endTick: number\n gamma?: number // Optional, can be auto-calculated\n minProceeds: bigint\n maxProceeds: bigint\n numPdSlugs?: number // Price discovery slugs (optional)\n}\n\n// Vesting configuration\nexport interface VestingConfig {\n duration: number // in seconds\n cliffDuration: number // in seconds\n}\n\n// Governance configuration\nexport interface GovernanceConfig {\n initialVotingDelay?: number // in seconds (default: depends on version)\n initialVotingPeriod?: number // in seconds (default: depends on version)\n initialProposalThreshold?: bigint // in tokens (default: 0)\n}\n\n// Explicit selector to use no-op governance. Must be set explicitly.\nexport interface NoOpGovernance {\n noOp: true\n}\n\nexport type GovernanceOption = GovernanceConfig | NoOpGovernance\n\n// Beneficiary data for streamable fees\nexport interface BeneficiaryData {\n address: Address\n percentage: number // basis points (e.g., 5000 = 50%)\n}\n\n// Lockable initializer beneficiary data (uses shares instead of percentage)\nexport interface LockableBeneficiaryData {\n beneficiary: Address\n shares: bigint // shares in WAD (1e18 = 100%)\n}\n\n// Pool status for lockable initializer\nexport enum LockablePoolStatus {\n Uninitialized = 0,\n Initialized = 1,\n Locked = 2,\n Exited = 3\n}\n\n// Lockable pool state\nexport interface LockablePoolState {\n asset: Address\n numeraire: Address\n tickLower: number\n tickUpper: number\n maxShareToBeSold: bigint\n totalTokensOnBondingCurve: bigint\n status: LockablePoolStatus\n}\n\n// Migration configuration (discriminated union)\nexport type MigrationConfig =\n | { type: 'uniswapV2' } // Basic migration to a new Uniswap v2 pool\n | {\n type: 'uniswapV3'\n fee: number\n tickSpacing: number\n }\n | {\n type: 'uniswapV4'\n fee: number\n tickSpacing: number\n // Configuration for fee streaming via StreamableFeesLocker\n streamableFees: {\n lockDuration: number // in seconds\n beneficiaries: BeneficiaryData[]\n }\n }\n\n// Create Static Auction parameters\nexport interface CreateStaticAuctionParams {\n // Token configuration\n token: TokenConfig\n\n // Sale configuration\n sale: SaleConfig\n\n // Static Auction (Uniswap v3) Pool configuration\n pool: StaticPoolConfig\n\n // Vesting configuration (optional)\n vesting?: VestingConfig\n\n // Governance configuration (required). Use `{ noOp: true }` for no‑op,\n // `{ useDefaults: true }` via builders for standard defaults, or pass\n // a full GovernanceConfig to customize.\n governance: GovernanceOption\n\n // Explicit Migration Configuration\n migration: MigrationConfig\n\n // Integrator details\n integrator?: Address\n userAddress: Address\n}\n\n// Create Dynamic Auction parameters\nexport interface CreateDynamicAuctionParams {\n // Token configuration\n token: TokenConfig\n\n // Sale configuration\n sale: SaleConfig\n\n // Dynamic Auction (Uniswap v4 Hook) configuration\n auction: DynamicAuctionConfig\n \n // Pool configuration\n pool: {\n fee: number // e.g., 3000 for 0.3%\n tickSpacing: number\n }\n\n // Vesting configuration (optional)\n vesting?: VestingConfig\n\n // Governance configuration (required). Use `{ noOp: true }` for no‑op,\n // `{ useDefaults: true }` via builders for standard defaults, or pass\n // a full GovernanceConfig to customize.\n governance: GovernanceOption\n\n // Explicit Migration Configuration\n migration: MigrationConfig\n\n // Integrator details\n integrator?: Address\n userAddress: Address\n \n // Time configuration (internal use)\n startTimeOffset?: number\n blockTimestamp?: number // Optional: use this block timestamp instead of fetching latest\n}\n\n// Price range configuration for automatic tick calculation\nexport interface PriceRange {\n startPrice: number\n endPrice: number\n}\n\n// Tick range configuration\nexport interface TickRange {\n startTick: number\n endTick: number\n}\n\n// Build configuration for static auctions (V3-style)\nexport interface StaticAuctionBuildConfig {\n // Token details\n name: string\n symbol: string\n totalSupply?: bigint // default: 1 billion\n numTokensToSell?: bigint // default: 900 million\n tokenURI: string\n\n // Time parameters\n startTimeOffset?: number // Optional - seconds to add to current block timestamp (default: 30)\n\n // Price parameters - must provide either priceRange or tickRange\n numeraire: Address // Required for V3\n tickRange?: TickRange\n priceRange?: PriceRange\n fee?: number // default: 10000 (1%)\n \n // Pool parameters (V3 specific)\n numPositions?: number // default: 15\n maxShareToBeSold?: bigint // default: 35% in WAD\n\n // Vesting parameters\n yearlyMintRate?: bigint // default: 2%\n vestingDuration?: bigint // default: 1 year\n recipients?: Address[] // defaults to [userAddress]\n amounts?: bigint[] // defaults based on pre-mint calculation\n\n // Migration configuration\n migration: MigrationConfig\n\n // Other parameters\n integrator?: Address\n useGovernance?: boolean // default: true\n}\n\n// Build configuration for dynamic auctions (V4-style)\nexport interface DynamicAuctionBuildConfig {\n // Token details\n name: string\n symbol: string\n totalSupply: bigint\n numTokensToSell: bigint\n tokenURI: string\n\n // Time parameters\n startTimeOffset?: number // Optional - seconds to add to block timestamp (default: 30)\n blockTimestamp?: number // Optional - specific block timestamp to use (default: fetch latest)\n duration?: number // in days (default: 7)\n epochLength?: number // in seconds (default: 3600)\n\n // Price parameters - must provide either priceRange or tickRange\n numeraire?: Address // defaults to zero address\n tickRange?: TickRange\n priceRange?: PriceRange\n tickSpacing: number\n gamma?: number // auto-calculated if not provided\n fee: number // In basis points\n\n // Sale parameters\n minProceeds: bigint\n maxProceeds: bigint\n numPdSlugs?: number // default: 5\n\n // Vesting parameters\n yearlyMintRate?: bigint // default: 2%\n vestingDuration: bigint\n recipients: Address[]\n amounts: bigint[]\n\n // Migration configuration\n migration: MigrationConfig\n\n // Other parameters\n integrator?: Address\n useGovernance?: boolean // default: true\n}\n\n// SDK initialization configuration\nexport interface DopplerSDKConfig {\n publicClient: PublicClient\n walletClient?: WalletClient\n chainId: number\n}\n\n// Pool information types\nexport interface PoolInfo {\n address: Address\n tokenAddress: Address\n numeraireAddress: Address\n fee: number\n liquidity: bigint\n sqrtPriceX96: bigint\n}\n\nexport interface HookInfo {\n hookAddress: Address\n tokenAddress: Address\n numeraireAddress: Address\n poolId: string\n currentEpoch: number\n totalProceeds: bigint\n totalTokensSold: bigint\n earlyExit: boolean\n insufficientProceeds: boolean\n startingTime: bigint\n endingTime: bigint\n epochLength: bigint\n minimumProceeds: bigint\n maximumProceeds: bigint\n}\n\n\n// Quote result type\nexport interface QuoteResult {\n amountOut: bigint\n priceImpact: number\n fee: bigint\n route: string[]\n}\n\n// Lockable Uniswap V3 Initializer encode params\nexport interface LockableV3InitializerParams {\n fee: number\n tickLower: number\n tickUpper: number\n numPositions: number\n maxShareToBeSold: bigint\n beneficiaries: LockableBeneficiaryData[]\n}\n"]}
@@ -1,162 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkXQ2VMR26_js = require('./chunk-XQ2VMR26.js');
4
- var chunkEFAPDN4J_js = require('./chunk-EFAPDN4J.js');
5
-
6
- // src/entities/quoter/Quoter.ts
7
- var Quoter = class {
8
- constructor(publicClient, chainId) {
9
- this.publicClient = publicClient;
10
- this.chainId = chainId;
11
- }
12
- /**
13
- * Get a price quote for swapping an exact amount of input tokens on Uniswap V3
14
- * @param params Parameters for the quote
15
- * @returns Quote result including output amount and price impact
16
- */
17
- async quoteExactInputV3(params) {
18
- const addresses = chunkXQ2VMR26_js.getAddresses(this.chainId);
19
- const { result } = await this.publicClient.simulateContract({
20
- address: addresses.v3Quoter,
21
- abi: chunkEFAPDN4J_js.quoterV2Abi,
22
- functionName: "quoteExactInputSingle",
23
- args: [{
24
- tokenIn: params.tokenIn,
25
- tokenOut: params.tokenOut,
26
- amountIn: params.amountIn,
27
- fee: params.fee,
28
- sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0)
29
- }]
30
- });
31
- return {
32
- amountOut: result[0],
33
- sqrtPriceX96After: result[1],
34
- initializedTicksCrossed: result[2],
35
- gasEstimate: result[3]
36
- };
37
- }
38
- /**
39
- * Get a price quote for receiving an exact amount of output tokens on Uniswap V3
40
- * @param params Parameters for the quote
41
- * @returns Quote result including required input amount
42
- */
43
- async quoteExactOutputV3(params) {
44
- const addresses = chunkXQ2VMR26_js.getAddresses(this.chainId);
45
- const { result } = await this.publicClient.simulateContract({
46
- address: addresses.v3Quoter,
47
- abi: chunkEFAPDN4J_js.quoterV2Abi,
48
- functionName: "quoteExactOutputSingle",
49
- args: [{
50
- tokenIn: params.tokenIn,
51
- tokenOut: params.tokenOut,
52
- fee: params.fee,
53
- amountOut: params.amountOut,
54
- sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0)
55
- }]
56
- });
57
- return {
58
- amountIn: result[0],
59
- sqrtPriceX96After: result[1],
60
- initializedTicksCrossed: result[2],
61
- gasEstimate: result[3]
62
- };
63
- }
64
- /**
65
- * Get a price quote for swapping an exact amount of input tokens on Uniswap V2
66
- * @param params Parameters for the quote
67
- * @returns Array of amounts for each step in the path
68
- */
69
- async quoteExactInputV2(params) {
70
- const addresses = chunkXQ2VMR26_js.getAddresses(this.chainId);
71
- if (!addresses.univ2Router02) {
72
- throw new Error("Uniswap V2 Router not available on this chain");
73
- }
74
- const result = await this.publicClient.readContract({
75
- address: addresses.univ2Router02,
76
- abi: chunkEFAPDN4J_js.uniswapV2Router02Abi,
77
- functionName: "getAmountsOut",
78
- args: [params.amountIn, params.path]
79
- });
80
- return [...result];
81
- }
82
- /**
83
- * Get a price quote for receiving an exact amount of output tokens on Uniswap V2
84
- * @param params Parameters for the quote
85
- * @returns Array of amounts for each step in the path
86
- */
87
- async quoteExactOutputV2(params) {
88
- const addresses = chunkXQ2VMR26_js.getAddresses(this.chainId);
89
- if (!addresses.univ2Router02) {
90
- throw new Error("Uniswap V2 Router not available on this chain");
91
- }
92
- const result = await this.publicClient.readContract({
93
- address: addresses.univ2Router02,
94
- abi: chunkEFAPDN4J_js.uniswapV2Router02Abi,
95
- functionName: "getAmountsIn",
96
- args: [params.amountOut, params.path]
97
- });
98
- return [...result];
99
- }
100
- /**
101
- * Get a price quote for swapping an exact amount of input tokens on Uniswap V4
102
- * @param params Parameters for the quote
103
- * @returns Quote result for V4 pools
104
- */
105
- async quoteExactInputV4(params) {
106
- const addresses = chunkXQ2VMR26_js.getAddresses(this.chainId);
107
- const quoterAddress = addresses.dopplerLens;
108
- if (!quoterAddress) {
109
- throw new Error("No V4 quoter available on this chain");
110
- }
111
- try {
112
- const { result } = await this.publicClient.simulateContract({
113
- address: quoterAddress,
114
- abi: chunkEFAPDN4J_js.v4QuoterAbi,
115
- functionName: "quoteExactInputSingle",
116
- args: [{
117
- poolKey: params.poolKey,
118
- zeroForOne: params.zeroForOne,
119
- exactAmount: params.exactAmount,
120
- hookData: params.hookData ?? "0x"
121
- }]
122
- });
123
- return {
124
- amountOut: result[0],
125
- gasEstimate: result[1]
126
- };
127
- } catch (simulateError) {
128
- throw simulateError;
129
- }
130
- }
131
- /**
132
- * Get a price quote for receiving an exact amount of output tokens on Uniswap V4
133
- * @param params Parameters for the quote
134
- * @returns Quote result for V4 pools
135
- */
136
- async quoteExactOutputV4(params) {
137
- const addresses = chunkXQ2VMR26_js.getAddresses(this.chainId);
138
- const quoterAddress = addresses.dopplerLens;
139
- if (!quoterAddress) {
140
- throw new Error("No V4 quoter available on this chain");
141
- }
142
- const { result } = await this.publicClient.simulateContract({
143
- address: quoterAddress,
144
- abi: chunkEFAPDN4J_js.v4QuoterAbi,
145
- functionName: "quoteExactOutputSingle",
146
- args: [{
147
- poolKey: params.poolKey,
148
- zeroForOne: params.zeroForOne,
149
- exactAmount: params.exactAmount,
150
- hookData: params.hookData ?? "0x"
151
- }]
152
- });
153
- return {
154
- amountIn: result[0],
155
- gasEstimate: result[1]
156
- };
157
- }
158
- };
159
-
160
- exports.Quoter = Quoter;
161
- //# sourceMappingURL=chunk-3OZRDL3O.js.map
162
- //# sourceMappingURL=chunk-3OZRDL3O.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/entities/quoter/Quoter.ts"],"names":["getAddresses","quoterV2Abi","uniswapV2Router02Abi","v4QuoterAbi"],"mappings":"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","file":"chunk-3OZRDL3O.js","sourcesContent":["import { type Address, type PublicClient } from 'viem'\nimport { quoterV2Abi, uniswapV2Router02Abi, v4QuoterAbi } from '../../abis'\nimport { getAddresses } from '../../addresses'\n\n/**\n * Unified Quoter for getting price quotes across Uniswap V2, V3, and V4\n * \n * This class provides a unified interface for price discovery across all\n * supported Uniswap versions, abstracting away the differences between\n * V2 router, V3 quoter, and V4 quoter contracts.\n */\nexport class Quoter {\n private publicClient: PublicClient\n private chainId: number\n \n constructor(publicClient: PublicClient, chainId: number) {\n this.publicClient = publicClient\n this.chainId = chainId\n }\n \n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V3\n * @param params Parameters for the quote\n * @returns Quote result including output amount and price impact\n */\n async quoteExactInputV3(params: {\n tokenIn: Address\n tokenOut: Address\n amountIn: bigint\n fee: number\n sqrtPriceLimitX96?: bigint\n }): Promise<{\n amountOut: bigint\n sqrtPriceX96After: bigint\n initializedTicksCrossed: number\n gasEstimate: bigint\n }> {\n const addresses = getAddresses(this.chainId)\n \n const { result } = await this.publicClient.simulateContract({\n address: addresses.v3Quoter,\n abi: quoterV2Abi,\n functionName: 'quoteExactInputSingle',\n args: [{\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n fee: params.fee,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0),\n }],\n })\n \n return {\n amountOut: result[0],\n sqrtPriceX96After: result[1],\n initializedTicksCrossed: result[2],\n gasEstimate: result[3],\n }\n }\n \n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V3\n * @param params Parameters for the quote\n * @returns Quote result including required input amount\n */\n async quoteExactOutputV3(params: {\n tokenIn: Address\n tokenOut: Address\n amountOut: bigint\n fee: number\n sqrtPriceLimitX96?: bigint\n }): Promise<{\n amountIn: bigint\n sqrtPriceX96After: bigint\n initializedTicksCrossed: number\n gasEstimate: bigint\n }> {\n const addresses = getAddresses(this.chainId)\n \n const { result } = await this.publicClient.simulateContract({\n address: addresses.v3Quoter,\n abi: quoterV2Abi,\n functionName: 'quoteExactOutputSingle',\n args: [{\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n fee: params.fee,\n amountOut: params.amountOut,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96 ?? BigInt(0),\n }],\n })\n \n return {\n amountIn: result[0],\n sqrtPriceX96After: result[1],\n initializedTicksCrossed: result[2],\n gasEstimate: result[3],\n }\n }\n \n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V2\n * @param params Parameters for the quote\n * @returns Array of amounts for each step in the path\n */\n async quoteExactInputV2(params: {\n amountIn: bigint\n path: Address[]\n }): Promise<bigint[]> {\n const addresses = getAddresses(this.chainId)\n \n if (!addresses.univ2Router02) {\n throw new Error('Uniswap V2 Router not available on this chain')\n }\n \n const result = await this.publicClient.readContract({\n address: addresses.univ2Router02,\n abi: uniswapV2Router02Abi,\n functionName: 'getAmountsOut',\n args: [params.amountIn, params.path],\n })\n \n return [...result] // Convert readonly array to mutable array\n }\n \n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V2\n * @param params Parameters for the quote\n * @returns Array of amounts for each step in the path\n */\n async quoteExactOutputV2(params: {\n amountOut: bigint\n path: Address[]\n }): Promise<bigint[]> {\n const addresses = getAddresses(this.chainId)\n \n if (!addresses.univ2Router02) {\n throw new Error('Uniswap V2 Router not available on this chain')\n }\n \n const result = await this.publicClient.readContract({\n address: addresses.univ2Router02,\n abi: uniswapV2Router02Abi,\n functionName: 'getAmountsIn',\n args: [params.amountOut, params.path],\n })\n \n return [...result] // Convert readonly array to mutable array\n }\n \n /**\n * Get a price quote for swapping an exact amount of input tokens on Uniswap V4\n * @param params Parameters for the quote\n * @returns Quote result for V4 pools\n */\n async quoteExactInputV4(params: {\n poolKey: {\n currency0: Address\n currency1: Address\n fee: number\n tickSpacing: number\n hooks: Address\n }\n zeroForOne: boolean\n exactAmount: bigint\n hookData?: string\n }): Promise<{\n amountOut: bigint\n gasEstimate: bigint\n }> {\n const addresses = getAddresses(this.chainId)\n \n // Use v4Quoter if available, otherwise use dopplerLens (they're the same contract)\n const quoterAddress = addresses.dopplerLens\n \n if (!quoterAddress) {\n throw new Error('No V4 quoter available on this chain')\n }\n \n try {\n // First try simulateContract for better gas estimation\n const { result } = await this.publicClient.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactInputSingle',\n args: [{\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n }],\n })\n \n return {\n amountOut: result[0],\n gasEstimate: result[1],\n }\n } catch (simulateError) {\n // If simulation fails, throw the error\n // Most V4 quoters need simulation, not direct reads\n throw simulateError\n }\n }\n\n /**\n * Get a price quote for receiving an exact amount of output tokens on Uniswap V4\n * @param params Parameters for the quote\n * @returns Quote result for V4 pools\n */\n async quoteExactOutputV4(params: {\n poolKey: {\n currency0: Address\n currency1: Address\n fee: number\n tickSpacing: number\n hooks: Address\n }\n zeroForOne: boolean\n exactAmount: bigint\n hookData?: string\n }): Promise<{\n amountIn: bigint\n gasEstimate: bigint\n }> {\n const addresses = getAddresses(this.chainId)\n \n // Use v4Quoter if available, otherwise use dopplerLens (they're the same contract)\n const quoterAddress = addresses.dopplerLens\n \n if (!quoterAddress) {\n throw new Error('No V4 quoter available on this chain')\n }\n \n const { result } = await this.publicClient.simulateContract({\n address: quoterAddress,\n abi: v4QuoterAbi,\n functionName: 'quoteExactOutputSingle',\n args: [{\n poolKey: params.poolKey,\n zeroForOne: params.zeroForOne,\n exactAmount: params.exactAmount,\n hookData: (params.hookData ?? '0x') as `0x${string}`,\n }],\n })\n \n return {\n amountIn: result[0],\n gasEstimate: result[1],\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/tickMath.ts"],"names":[],"mappings":"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","file":"chunk-4K5GBNQV.mjs","sourcesContent":["/**\n * Tick math utilities for Uniswap V3/V4 price calculations\n * \n * These utilities help convert between ticks, sqrtPriceX96 values, and human-readable prices\n */\n\n// Constants\nexport const MIN_TICK = -887272\nexport const MAX_TICK = 887272\nexport const MIN_SQRT_RATIO = 4295128739n\nexport const MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n\nexport const Q96 = 2n ** 96n\n\n/**\n * Get the sqrt ratio at a given tick\n * @param tick The tick value\n * @returns The sqrt price as a Q64.96 fixed point number\n */\nexport function getSqrtRatioAtTick(tick: number): bigint {\n if (tick < MIN_TICK || tick > MAX_TICK) {\n throw new Error('Tick out of bounds')\n }\n\n const absTick = tick < 0 ? -tick : tick\n\n let ratio = (absTick & 0x1) !== 0\n ? 0xfffcb933bd6fad37aa2d162d1a594001n\n : 0x100000000000000000000000000000000n\n\n if ((absTick & 0x2) !== 0) ratio = (ratio * 0xfff97272373d413259a46990580e213an) >> 128n\n if ((absTick & 0x4) !== 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdccn) >> 128n\n if ((absTick & 0x8) !== 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0n) >> 128n\n if ((absTick & 0x10) !== 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644n) >> 128n\n if ((absTick & 0x20) !== 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0n) >> 128n\n if ((absTick & 0x40) !== 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861n) >> 128n\n if ((absTick & 0x80) !== 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053n) >> 128n\n if ((absTick & 0x100) !== 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4n) >> 128n\n if ((absTick & 0x200) !== 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54n) >> 128n\n if ((absTick & 0x400) !== 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3n) >> 128n\n if ((absTick & 0x800) !== 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9n) >> 128n\n if ((absTick & 0x1000) !== 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825n) >> 128n\n if ((absTick & 0x2000) !== 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5n) >> 128n\n if ((absTick & 0x4000) !== 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7n) >> 128n\n if ((absTick & 0x8000) !== 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6n) >> 128n\n if ((absTick & 0x10000) !== 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9n) >> 128n\n if ((absTick & 0x20000) !== 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604n) >> 128n\n if ((absTick & 0x40000) !== 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98n) >> 128n\n if ((absTick & 0x80000) !== 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2n) >> 128n\n\n if (tick > 0) ratio = (2n ** 256n - 1n) / ratio\n\n // Shift to get Q64.96\n return ratio >> 32n\n}\n\n/**\n * Get the tick at a given sqrt ratio\n * @param sqrtRatioX96 The sqrt price as a Q64.96 fixed point number\n * @returns The tick value\n */\nexport function getTickAtSqrtRatio(sqrtRatioX96: bigint): number {\n if (sqrtRatioX96 < MIN_SQRT_RATIO || sqrtRatioX96 >= MAX_SQRT_RATIO) {\n throw new Error('sqrt ratio out of bounds')\n }\n\n const ratio = sqrtRatioX96 << 32n\n\n let r = ratio\n let msb = 0n\n\n let f = r > 0xffffffffffffffffffffffffffffffffn ? 1n : 0n\n msb = msb | (f << 7n)\n r = r >> (f * 128n)\n\n f = r > 0xffffffffffffffffn ? 1n : 0n\n msb = msb | (f << 6n)\n r = r >> (f * 64n)\n\n f = r > 0xffffffffn ? 1n : 0n\n msb = msb | (f << 5n)\n r = r >> (f * 32n)\n\n f = r > 0xffffn ? 1n : 0n\n msb = msb | (f << 4n)\n r = r >> (f * 16n)\n\n f = r > 0xffn ? 1n : 0n\n msb = msb | (f << 3n)\n r = r >> (f * 8n)\n\n f = r > 0xfn ? 1n : 0n\n msb = msb | (f << 2n)\n r = r >> (f * 4n)\n\n f = r > 0x3n ? 1n : 0n\n msb = msb | (f << 1n)\n r = r >> (f * 2n)\n\n f = r > 0x1n ? 1n : 0n\n msb = msb | f\n\n let log2 = (msb - 128n) << 64n\n \n r = ratio >> msb\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 63n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 62n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 61n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 60n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 59n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 58n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 57n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 56n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 55n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 54n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 53n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 52n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 51n)\n r = r >> f\n\n r = (r * r) >> 127n\n f = r >> 128n\n log2 = log2 | (f << 50n)\n\n const log_sqrt10001 = log2 * 255738958999603826347141n\n\n const tickLow = Number((log_sqrt10001 - 3402992956809132418596140100660247210n) >> 128n)\n const tickHigh = Number((log_sqrt10001 + 291339464771989622907027621153398088495n) >> 128n)\n\n return tickLow === tickHigh ? tickLow : getSqrtRatioAtTick(tickHigh) <= sqrtRatioX96 ? tickHigh : tickLow\n}\n\n/**\n * Convert sqrtPriceX96 to a human-readable price\n * @param sqrtPriceX96 The sqrt price as a Q64.96 fixed point number\n * @param decimals0 Decimals of token0\n * @param decimals1 Decimals of token1\n * @param token0IsBase Whether to return price in terms of token0 (true) or token1 (false)\n * @returns The price as a number\n */\nexport function sqrtPriceX96ToPrice(\n sqrtPriceX96: bigint,\n decimals0: number,\n decimals1: number,\n token0IsBase = true\n): number {\n const price = Number(sqrtPriceX96) / Number(Q96)\n const priceSquared = price * price\n \n // Adjust for decimals\n const decimalAdjustment = 10 ** (decimals1 - decimals0)\n const adjustedPrice = priceSquared * decimalAdjustment\n \n return token0IsBase ? adjustedPrice : 1 / adjustedPrice\n}\n\n/**\n * Convert a human-readable price to sqrtPriceX96\n * @param price The price (token1/token0)\n * @param decimals0 Decimals of token0\n * @param decimals1 Decimals of token1\n * @returns The sqrt price as a Q64.96 fixed point number\n */\nexport function priceToSqrtPriceX96(\n price: number,\n decimals0: number,\n decimals1: number\n): bigint {\n // Adjust for decimals\n const decimalAdjustment = 10 ** (decimals1 - decimals0)\n const adjustedPrice = price / decimalAdjustment\n \n // Calculate sqrt and convert to X96\n const sqrtPrice = Math.sqrt(adjustedPrice)\n return BigInt(Math.floor(sqrtPrice * Number(Q96)))\n}\n\n/**\n * Convert a tick to a human-readable price\n * @param tick The tick value\n * @param decimals0 Decimals of token0\n * @param decimals1 Decimals of token1\n * @param token0IsBase Whether to return price in terms of token0 (true) or token1 (false)\n * @returns The price as a number\n */\nexport function tickToPrice(\n tick: number,\n decimals0: number,\n decimals1: number,\n token0IsBase = true\n): number {\n const sqrtPriceX96 = getSqrtRatioAtTick(tick)\n return sqrtPriceX96ToPrice(sqrtPriceX96, decimals0, decimals1, token0IsBase)\n}\n\n/**\n * Convert a human-readable price to a tick\n * @param price The price (token1/token0)\n * @param decimals0 Decimals of token0\n * @param decimals1 Decimals of token1\n * @returns The tick value\n */\nexport function priceToTick(\n price: number,\n decimals0: number,\n decimals1: number\n): number {\n const sqrtPriceX96 = priceToSqrtPriceX96(price, decimals0, decimals1)\n return getTickAtSqrtRatio(sqrtPriceX96)\n}\n\n/**\n * Get the nearest usable tick for a given tick spacing\n * @param tick The desired tick\n * @param tickSpacing The tick spacing of the pool\n * @returns The nearest valid tick\n */\nexport function getNearestUsableTick(\n tick: number,\n tickSpacing: number\n): number {\n const rounded = Math.round(tick / tickSpacing) * tickSpacing\n if (rounded < MIN_TICK) return MIN_TICK\n if (rounded > MAX_TICK) return MAX_TICK\n return rounded\n}"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/entities/auction/StaticAuction.ts"],"names":["uniswapV3PoolAbi","getAddresses","airlockAbi","getAddress"],"mappings":"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","file":"chunk-5IT5OXQ5.js","sourcesContent":["import { type Address, type PublicClient, getAddress } from 'viem'\nimport type { PoolInfo } 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: PublicClient\n private poolAddress: Address\n \n constructor(client: PublicClient, 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.client.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'slot0',\n }),\n this.client.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'liquidity',\n }),\n this.client.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token0',\n }),\n this.client.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token1',\n }),\n this.client.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.client.getChainId()\n const addresses = getAddresses(chainId)\n \n const assetData = await this.client.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [token0],\n })\n \n // The getAssetData returns: [numeraire, timelock, governance, liquidityMigrator, poolInitializer, pool, migrationPool, numTokensToSell, totalSupply, integrator]\n // If token0 has asset data in Airlock (pool is not zero), it's the auction token\n const isToken0AuctionToken = assetData[5] !== getAddress('0x0000000000000000000000000000000000000000')\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.client.getChainId()\n const addresses = getAddresses(chainId)\n \n const assetData = await this.client.readContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'getAssetData',\n args: [tokenAddress],\n })\n \n // The getAssetData returns: [numeraire, timelock, governance, liquidityMigrator, poolInitializer, pool, migrationPool, numTokensToSell, totalSupply, integrator]\n // Check if the asset is graduated (liquidityMigrator is set to address(0))\n return assetData[3] === getAddress('0x0000000000000000000000000000000000000000')\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, token1] = await Promise.all([\n this.client.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'token0',\n }),\n this.client.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.client.readContract({\n address: this.poolAddress,\n abi: uniswapV3PoolAbi,\n functionName: 'liquidity',\n })\n }\n}"]}
@@ -1,308 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkER42VG7H_js = require('./chunk-ER42VG7H.js');
4
-
5
- // src/builders.ts
6
- function computeTicks(priceRange, tickSpacing) {
7
- const startTick = Math.floor(Math.log(priceRange.startPrice) / Math.log(1.0001) / tickSpacing) * tickSpacing;
8
- const endTick = Math.ceil(Math.log(priceRange.endPrice) / Math.log(1.0001) / tickSpacing) * tickSpacing;
9
- return { startTick, endTick };
10
- }
11
- function computeOptimalGamma(startTick, endTick, durationDays, epochLength, tickSpacing) {
12
- const totalEpochs = durationDays * chunkER42VG7H_js.DAY_SECONDS / epochLength;
13
- const tickDelta = Math.abs(endTick - startTick);
14
- let gamma = Math.ceil(tickDelta / totalEpochs) * tickSpacing;
15
- gamma = Math.max(tickSpacing, gamma);
16
- if (gamma % tickSpacing !== 0) {
17
- throw new Error("Computed gamma must be divisible by tick spacing");
18
- }
19
- return gamma;
20
- }
21
- var StaticAuctionBuilder = class {
22
- tokenConfig(params) {
23
- if (params.type === "doppler404") {
24
- const p = params;
25
- this.token = {
26
- type: "doppler404",
27
- name: p.name,
28
- symbol: p.symbol,
29
- baseURI: p.baseURI,
30
- unit: p.unit
31
- };
32
- } else {
33
- const p = params;
34
- this.token = {
35
- name: p.name,
36
- symbol: p.symbol,
37
- tokenURI: p.tokenURI,
38
- yearlyMintRate: p.yearlyMintRate ?? chunkER42VG7H_js.DEFAULT_V3_YEARLY_MINT_RATE
39
- };
40
- }
41
- return this;
42
- }
43
- saleConfig(params) {
44
- this.sale = {
45
- initialSupply: params.initialSupply,
46
- numTokensToSell: params.numTokensToSell,
47
- numeraire: params.numeraire
48
- };
49
- return this;
50
- }
51
- // Provide pool ticks directly
52
- poolByTicks(params) {
53
- const fee = params.fee ?? chunkER42VG7H_js.DEFAULT_V3_FEE;
54
- const startTick = params.startTick ?? chunkER42VG7H_js.DEFAULT_V3_START_TICK;
55
- const endTick = params.endTick ?? chunkER42VG7H_js.DEFAULT_V3_END_TICK;
56
- this.pool = {
57
- startTick,
58
- endTick,
59
- fee,
60
- numPositions: params.numPositions ?? chunkER42VG7H_js.DEFAULT_V3_NUM_POSITIONS,
61
- maxShareToBeSold: params.maxShareToBeSold ?? chunkER42VG7H_js.DEFAULT_V3_MAX_SHARE_TO_BE_SOLD
62
- };
63
- return this;
64
- }
65
- // Or compute ticks from a price range (tick spacing is inferred from fee)
66
- poolByPriceRange(params) {
67
- const fee = params.fee ?? chunkER42VG7H_js.DEFAULT_V3_FEE;
68
- const tickSpacing = fee === 100 ? chunkER42VG7H_js.TICK_SPACINGS[100] : fee === 500 ? chunkER42VG7H_js.TICK_SPACINGS[500] : fee === 3e3 ? chunkER42VG7H_js.TICK_SPACINGS[3e3] : chunkER42VG7H_js.TICK_SPACINGS[1e4];
69
- const ticks = computeTicks(params.priceRange, tickSpacing);
70
- return this.poolByTicks({
71
- startTick: ticks.startTick,
72
- endTick: ticks.endTick,
73
- fee,
74
- numPositions: params.numPositions,
75
- maxShareToBeSold: params.maxShareToBeSold
76
- });
77
- }
78
- withVesting(params) {
79
- if (!params) {
80
- this.vesting = void 0;
81
- return this;
82
- }
83
- this.vesting = {
84
- duration: Number(params.duration ?? chunkER42VG7H_js.DEFAULT_V3_VESTING_DURATION),
85
- cliffDuration: params.cliffDuration ?? 0
86
- };
87
- return this;
88
- }
89
- withGovernance(params) {
90
- if (!params) {
91
- this.governance = {
92
- initialVotingDelay: chunkER42VG7H_js.DEFAULT_V3_INITIAL_VOTING_DELAY,
93
- initialVotingPeriod: chunkER42VG7H_js.DEFAULT_V3_INITIAL_VOTING_PERIOD,
94
- initialProposalThreshold: chunkER42VG7H_js.DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD
95
- };
96
- return this;
97
- }
98
- if ("useDefaults" in params) {
99
- this.governance = {
100
- initialVotingDelay: chunkER42VG7H_js.DEFAULT_V3_INITIAL_VOTING_DELAY,
101
- initialVotingPeriod: chunkER42VG7H_js.DEFAULT_V3_INITIAL_VOTING_PERIOD,
102
- initialProposalThreshold: chunkER42VG7H_js.DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD
103
- };
104
- return this;
105
- }
106
- if ("noOp" in params) {
107
- this.governance = { noOp: true };
108
- return this;
109
- }
110
- this.governance = params;
111
- return this;
112
- }
113
- withMigration(migration) {
114
- this.migration = migration;
115
- return this;
116
- }
117
- withUserAddress(address) {
118
- this.userAddress = address;
119
- return this;
120
- }
121
- withIntegrator(address) {
122
- this.integrator = address ?? chunkER42VG7H_js.ZERO_ADDRESS;
123
- return this;
124
- }
125
- build() {
126
- if (!this.token) throw new Error("tokenConfig is required");
127
- if (!this.sale) throw new Error("saleConfig is required");
128
- if (!this.pool) throw new Error("pool configuration is required");
129
- if (!this.migration) throw new Error("migration configuration is required");
130
- if (!this.userAddress) throw new Error("userAddress is required");
131
- if (!this.governance) throw new Error("governance configuration is required; call withGovernance()");
132
- return {
133
- token: this.token,
134
- sale: this.sale,
135
- pool: this.pool,
136
- vesting: this.vesting,
137
- governance: this.governance,
138
- migration: this.migration,
139
- integrator: this.integrator ?? chunkER42VG7H_js.ZERO_ADDRESS,
140
- userAddress: this.userAddress
141
- };
142
- }
143
- };
144
- var DynamicAuctionBuilder = class {
145
- tokenConfig(params) {
146
- if (params.type === "doppler404") {
147
- const p = params;
148
- this.token = {
149
- type: "doppler404",
150
- name: p.name,
151
- symbol: p.symbol,
152
- baseURI: p.baseURI,
153
- unit: p.unit
154
- };
155
- } else {
156
- const p = params;
157
- this.token = {
158
- name: p.name,
159
- symbol: p.symbol,
160
- tokenURI: p.tokenURI,
161
- yearlyMintRate: p.yearlyMintRate ?? chunkER42VG7H_js.DEFAULT_V4_YEARLY_MINT_RATE
162
- };
163
- }
164
- return this;
165
- }
166
- saleConfig(params) {
167
- this.sale = {
168
- initialSupply: params.initialSupply,
169
- numTokensToSell: params.numTokensToSell,
170
- numeraire: params.numeraire ?? chunkER42VG7H_js.ZERO_ADDRESS
171
- };
172
- return this;
173
- }
174
- poolConfig(params) {
175
- this.pool = { fee: params.fee, tickSpacing: params.tickSpacing };
176
- return this;
177
- }
178
- // Provide ticks directly
179
- auctionByTicks(params) {
180
- const duration = params.durationDays ?? chunkER42VG7H_js.DEFAULT_AUCTION_DURATION;
181
- const epochLength = params.epochLength ?? chunkER42VG7H_js.DEFAULT_EPOCH_LENGTH;
182
- const gamma = params.gamma ?? (this.pool ? computeOptimalGamma(params.startTick, params.endTick, duration, epochLength, this.pool.tickSpacing) : void 0);
183
- this.auction = {
184
- duration,
185
- epochLength,
186
- startTick: params.startTick,
187
- endTick: params.endTick,
188
- gamma,
189
- minProceeds: params.minProceeds,
190
- maxProceeds: params.maxProceeds,
191
- numPdSlugs: params.numPdSlugs
192
- };
193
- return this;
194
- }
195
- // Or compute ticks from price range
196
- auctionByPriceRange(params) {
197
- const tickSpacing = params.tickSpacing ?? this.pool?.tickSpacing;
198
- if (!tickSpacing) {
199
- throw new Error("tickSpacing is required (set poolConfig first or pass tickSpacing)");
200
- }
201
- const ticks = computeTicks(params.priceRange, tickSpacing);
202
- return this.auctionByTicks({
203
- startTick: ticks.startTick,
204
- endTick: ticks.endTick,
205
- minProceeds: params.minProceeds,
206
- maxProceeds: params.maxProceeds,
207
- durationDays: params.durationDays,
208
- epochLength: params.epochLength,
209
- gamma: params.gamma,
210
- numPdSlugs: params.numPdSlugs
211
- });
212
- }
213
- withVesting(params) {
214
- if (!params) {
215
- this.vesting = void 0;
216
- return this;
217
- }
218
- this.vesting = {
219
- duration: Number(params.duration ?? 0n),
220
- cliffDuration: params.cliffDuration ?? 0
221
- };
222
- return this;
223
- }
224
- withGovernance(params) {
225
- if (!params) {
226
- this.governance = {
227
- initialVotingDelay: chunkER42VG7H_js.DEFAULT_V4_INITIAL_VOTING_DELAY,
228
- initialVotingPeriod: chunkER42VG7H_js.DEFAULT_V4_INITIAL_VOTING_PERIOD,
229
- initialProposalThreshold: chunkER42VG7H_js.DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD
230
- };
231
- return this;
232
- }
233
- if ("useDefaults" in params) {
234
- this.governance = {
235
- initialVotingDelay: chunkER42VG7H_js.DEFAULT_V4_INITIAL_VOTING_DELAY,
236
- initialVotingPeriod: chunkER42VG7H_js.DEFAULT_V4_INITIAL_VOTING_PERIOD,
237
- initialProposalThreshold: chunkER42VG7H_js.DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD
238
- };
239
- return this;
240
- }
241
- if ("noOp" in params) {
242
- this.governance = { noOp: true };
243
- return this;
244
- }
245
- this.governance = params;
246
- return this;
247
- }
248
- withMigration(migration) {
249
- this.migration = migration;
250
- return this;
251
- }
252
- withUserAddress(address) {
253
- this.userAddress = address;
254
- return this;
255
- }
256
- withIntegrator(address) {
257
- this.integrator = address ?? chunkER42VG7H_js.ZERO_ADDRESS;
258
- return this;
259
- }
260
- withTime(params) {
261
- if (!params) {
262
- this.startTimeOffset = void 0;
263
- this.blockTimestamp = void 0;
264
- return this;
265
- }
266
- this.startTimeOffset = params.startTimeOffset;
267
- this.blockTimestamp = params.blockTimestamp;
268
- return this;
269
- }
270
- build() {
271
- if (!this.token) throw new Error("tokenConfig is required");
272
- if (!this.sale) throw new Error("saleConfig is required");
273
- if (!this.pool) throw new Error("poolConfig is required");
274
- if (!this.auction) throw new Error("auction configuration is required");
275
- if (!this.migration) throw new Error("migration configuration is required");
276
- if (!this.userAddress) throw new Error("userAddress is required");
277
- if (!this.governance) throw new Error("governance configuration is required; call withGovernance()");
278
- let { gamma } = this.auction;
279
- if (gamma === void 0) {
280
- gamma = computeOptimalGamma(
281
- this.auction.startTick,
282
- this.auction.endTick,
283
- this.auction.duration,
284
- this.auction.epochLength,
285
- this.pool.tickSpacing
286
- );
287
- }
288
- const auction = { ...this.auction, gamma };
289
- return {
290
- token: this.token,
291
- sale: this.sale,
292
- auction,
293
- pool: this.pool,
294
- vesting: this.vesting,
295
- governance: this.governance,
296
- migration: this.migration,
297
- integrator: this.integrator ?? chunkER42VG7H_js.ZERO_ADDRESS,
298
- userAddress: this.userAddress,
299
- startTimeOffset: this.startTimeOffset,
300
- blockTimestamp: this.blockTimestamp
301
- };
302
- }
303
- };
304
-
305
- exports.DynamicAuctionBuilder = DynamicAuctionBuilder;
306
- exports.StaticAuctionBuilder = StaticAuctionBuilder;
307
- //# sourceMappingURL=chunk-7F5IXZLH.js.map
308
- //# sourceMappingURL=chunk-7F5IXZLH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/builders.ts"],"names":["DAY_SECONDS","DEFAULT_V3_YEARLY_MINT_RATE","DEFAULT_V3_FEE","DEFAULT_V3_START_TICK","DEFAULT_V3_END_TICK","DEFAULT_V3_NUM_POSITIONS","DEFAULT_V3_MAX_SHARE_TO_BE_SOLD","TICK_SPACINGS","DEFAULT_V3_VESTING_DURATION","DEFAULT_V3_INITIAL_VOTING_DELAY","DEFAULT_V3_INITIAL_VOTING_PERIOD","DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD","ZERO_ADDRESS","DEFAULT_V4_YEARLY_MINT_RATE","DEFAULT_AUCTION_DURATION","DEFAULT_EPOCH_LENGTH","DEFAULT_V4_INITIAL_VOTING_DELAY","DEFAULT_V4_INITIAL_VOTING_PERIOD","DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD"],"mappings":"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","file":"chunk-7F5IXZLH.js","sourcesContent":["import type { Address } from 'viem'\nimport {\n BASIS_POINTS,\n DEFAULT_AUCTION_DURATION,\n DEFAULT_EPOCH_LENGTH,\n DEFAULT_V3_END_TICK,\n DEFAULT_V3_FEE,\n DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD,\n DEFAULT_V3_INITIAL_VOTING_DELAY,\n DEFAULT_V3_INITIAL_VOTING_PERIOD,\n DEFAULT_V3_MAX_SHARE_TO_BE_SOLD,\n DEFAULT_V3_NUM_POSITIONS,\n DEFAULT_V3_START_TICK,\n DEFAULT_V3_VESTING_DURATION,\n DEFAULT_V3_YEARLY_MINT_RATE,\n DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD,\n DEFAULT_V4_INITIAL_VOTING_DELAY,\n DEFAULT_V4_INITIAL_VOTING_PERIOD,\n DEFAULT_V4_YEARLY_MINT_RATE,\n DAY_SECONDS,\n TICK_SPACINGS,\n ZERO_ADDRESS,\n} from './constants'\nimport type {\n CreateDynamicAuctionParams,\n CreateStaticAuctionParams,\n GovernanceConfig,\n GovernanceOption,\n MigrationConfig,\n PriceRange,\n TickRange,\n VestingConfig,\n} from './types'\n\nfunction computeTicks(priceRange: PriceRange, tickSpacing: number): TickRange {\n const startTick =\n Math.floor(Math.log(priceRange.startPrice) / Math.log(1.0001) / tickSpacing) *\n tickSpacing\n const endTick =\n Math.ceil(Math.log(priceRange.endPrice) / Math.log(1.0001) / tickSpacing) *\n tickSpacing\n return { startTick, endTick }\n}\n\nfunction computeOptimalGamma(\n startTick: number,\n endTick: number,\n durationDays: number,\n epochLength: number,\n tickSpacing: number,\n): number {\n const totalEpochs = (durationDays * DAY_SECONDS) / epochLength\n const tickDelta = Math.abs(endTick - startTick)\n let gamma = Math.ceil(tickDelta / totalEpochs) * tickSpacing\n gamma = Math.max(tickSpacing, gamma)\n if (gamma % tickSpacing !== 0) {\n throw new Error('Computed gamma must be divisible by tick spacing')\n }\n return gamma\n}\n\n// Static Auction Builder (V3-style)\nexport class StaticAuctionBuilder {\n private token?: CreateStaticAuctionParams['token']\n private sale?: CreateStaticAuctionParams['sale']\n private pool?: CreateStaticAuctionParams['pool']\n private vesting?: VestingConfig\n private governance?: GovernanceOption\n private migration?: MigrationConfig\n private integrator?: Address\n private userAddress?: Address\n\n tokenConfig(\n params:\n | { type?: 'standard'; name: string; symbol: string; tokenURI: string; yearlyMintRate?: bigint }\n | { type: 'doppler404'; name: string; symbol: string; baseURI: string; unit?: bigint }\n ): this {\n if ((params as any).type === 'doppler404') {\n const p = params as { type: 'doppler404'; name: string; symbol: string; baseURI: string; unit?: bigint }\n this.token = {\n type: 'doppler404',\n name: p.name,\n symbol: p.symbol,\n baseURI: p.baseURI,\n unit: p.unit,\n } as any\n } else {\n const p = params as { type?: 'standard'; name: string; symbol: string; tokenURI: string; yearlyMintRate?: bigint }\n this.token = {\n name: p.name,\n symbol: p.symbol,\n tokenURI: p.tokenURI,\n yearlyMintRate: p.yearlyMintRate ?? DEFAULT_V3_YEARLY_MINT_RATE,\n } as any\n }\n return this\n }\n\n saleConfig(params: {\n initialSupply: bigint\n numTokensToSell: bigint\n numeraire: Address\n }): this {\n this.sale = {\n initialSupply: params.initialSupply,\n numTokensToSell: params.numTokensToSell,\n numeraire: params.numeraire,\n }\n return this\n }\n\n // Provide pool ticks directly\n poolByTicks(params: {\n startTick?: number\n endTick?: number\n fee?: number\n numPositions?: number\n maxShareToBeSold?: bigint\n }): this {\n const fee = params.fee ?? DEFAULT_V3_FEE\n const startTick = params.startTick ?? DEFAULT_V3_START_TICK\n const endTick = params.endTick ?? DEFAULT_V3_END_TICK\n this.pool = {\n startTick,\n endTick,\n fee,\n numPositions: params.numPositions ?? DEFAULT_V3_NUM_POSITIONS,\n maxShareToBeSold: params.maxShareToBeSold ?? DEFAULT_V3_MAX_SHARE_TO_BE_SOLD,\n }\n return this\n }\n\n // Or compute ticks from a price range (tick spacing is inferred from fee)\n poolByPriceRange(params: {\n priceRange: PriceRange\n fee?: number\n numPositions?: number\n maxShareToBeSold?: bigint\n }): this {\n const fee = params.fee ?? DEFAULT_V3_FEE\n const tickSpacing =\n fee === 100 ? TICK_SPACINGS[100] : fee === 500 ? TICK_SPACINGS[500] : fee === 3000 ? TICK_SPACINGS[3000] : TICK_SPACINGS[10000]\n const ticks = computeTicks(params.priceRange, tickSpacing)\n return this.poolByTicks({\n startTick: ticks.startTick,\n endTick: ticks.endTick,\n fee,\n numPositions: params.numPositions,\n maxShareToBeSold: params.maxShareToBeSold,\n })\n }\n\n withVesting(params?: { duration?: bigint; cliffDuration?: number }): this {\n if (!params) {\n this.vesting = undefined\n return this\n }\n this.vesting = {\n duration: Number(params.duration ?? DEFAULT_V3_VESTING_DURATION),\n cliffDuration: params.cliffDuration ?? 0,\n }\n return this\n }\n\n withGovernance(params?: GovernanceConfig | { useDefaults?: boolean } | { noOp: true }): this {\n if (!params) {\n // No args → apply standard governance defaults (explicit selection)\n this.governance = {\n initialVotingDelay: DEFAULT_V3_INITIAL_VOTING_DELAY,\n initialVotingPeriod: DEFAULT_V3_INITIAL_VOTING_PERIOD,\n initialProposalThreshold: DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD,\n }\n return this\n }\n if ('useDefaults' in params) {\n this.governance = {\n initialVotingDelay: DEFAULT_V3_INITIAL_VOTING_DELAY,\n initialVotingPeriod: DEFAULT_V3_INITIAL_VOTING_PERIOD,\n initialProposalThreshold: DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD,\n }\n return this\n }\n if ('noOp' in params) {\n this.governance = { noOp: true }\n return this\n }\n this.governance = params as GovernanceConfig\n return this\n }\n\n withMigration(migration: MigrationConfig): this {\n this.migration = migration\n return this\n }\n\n withUserAddress(address: Address): this {\n this.userAddress = address\n return this\n }\n\n withIntegrator(address?: Address): this {\n this.integrator = address ?? ZERO_ADDRESS\n return this\n }\n\n build(): CreateStaticAuctionParams {\n if (!this.token) throw new Error('tokenConfig is required')\n if (!this.sale) throw new Error('saleConfig is required')\n if (!this.pool) throw new Error('pool configuration is required')\n if (!this.migration) throw new Error('migration configuration is required')\n if (!this.userAddress) throw new Error('userAddress is required')\n if (!this.governance) throw new Error('governance configuration is required; call withGovernance()')\n\n return {\n token: this.token,\n sale: this.sale,\n pool: this.pool,\n vesting: this.vesting,\n governance: this.governance,\n migration: this.migration,\n integrator: this.integrator ?? ZERO_ADDRESS,\n userAddress: this.userAddress,\n }\n }\n}\n\n// Dynamic Auction Builder (V4-style)\nexport class DynamicAuctionBuilder {\n private token?: CreateDynamicAuctionParams['token']\n private sale?: CreateDynamicAuctionParams['sale']\n private auction?: CreateDynamicAuctionParams['auction']\n private pool?: CreateDynamicAuctionParams['pool']\n private vesting?: VestingConfig\n private governance?: GovernanceOption\n private migration?: MigrationConfig\n private integrator?: Address\n private userAddress?: Address\n private startTimeOffset?: number\n private blockTimestamp?: number\n\n tokenConfig(\n params:\n | { type?: 'standard'; name: string; symbol: string; tokenURI: string; yearlyMintRate?: bigint }\n | { type: 'doppler404'; name: string; symbol: string; baseURI: string; unit?: bigint }\n ): this {\n if ((params as any).type === 'doppler404') {\n const p = params as { type: 'doppler404'; name: string; symbol: string; baseURI: string; unit?: bigint }\n this.token = {\n type: 'doppler404',\n name: p.name,\n symbol: p.symbol,\n baseURI: p.baseURI,\n unit: p.unit,\n } as any\n } else {\n const p = params as { type?: 'standard'; name: string; symbol: string; tokenURI: string; yearlyMintRate?: bigint }\n this.token = {\n name: p.name,\n symbol: p.symbol,\n tokenURI: p.tokenURI,\n yearlyMintRate: p.yearlyMintRate ?? DEFAULT_V4_YEARLY_MINT_RATE,\n } as any\n }\n return this\n }\n\n saleConfig(params: {\n initialSupply: bigint\n numTokensToSell: bigint\n numeraire?: Address\n }): this {\n this.sale = {\n initialSupply: params.initialSupply,\n numTokensToSell: params.numTokensToSell,\n numeraire: params.numeraire ?? ZERO_ADDRESS,\n }\n return this\n }\n\n poolConfig(params: { fee: number; tickSpacing: number }): this {\n this.pool = { fee: params.fee, tickSpacing: params.tickSpacing }\n return this\n }\n\n // Provide ticks directly\n auctionByTicks(params: {\n startTick: number\n endTick: number\n minProceeds: bigint\n maxProceeds: bigint\n durationDays?: number\n epochLength?: number\n gamma?: number\n numPdSlugs?: number\n }): this {\n const duration = params.durationDays ?? DEFAULT_AUCTION_DURATION\n const epochLength = params.epochLength ?? DEFAULT_EPOCH_LENGTH\n const gamma =\n params.gamma ?? (this.pool ? computeOptimalGamma(params.startTick, params.endTick, duration, epochLength, this.pool.tickSpacing) : undefined)\n this.auction = {\n duration,\n epochLength,\n startTick: params.startTick,\n endTick: params.endTick,\n gamma,\n minProceeds: params.minProceeds,\n maxProceeds: params.maxProceeds,\n numPdSlugs: params.numPdSlugs,\n }\n return this\n }\n\n // Or compute ticks from price range\n auctionByPriceRange(params: {\n priceRange: PriceRange\n minProceeds: bigint\n maxProceeds: bigint\n durationDays?: number\n epochLength?: number\n gamma?: number\n tickSpacing?: number // optional; will use pool.tickSpacing if not provided\n numPdSlugs?: number\n }): this {\n const tickSpacing = params.tickSpacing ?? this.pool?.tickSpacing\n if (!tickSpacing) {\n throw new Error('tickSpacing is required (set poolConfig first or pass tickSpacing)')\n }\n const ticks = computeTicks(params.priceRange, tickSpacing)\n return this.auctionByTicks({\n startTick: ticks.startTick,\n endTick: ticks.endTick,\n minProceeds: params.minProceeds,\n maxProceeds: params.maxProceeds,\n durationDays: params.durationDays,\n epochLength: params.epochLength,\n gamma: params.gamma,\n numPdSlugs: params.numPdSlugs,\n })\n }\n\n withVesting(params?: { duration?: bigint; cliffDuration?: number }): this {\n if (!params) {\n this.vesting = undefined\n return this\n }\n this.vesting = {\n duration: Number(params.duration ?? 0n),\n cliffDuration: params.cliffDuration ?? 0,\n }\n return this\n }\n\n withGovernance(params?: GovernanceConfig | { useDefaults?: boolean } | { noOp: true }): this {\n if (!params) {\n // No args → apply standard governance defaults (explicit selection)\n this.governance = {\n initialVotingDelay: DEFAULT_V4_INITIAL_VOTING_DELAY,\n initialVotingPeriod: DEFAULT_V4_INITIAL_VOTING_PERIOD,\n initialProposalThreshold: DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD,\n }\n return this\n }\n if ('useDefaults' in params) {\n this.governance = {\n initialVotingDelay: DEFAULT_V4_INITIAL_VOTING_DELAY,\n initialVotingPeriod: DEFAULT_V4_INITIAL_VOTING_PERIOD,\n initialProposalThreshold: DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD,\n }\n return this\n }\n if ('noOp' in params) {\n this.governance = { noOp: true }\n return this\n }\n this.governance = params as GovernanceConfig\n return this\n }\n\n withMigration(migration: MigrationConfig): this {\n this.migration = migration\n return this\n }\n\n withUserAddress(address: Address): this {\n this.userAddress = address\n return this\n }\n\n withIntegrator(address?: Address): this {\n this.integrator = address ?? ZERO_ADDRESS\n return this\n }\n\n withTime(params?: { startTimeOffset?: number; blockTimestamp?: number }): this {\n if (!params) {\n this.startTimeOffset = undefined\n this.blockTimestamp = undefined\n return this\n }\n this.startTimeOffset = params.startTimeOffset\n this.blockTimestamp = params.blockTimestamp\n return this\n }\n\n build(): CreateDynamicAuctionParams {\n if (!this.token) throw new Error('tokenConfig is required')\n if (!this.sale) throw new Error('saleConfig is required')\n if (!this.pool) throw new Error('poolConfig is required')\n if (!this.auction) throw new Error('auction configuration is required')\n if (!this.migration) throw new Error('migration configuration is required')\n if (!this.userAddress) throw new Error('userAddress is required')\n if (!this.governance) throw new Error('governance configuration is required; call withGovernance()')\n\n // Ensure gamma is set and valid\n let { gamma } = this.auction\n if (gamma === undefined) {\n gamma = computeOptimalGamma(\n this.auction.startTick,\n this.auction.endTick,\n this.auction.duration,\n this.auction.epochLength,\n this.pool.tickSpacing,\n )\n }\n\n const auction = { ...this.auction, gamma }\n\n return {\n token: this.token,\n sale: this.sale,\n auction,\n pool: this.pool,\n vesting: this.vesting,\n governance: this.governance,\n migration: this.migration,\n integrator: this.integrator ?? ZERO_ADDRESS,\n userAddress: this.userAddress,\n startTimeOffset: this.startTimeOffset,\n blockTimestamp: this.blockTimestamp,\n }\n }\n}\n"]}