@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,5 +1,10 @@
1
+ import { zeroAddress } from 'viem';
2
+
1
3
  // src/entities/token/eth/Eth.ts
2
4
  var Eth = class {
5
+ get rpc() {
6
+ return this.publicClient;
7
+ }
3
8
  constructor(publicClient) {
4
9
  this.publicClient = publicClient;
5
10
  }
@@ -41,14 +46,14 @@ var Eth = class {
41
46
  * @returns Promise resolving to the account's ETH balance in wei
42
47
  */
43
48
  async getBalanceOf(account) {
44
- return await this.publicClient.getBalance({
49
+ return await this.rpc.getBalance({
45
50
  address: account
46
51
  });
47
52
  }
48
53
  };
49
54
  /** Static ETH address identifier (zero address) */
50
- Eth.address = "0x0000000000000000000000000000000000000000";
55
+ Eth.address = zeroAddress;
51
56
 
52
57
  export { Eth };
53
- //# sourceMappingURL=chunk-OPKQMN46.mjs.map
54
- //# sourceMappingURL=chunk-OPKQMN46.mjs.map
58
+ //# sourceMappingURL=chunk-PAPXGPJB.mjs.map
59
+ //# sourceMappingURL=chunk-PAPXGPJB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/entities/token/eth/Eth.ts"],"names":[],"mappings":";;;AAaO,IAAM,MAAN,MAAU;AAAA,EAEf,IAAY,GAAA,GAAoB;AAC9B,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAKA,YAAY,YAAA,EAAqC;AAC/C,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAA,GAA2B;AAC/B,IAAA,OAAO,OAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAA,GAA6B;AACjC,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,GAA+B;AACnC,IAAA,OAAO,EAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAA,GAAgC;AACpC,IAAA,OAAO,MAAM,IAAA,GAAO,EAAA;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,OAAA,EAAmC;AACpD,IAAA,OAAO,MAAM,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW;AAAA,MAC/B,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACF;AAAA;AA3Da,GAAA,CAOK,OAAA,GAAU,WAAA","file":"chunk-PAPXGPJB.mjs","sourcesContent":["import { type Address, zeroAddress, type PublicClient } from 'viem'\nimport { SupportedPublicClient } from '@/types'\n\n/**\n * A class providing read-only access to Ethereum (ETH) token information and balances.\n *\n * @remarks\n * This class implements a consistent interface with other token implementations (like DERC20)\n * but handles ETH-specific behavior such as:\n * - Hardcoded token metadata (name, symbol, decimals)\n * - Simulating unlimited allowance for ETH transfers\n * - Querying native ETH balances through viem\n */\nexport class Eth {\n private publicClient: SupportedPublicClient\n private get rpc(): PublicClient {\n return this.publicClient as PublicClient\n }\n \n /** Static ETH address identifier (zero address) */\n static readonly address = zeroAddress\n \n constructor(publicClient: SupportedPublicClient) {\n this.publicClient = publicClient\n }\n \n /**\n * Get the human-readable name of the token\n * @returns Promise resolving to \"Ether\" (hardcoded ETH name)\n */\n async getName(): Promise<string> {\n return \"Ether\"\n }\n \n /**\n * Get the ticker symbol of the token\n * @returns Promise resolving to \"ETH\" (hardcoded ETH symbol)\n */\n async getSymbol(): Promise<string> {\n return \"ETH\"\n }\n \n /**\n * Get the number of decimal places used by the token\n * @returns Promise resolving to 18 (standard ETH decimals)\n */\n async getDecimals(): Promise<number> {\n return 18\n }\n \n /**\n * Get the allowance granted to a spender (always returns maximum value)\n * @returns Promise resolving to 2^256 - 1 (simulates unlimited ETH allowance)\n *\n * @remarks\n * ETH doesn't have an allowance mechanism, so this returns max uint256 value\n * to represent unlimited approval in systems expecting ERC20-like interfaces\n */\n async getAllowance(): Promise<bigint> {\n return 2n ** 256n - 1n\n }\n \n /**\n * Get the ETH balance of a specified account\n * @param account - Address of the account to query\n * @returns Promise resolving to the account's ETH balance in wei\n */\n async getBalanceOf(account: Address): Promise<bigint> {\n return await this.rpc.getBalance({\n address: account,\n })\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ // src/utils/computeOptimalGamma.ts
4
+ function computeOptimalGamma(startTick, endTick, duration, epochLength, tickSpacing) {
5
+ const totalEpochs = duration / epochLength;
6
+ const tickDelta = Math.abs(endTick - startTick);
7
+ let perEpochTicks = Math.ceil(tickDelta / totalEpochs);
8
+ const multiples = Math.ceil(perEpochTicks / tickSpacing);
9
+ let gamma = multiples * tickSpacing;
10
+ gamma = Math.max(tickSpacing, gamma);
11
+ if (gamma % tickSpacing !== 0) {
12
+ throw new Error("Computed gamma must be divisible by tick spacing");
13
+ }
14
+ return gamma;
15
+ }
16
+
17
+ exports.computeOptimalGamma = computeOptimalGamma;
18
+ //# sourceMappingURL=chunk-PCNXJAU5.js.map
19
+ //# sourceMappingURL=chunk-PCNXJAU5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/computeOptimalGamma.ts"],"names":[],"mappings":";;;AAMO,SAAS,mBAAA,CACd,SAAA,EACA,OAAA,EACA,QAAA,EACA,aACA,WAAA,EACQ;AAER,EAAA,MAAM,cAAc,QAAA,GAAW,WAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,OAAA,GAAU,SAAS,CAAA;AAE9C,EAAA,IAAI,aAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,WAAW,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,aAAA,GAAgB,WAAW,CAAA;AACvD,EAAA,IAAI,QAAQ,SAAA,GAAY,WAAA;AAExB,EAAA,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,KAAK,CAAA;AACnC,EAAA,IAAI,KAAA,GAAQ,gBAAgB,CAAA,EAAG;AAC7B,IAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,KAAA;AACT","file":"chunk-PCNXJAU5.js","sourcesContent":["import { DAY_SECONDS } from \"../constants\"\n\n/**\n * Compute optimal gamma parameter based on price range and time parameters\n * Gamma determines how much the price can move per epoch during the sale.\n */\nexport function computeOptimalGamma(\n startTick: number,\n endTick: number,\n duration: number,\n epochLength: number,\n tickSpacing: number,\n): number {\n // Calculate total number of epochs\n const totalEpochs = duration / epochLength\n const tickDelta = Math.abs(endTick - startTick)\n // Base per-epoch movement in ticks\n let perEpochTicks = Math.ceil(tickDelta / totalEpochs)\n // Quantize up to the nearest multiple of tickSpacing\n const multiples = Math.ceil(perEpochTicks / tickSpacing)\n let gamma = multiples * tickSpacing\n // Ensure minimum of one 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}"]}
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkXQ2VMR26_js = require('./chunk-XQ2VMR26.js');
4
- var chunkEFAPDN4J_js = require('./chunk-EFAPDN4J.js');
3
+ var chunkJWEXGALU_js = require('./chunk-JWEXGALU.js');
4
+ var chunkYYUOLM6U_js = require('./chunk-YYUOLM6U.js');
5
5
  var viem = require('viem');
6
6
 
7
7
  var StaticAuction = class {
8
+ get rpc() {
9
+ return this.client;
10
+ }
8
11
  constructor(client, poolAddress) {
9
12
  this.client = client;
10
13
  this.poolAddress = poolAddress;
@@ -20,41 +23,47 @@ var StaticAuction = class {
20
23
  */
21
24
  async getPoolInfo() {
22
25
  const [slot0, liquidity, token0, token1, fee] = await Promise.all([
23
- this.client.readContract({
26
+ this.rpc.readContract({
24
27
  address: this.poolAddress,
25
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
28
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
26
29
  functionName: "slot0"
27
30
  }),
28
- this.client.readContract({
31
+ this.rpc.readContract({
29
32
  address: this.poolAddress,
30
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
33
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
31
34
  functionName: "liquidity"
32
35
  }),
33
- this.client.readContract({
36
+ this.rpc.readContract({
34
37
  address: this.poolAddress,
35
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
38
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
36
39
  functionName: "token0"
37
40
  }),
38
- this.client.readContract({
41
+ this.rpc.readContract({
39
42
  address: this.poolAddress,
40
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
43
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
41
44
  functionName: "token1"
42
45
  }),
43
- this.client.readContract({
46
+ this.rpc.readContract({
44
47
  address: this.poolAddress,
45
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
48
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
46
49
  functionName: "fee"
47
50
  })
48
51
  ]);
49
- const chainId = await this.client.getChainId();
50
- const addresses = chunkXQ2VMR26_js.getAddresses(chainId);
51
- const assetData = await this.client.readContract({
52
+ const chainId = await this.rpc.getChainId();
53
+ const addresses = chunkYYUOLM6U_js.getAddresses(chainId);
54
+ const assetData = await this.rpc.readContract({
52
55
  address: addresses.airlock,
53
- abi: chunkEFAPDN4J_js.airlockAbi,
56
+ abi: chunkJWEXGALU_js.airlockAbi,
54
57
  functionName: "getAssetData",
55
58
  args: [token0]
56
59
  });
57
- const isToken0AuctionToken = assetData[5] !== viem.getAddress("0x0000000000000000000000000000000000000000");
60
+ let poolOrHook0;
61
+ if (Array.isArray(assetData)) {
62
+ poolOrHook0 = assetData[5];
63
+ } else if (assetData && typeof assetData === "object") {
64
+ poolOrHook0 = assetData.poolOrHook ?? assetData.pool;
65
+ }
66
+ const isToken0AuctionToken = poolOrHook0 && poolOrHook0 !== viem.zeroAddress;
58
67
  return {
59
68
  address: this.poolAddress,
60
69
  tokenAddress: isToken0AuctionToken ? token0 : token1,
@@ -77,15 +86,16 @@ var StaticAuction = class {
77
86
  */
78
87
  async hasGraduated() {
79
88
  const tokenAddress = await this.getTokenAddress();
80
- const chainId = await this.client.getChainId();
81
- const addresses = chunkXQ2VMR26_js.getAddresses(chainId);
82
- const assetData = await this.client.readContract({
89
+ const chainId = await this.rpc.getChainId();
90
+ const addresses = chunkYYUOLM6U_js.getAddresses(chainId);
91
+ const assetData = await this.rpc.readContract({
83
92
  address: addresses.airlock,
84
- abi: chunkEFAPDN4J_js.airlockAbi,
93
+ abi: chunkJWEXGALU_js.airlockAbi,
85
94
  functionName: "getAssetData",
86
95
  args: [tokenAddress]
87
96
  });
88
- return assetData[3] === viem.getAddress("0x0000000000000000000000000000000000000000");
97
+ const liquidityMigrator = Array.isArray(assetData) ? assetData[3] : assetData?.liquidityMigrator;
98
+ return liquidityMigrator === viem.zeroAddress;
89
99
  }
90
100
  /**
91
101
  * Get the current price in the pool
@@ -94,14 +104,14 @@ var StaticAuction = class {
94
104
  async getCurrentPrice() {
95
105
  const poolInfo = await this.getPoolInfo();
96
106
  const [token0, token1] = await Promise.all([
97
- this.client.readContract({
107
+ this.rpc.readContract({
98
108
  address: this.poolAddress,
99
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
109
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
100
110
  functionName: "token0"
101
111
  }),
102
- this.client.readContract({
112
+ this.rpc.readContract({
103
113
  address: this.poolAddress,
104
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
114
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
105
115
  functionName: "token1"
106
116
  })
107
117
  ]);
@@ -120,14 +130,14 @@ var StaticAuction = class {
120
130
  * Get total liquidity in the pool
121
131
  */
122
132
  async getTotalLiquidity() {
123
- return await this.client.readContract({
133
+ return await this.rpc.readContract({
124
134
  address: this.poolAddress,
125
- abi: chunkEFAPDN4J_js.uniswapV3PoolAbi,
135
+ abi: chunkJWEXGALU_js.uniswapV3PoolAbi,
126
136
  functionName: "liquidity"
127
137
  });
128
138
  }
129
139
  };
130
140
 
131
141
  exports.StaticAuction = StaticAuction;
132
- //# sourceMappingURL=chunk-5IT5OXQ5.js.map
133
- //# sourceMappingURL=chunk-5IT5OXQ5.js.map
142
+ //# sourceMappingURL=chunk-PD6HWEMG.js.map
143
+ //# sourceMappingURL=chunk-PD6HWEMG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/entities/auction/StaticAuction.ts"],"names":["uniswapV3PoolAbi","getAddresses","airlockAbi","zeroAddress"],"mappings":";;;;;;AAWO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,IAAY,GAAA,GAAoB;AAC9B,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,WAAA,CAAY,QAA+B,WAAA,EAAsB;AAC/D,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAsB;AACpB,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,GAAiC;AAErC,IAAA,MAAM,CAAC,OAAO,SAAA,EAAW,MAAA,EAAQ,QAAQ,GAAG,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,MAChE,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKA,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKA,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKA,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKA,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKA,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf;AAAA,KACF,CAAA;AAID,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,GAAA,CAAI,UAAA,EAAW;AAC1C,IAAA,MAAM,SAAA,GAAYC,8BAAa,OAAO,CAAA;AAEtC,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC5C,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,GAAA,EAAKC,2BAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAM;AAAA,KACd,CAAA;AAKD,IAAA,IAAI,WAAA;AACJ,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5B,MAAA,WAAA,GAAc,UAAU,CAAC,CAAA;AAAA,IAC3B,CAAA,MAAA,IAAW,SAAA,IAAa,OAAO,SAAA,KAAc,QAAA,EAAU;AACrD,MAAA,WAAA,GAAe,SAAA,CAAkB,cAAe,SAAA,CAAkB,IAAA;AAAA,IACpE;AACA,IAAA,MAAM,oBAAA,GAAuB,eAAe,WAAA,KAAgBC,gBAAA;AAE5D,IAAA,OAAO;AAAA,MACL,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,YAAA,EAAc,uBAAuB,MAAA,GAAS,MAAA;AAAA,MAC9C,gBAAA,EAAkB,uBAAuB,MAAA,GAAS,MAAA;AAAA,MAClD,GAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA,EAAc,MAAM,CAAC;AAAA;AAAA,KACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAoC;AACxC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,WAAA,EAAY;AACxC,IAAA,OAAO,QAAA,CAAS,YAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,GAAiC;AACrC,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,EAAgB;AAChD,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,GAAA,CAAI,UAAA,EAAW;AAC1C,IAAA,MAAM,SAAA,GAAYF,8BAAa,OAAO,CAAA;AAEtC,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MAC5C,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,GAAA,EAAKC,2BAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,YAAY;AAAA,KACpB,CAAA;AAED,IAAA,MAAM,iBAAA,GAAoB,MAAM,OAAA,CAAQ,SAAS,IAC5C,SAAA,CAAkB,CAAC,IACnB,SAAA,EAAmB,iBAAA;AACxB,IAAA,OAAO,iBAAA,KAAsBC,gBAAA;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAA,GAAmC;AACvC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,WAAA,EAAY;AAGxC,IAAA,MAAM,CAAC,MAAA,EAAQ,MAAM,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACzC,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKH,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,QACpB,SAAS,IAAA,CAAK,WAAA;AAAA,QACd,GAAA,EAAKA,iCAAA;AAAA,QACL,YAAA,EAAc;AAAA,OACf;AAAA,KACF,CAAA;AAKD,IAAA,MAAM,eAAe,QAAA,CAAS,YAAA;AAC9B,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,CAAC,CAAA,IAAK,OAAO,EAAE,CAAA;AAGlC,IAAA,MAAM,sBAAsB,YAAA,GAAe,YAAA;AAC3C,IAAA,MAAM,aAAa,GAAA,GAAM,GAAA;AACzB,IAAA,MAAM,SAAS,mBAAA,GAAsB,UAAA;AAGrC,IAAA,IAAI,QAAA,CAAS,iBAAiB,MAAA,EAAQ;AAEpC,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,MAAO;AAGL,MAAA,OAAO,UAAA,GAAa,MAAA;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,GAAqC;AACzC,IAAA,OAAO,MAAM,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa;AAAA,MACjC,SAAS,IAAA,CAAK,WAAA;AAAA,MACd,GAAA,EAAKA,iCAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AACF","file":"chunk-PD6HWEMG.js","sourcesContent":["import { type Address, getAddress, 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, token1] = 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"]}
@@ -25,10 +25,11 @@ var TICK_SPACINGS = {
25
25
  var SECONDS_PER_DAY = 86400;
26
26
  var SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY;
27
27
  var DEFAULT_EPOCH_LENGTH = 43200;
28
- var DEFAULT_AUCTION_DURATION = 7;
28
+ var DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY;
29
29
  var DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR;
30
30
  var DEFAULT_PD_SLUGS = 5;
31
31
  var DAY_SECONDS = SECONDS_PER_DAY;
32
+ var DEFAULT_CREATE_GAS_LIMIT = 13500000n;
32
33
  var DEFAULT_V3_START_TICK = 175e3;
33
34
  var DEFAULT_V3_END_TICK = 225e3;
34
35
  var DEFAULT_V3_NUM_POSITIONS = 15;
@@ -46,6 +47,17 @@ var DEFAULT_V4_INITIAL_VOTING_DELAY = 7200;
46
47
  var DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400;
47
48
  var DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n;
48
49
  var DEFAULT_V4_YEARLY_MINT_RATE = viem.parseEther("0.02");
50
+ var DEFAULT_MULTICURVE_LOWER_TICKS = [-202100, -183100, -167e3];
51
+ var DEFAULT_MULTICURVE_UPPER_TICKS = [-188200, -172100, -156e3];
52
+ var DEFAULT_MULTICURVE_NUM_POSITIONS = [11, 11, 11];
53
+ var DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = [
54
+ viem.parseEther("0.05"),
55
+ // 5% for LOW tier
56
+ viem.parseEther("0.125"),
57
+ // 12.5% for MEDIUM tier
58
+ viem.parseEther("0.2")
59
+ // 20% for HIGH tier
60
+ ];
49
61
  var MIN_SQRT_RATIO = 4295128739n;
50
62
  var MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n;
51
63
  var BASIS_POINTS = 1e4;
@@ -66,8 +78,13 @@ exports.BASIS_POINTS = BASIS_POINTS;
66
78
  exports.DAY_SECONDS = DAY_SECONDS;
67
79
  exports.DEAD_ADDRESS = DEAD_ADDRESS;
68
80
  exports.DEFAULT_AUCTION_DURATION = DEFAULT_AUCTION_DURATION;
81
+ exports.DEFAULT_CREATE_GAS_LIMIT = DEFAULT_CREATE_GAS_LIMIT;
69
82
  exports.DEFAULT_EPOCH_LENGTH = DEFAULT_EPOCH_LENGTH;
70
83
  exports.DEFAULT_LOCK_DURATION = DEFAULT_LOCK_DURATION;
84
+ exports.DEFAULT_MULTICURVE_LOWER_TICKS = DEFAULT_MULTICURVE_LOWER_TICKS;
85
+ exports.DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES;
86
+ exports.DEFAULT_MULTICURVE_NUM_POSITIONS = DEFAULT_MULTICURVE_NUM_POSITIONS;
87
+ exports.DEFAULT_MULTICURVE_UPPER_TICKS = DEFAULT_MULTICURVE_UPPER_TICKS;
71
88
  exports.DEFAULT_PD_SLUGS = DEFAULT_PD_SLUGS;
72
89
  exports.DEFAULT_V3_END_TICK = DEFAULT_V3_END_TICK;
73
90
  exports.DEFAULT_V3_FEE = DEFAULT_V3_FEE;
@@ -98,5 +115,5 @@ exports.SECONDS_PER_YEAR = SECONDS_PER_YEAR;
98
115
  exports.TICK_SPACINGS = TICK_SPACINGS;
99
116
  exports.WAD = WAD;
100
117
  exports.ZERO_ADDRESS = ZERO_ADDRESS;
101
- //# sourceMappingURL=chunk-ER42VG7H.js.map
102
- //# sourceMappingURL=chunk-ER42VG7H.js.map
118
+ //# sourceMappingURL=chunk-PH2KXREH.js.map
119
+ //# sourceMappingURL=chunk-PH2KXREH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"names":["parseEther"],"mappings":";;;;;AAGO,IAAM,MAAM,GAAA,IAAO;AACnB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AAGrB,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,GAAA,EAAK,GAAA;AAAA;AAAA,EACL,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,IAAA,EAAM;AAAA;AACR;AAGO,IAAM,aAAA,GAAgB;AAAA,EAC3B,GAAA,EAAK,CAAA;AAAA,EACL,GAAA,EAAK,EAAA;AAAA,EACL,GAAA,EAAM,EAAA;AAAA,EACN,GAAA,EAAO;AACT;AAGO,IAAM,eAAA,GAAkB;AACxB,IAAM,mBAAmB,GAAA,GAAM;AAG/B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,2BAA2B,CAAA,GAAI;AACrC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,gBAAA,GAAmB;AACzB,IAAM,WAAA,GAAc;AAGpB,IAAM,wBAAA,GAA2B;AAGjC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAA,GAA2B;AACjC,IAAM,cAAA,GAAiB;AACvB,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8B,OAAO,gBAAgB;AAC3D,IAAM,yBAAA,GAA4BA,gBAAW,YAAY;AACzD,IAAM,6BAAA,GAAgCA,gBAAW,WAAW;AAC5D,IAAM,2BAAA,GAA8BA,gBAAW,MAAM;AACrD,IAAM,mBAAA,GAAsBA,gBAAW,SAAS;AAChD,IAAM,+BAAA,GAAkCA,gBAAW,MAAM;AAGzD,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8BA,gBAAW,MAAM;AAKrD,IAAM,8BAAA,GAAiC,CAAC,OAAA,EAAU,OAAA,EAAU,MAAQ;AACpE,IAAM,8BAAA,GAAiC,CAAC,OAAA,EAAU,OAAA,EAAU,MAAQ;AACpE,IAAM,gCAAA,GAAmC,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE;AACpD,IAAM,oCAAA,GAAuC;AAAA,EAClDA,gBAAW,MAAM,CAAA;AAAA;AAAA,EACjBA,gBAAW,OAAO,CAAA;AAAA;AAAA,EAClBA,gBAAW,KAAK;AAAA;AAClB;AAGO,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAGvB,IAAM,YAAA,GAAe;AAGrB,IAAM,SAAA,GAAY,OAAO,KAAM;AAC/B,IAAM,aAAA,GAAgB,MAAA;AAAA,EAC1B,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK;AAAA;AACR;AAGO,IAAM,gBAAA,GAAmB;AACzB,IAAM,eAAA,GAAkB","file":"chunk-PH2KXREH.js","sourcesContent":["import { Address, parseEther } from 'viem'\n\n// Common constants\nexport const WAD = 10n ** 18n\nexport const DEAD_ADDRESS = '0x000000000000000000000000000000000000dEaD' as Address\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address\n\n// Fee tiers\nexport const FEE_TIERS = {\n LOWEST: 100, // 0.01%\n LOW: 500, // 0.05%\n MEDIUM: 3000, // 0.30%\n HIGH: 10000 // 1.00%\n} as const\n\n// Tick spacings for different fee tiers\nexport const TICK_SPACINGS = {\n 100: 1,\n 500: 10,\n 3000: 60,\n 10000: 200\n} as const\n\n// Time constants\nexport const SECONDS_PER_DAY = 86400\nexport const SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY\n\n// Default values\nexport const DEFAULT_EPOCH_LENGTH = 43200 // 12 hours in seconds (matching V4 SDK)\nexport const DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY // 7 days\nexport const DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR // 1 year\nexport const DEFAULT_PD_SLUGS = 5 // Default price discovery slugs\nexport const DAY_SECONDS = SECONDS_PER_DAY // Alias for consistency\n\n// Default gas limit to fall back on when create() simulations do not return a value\nexport const DEFAULT_CREATE_GAS_LIMIT = 13_500_000n\n\n// V3 Default parameters\nexport const DEFAULT_V3_START_TICK = 175000\nexport const DEFAULT_V3_END_TICK = 225000\nexport const DEFAULT_V3_NUM_POSITIONS = 15\nexport const DEFAULT_V3_FEE = 10000 // 1% fee tier\nexport const DEFAULT_V3_INITIAL_VOTING_DELAY = 172800 // 2 days\nexport const DEFAULT_V3_INITIAL_VOTING_PERIOD = 1209600 // 14 days\nexport const DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD = 0n\nexport const DEFAULT_V3_VESTING_DURATION = BigInt(SECONDS_PER_YEAR)\nexport const DEFAULT_V3_INITIAL_SUPPLY = parseEther('1000000000') // 1 billion tokens\nexport const DEFAULT_V3_NUM_TOKENS_TO_SELL = parseEther('900000000') // 900 million tokens\nexport const DEFAULT_V3_YEARLY_MINT_RATE = parseEther('0.02') // 2% yearly mint rate\nexport const DEFAULT_V3_PRE_MINT = parseEther('9000000') // 9 million tokens (0.9%)\nexport const DEFAULT_V3_MAX_SHARE_TO_BE_SOLD = parseEther('0.35') // 35%\n\n// V4 Default parameters\nexport const DEFAULT_V4_INITIAL_VOTING_DELAY = 7200 // 2 hours\nexport const DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400 // 14 hours\nexport const DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n\nexport const DEFAULT_V4_YEARLY_MINT_RATE = parseEther('0.02') // 2% yearly mint rate\n\n// V4 Multicurve Default Tick Ranges\n// Based on market cap tiers: LOW ($7.5k -> $30k), MEDIUM ($50k -> $150k), HIGH ($250k -> $750k)\n// Calculated for 1B token supply, $4500 numeraire (e.g., WETH on Base)\nexport const DEFAULT_MULTICURVE_LOWER_TICKS = [-202_100, -183_100, -167_000] as const\nexport const DEFAULT_MULTICURVE_UPPER_TICKS = [-188_200, -172_100, -156_000] as const\nexport const DEFAULT_MULTICURVE_NUM_POSITIONS = [11, 11, 11] as const\nexport const DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = [\n parseEther('0.05'), // 5% for LOW tier\n parseEther('0.125'), // 12.5% for MEDIUM tier\n parseEther('0.2'), // 20% for HIGH tier\n] as const\n\n// Price bounds\nexport const MIN_SQRT_RATIO = 4295128739n\nexport const MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n\n\n// Basis points\nexport const BASIS_POINTS = 10000\n\n// V4 Hook Flags for Doppler\nexport const FLAG_MASK = BigInt(0x3fff)\nexport const DOPPLER_FLAGS = BigInt(\n (1 << 13) | // BEFORE_INITIALIZE_FLAG\n (1 << 12) | // AFTER_INITIALIZE_FLAG \n (1 << 11) | // BEFORE_ADD_LIQUIDITY_FLAG\n (1 << 7) | // BEFORE_SWAP_FLAG\n (1 << 6) | // AFTER_SWAP_FLAG\n (1 << 5) // BEFORE_DONATE_FLAG\n)\n\n// V4 Dynamic Fee Flag\nexport const DYNAMIC_FEE_FLAG = 0x800000 // 8388608 in decimal\nexport const FEE_AMOUNT_MASK = 0xFFFFFF // Mask to extract actual fee from dynamic fee\n"]}
@@ -0,0 +1,107 @@
1
+ import { MIN_TICK, MAX_TICK } from './chunk-KDT76YQE.mjs';
2
+ import { DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_MULTICURVE_LOWER_TICKS, FEE_TIERS, TICK_SPACINGS, WAD } from './chunk-QKO2FZGN.mjs';
3
+
4
+ // src/builders/shared.ts
5
+ function computeTicks(priceRange, tickSpacing) {
6
+ const startTick = Math.floor(Math.log(priceRange.startPrice) / Math.log(1.0001) / tickSpacing) * tickSpacing;
7
+ const endTick = Math.ceil(Math.log(priceRange.endPrice) / Math.log(1.0001) / tickSpacing) * tickSpacing;
8
+ return { startTick, endTick };
9
+ }
10
+ var MARKET_CAP_PRESET_ORDER = ["low", "medium", "high"];
11
+ var MARKET_CAP_PRESETS = {
12
+ low: {
13
+ tickLower: DEFAULT_MULTICURVE_LOWER_TICKS[0],
14
+ tickUpper: DEFAULT_MULTICURVE_UPPER_TICKS[0],
15
+ numPositions: DEFAULT_MULTICURVE_NUM_POSITIONS[0],
16
+ shares: DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES[0]
17
+ },
18
+ medium: {
19
+ tickLower: DEFAULT_MULTICURVE_LOWER_TICKS[1],
20
+ tickUpper: DEFAULT_MULTICURVE_UPPER_TICKS[1],
21
+ numPositions: DEFAULT_MULTICURVE_NUM_POSITIONS[1],
22
+ shares: DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES[1]
23
+ },
24
+ high: {
25
+ tickLower: DEFAULT_MULTICURVE_LOWER_TICKS[2],
26
+ tickUpper: DEFAULT_MULTICURVE_UPPER_TICKS[2],
27
+ numPositions: DEFAULT_MULTICURVE_NUM_POSITIONS[2],
28
+ shares: DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES[2]
29
+ }
30
+ };
31
+ function buildCurvesFromPresets(params) {
32
+ const fee = params?.fee ?? FEE_TIERS.LOW;
33
+ const tickSpacing = params?.tickSpacing ?? TICK_SPACINGS[fee];
34
+ if (tickSpacing === void 0) {
35
+ throw new Error("tickSpacing must be provided when using a custom fee tier");
36
+ }
37
+ const requestedPresets = params?.presets ?? [...MARKET_CAP_PRESET_ORDER];
38
+ const uniquePresets = [];
39
+ for (const preset of requestedPresets) {
40
+ if (!(preset in MARKET_CAP_PRESETS)) {
41
+ throw new Error(`Unsupported market cap preset: ${preset}`);
42
+ }
43
+ if (!uniquePresets.includes(preset)) {
44
+ uniquePresets.push(preset);
45
+ }
46
+ }
47
+ if (uniquePresets.length === 0) {
48
+ throw new Error("At least one market cap preset must be provided");
49
+ }
50
+ const presetCurves = uniquePresets.map((preset) => {
51
+ const base = MARKET_CAP_PRESETS[preset];
52
+ const override = params?.overrides?.[preset];
53
+ return {
54
+ tickLower: override?.tickLower ?? base.tickLower,
55
+ tickUpper: override?.tickUpper ?? base.tickUpper,
56
+ numPositions: override?.numPositions ?? base.numPositions,
57
+ shares: override?.shares ?? base.shares
58
+ };
59
+ });
60
+ let totalShares = presetCurves.reduce((acc, curve) => {
61
+ if (curve.shares <= 0n) {
62
+ throw new Error("Preset shares must be greater than zero");
63
+ }
64
+ return acc + curve.shares;
65
+ }, 0n);
66
+ if (totalShares > WAD) {
67
+ throw new Error("Total preset shares cannot exceed 100% (1e18)");
68
+ }
69
+ const curves = [...presetCurves];
70
+ if (totalShares < WAD) {
71
+ const remainder = WAD - totalShares;
72
+ const lastCurve = curves[curves.length - 1];
73
+ let fillerTickLower = lastCurve?.tickUpper ?? 0;
74
+ let fillerNumPositions = lastCurve?.numPositions ?? 1;
75
+ if (fillerNumPositions <= 0) {
76
+ fillerNumPositions = 1;
77
+ }
78
+ const minTickAllowed = Math.ceil(MIN_TICK / tickSpacing) * tickSpacing;
79
+ const rawMaxTick = Math.floor(MAX_TICK / tickSpacing) * tickSpacing;
80
+ const maxTickAllowed = rawMaxTick - tickSpacing;
81
+ fillerTickLower = Math.max(fillerTickLower, minTickAllowed);
82
+ let fillerTickUpper = fillerTickLower + fillerNumPositions * tickSpacing;
83
+ if (fillerTickUpper > maxTickAllowed) {
84
+ fillerTickUpper = maxTickAllowed;
85
+ fillerTickLower = Math.min(fillerTickLower, maxTickAllowed - tickSpacing);
86
+ }
87
+ if (fillerTickUpper <= fillerTickLower) {
88
+ fillerTickLower = Math.max(minTickAllowed, maxTickAllowed - tickSpacing);
89
+ fillerTickUpper = fillerTickLower + tickSpacing;
90
+ }
91
+ curves.push({
92
+ tickLower: fillerTickLower,
93
+ tickUpper: fillerTickUpper,
94
+ numPositions: fillerNumPositions,
95
+ shares: remainder
96
+ });
97
+ totalShares = WAD;
98
+ }
99
+ if (totalShares !== WAD) {
100
+ throw new Error("Failed to normalize preset shares to 100%");
101
+ }
102
+ return { fee, tickSpacing, curves };
103
+ }
104
+
105
+ export { MARKET_CAP_PRESETS, MARKET_CAP_PRESET_ORDER, buildCurvesFromPresets, computeTicks };
106
+ //# sourceMappingURL=chunk-Q5ERW5ZW.mjs.map
107
+ //# sourceMappingURL=chunk-Q5ERW5ZW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/builders/shared.ts"],"names":[],"mappings":";;;;AA4GO,SAAS,YAAA,CAAa,YAAwB,WAAA,EAAgC;AACnF,EAAA,MAAM,SAAA,GACJ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,GAAI,WAAW,CAAA,GAC3E,WAAA;AACF,EAAA,MAAM,OAAA,GACJ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,GAAI,WAAW,CAAA,GACxE,WAAA;AACF,EAAA,OAAO,EAAE,WAAW,OAAA,EAAQ;AAC9B;AAEO,IAAM,uBAAA,GAA0B,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM;AASxD,IAAM,kBAAA,GAA+E;AAAA,EAC1F,GAAA,EAAK;AAAA,IACH,SAAA,EAAW,+BAA+B,CAAC,CAAA;AAAA,IAC3C,SAAA,EAAW,+BAA+B,CAAC,CAAA;AAAA,IAC3C,YAAA,EAAc,iCAAiC,CAAC,CAAA;AAAA,IAChD,MAAA,EAAQ,qCAAqC,CAAC;AAAA,GAChD;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,+BAA+B,CAAC,CAAA;AAAA,IAC3C,SAAA,EAAW,+BAA+B,CAAC,CAAA;AAAA,IAC3C,YAAA,EAAc,iCAAiC,CAAC,CAAA;AAAA,IAChD,MAAA,EAAQ,qCAAqC,CAAC;AAAA,GAChD;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW,+BAA+B,CAAC,CAAA;AAAA,IAC3C,SAAA,EAAW,+BAA+B,CAAC,CAAA;AAAA,IAC3C,YAAA,EAAc,iCAAiC,CAAC,CAAA;AAAA,IAChD,MAAA,EAAQ,qCAAqC,CAAC;AAAA;AAElD;AAiBO,SAAS,uBAAuB,MAAA,EAKmC;AACxE,EAAA,MAAM,GAAA,GAAM,MAAA,EAAQ,GAAA,IAAO,SAAA,CAAU,GAAA;AACrC,EAAA,MAAM,WAAA,GACJ,MAAA,EAAQ,WAAA,IACP,aAAA,CAAyC,GAAG,CAAA;AAE/C,EAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,EAC7E;AAEA,EAAA,MAAM,gBAAA,GAAmB,MAAA,EAAQ,OAAA,IAAW,CAAC,GAAG,uBAAuB,CAAA;AACvE,EAAA,MAAM,gBAA6C,EAAC;AACpD,EAAA,KAAA,MAAW,UAAU,gBAAA,EAAkB;AACrC,IAAA,IAAI,EAAE,UAAU,kBAAA,CAAA,EAAqB;AACnC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,MAAM,CAAA,CAAE,CAAA;AAAA,IAC5D;AACA,IAAA,IAAI,CAAC,aAAA,CAAc,QAAA,CAAS,MAAM,CAAA,EAAG;AACnC,MAAA,aAAA,CAAc,KAAK,MAAM,CAAA;AAAA,IAC3B;AAAA,EACF;AAEA,EAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,IAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,EACnE;AAEA,EAAA,MAAM,YAAA,GAAe,aAAA,CAAc,GAAA,CAAI,CAAC,MAAA,KAAW;AACjD,IAAA,MAAM,IAAA,GAAO,mBAAmB,MAAM,CAAA;AACtC,IAAA,MAAM,QAAA,GAAW,MAAA,EAAQ,SAAA,GAAY,MAAM,CAAA;AAC3C,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,QAAA,EAAU,SAAA,IAAa,IAAA,CAAK,SAAA;AAAA,MACvC,SAAA,EAAW,QAAA,EAAU,SAAA,IAAa,IAAA,CAAK,SAAA;AAAA,MACvC,YAAA,EAAc,QAAA,EAAU,YAAA,IAAgB,IAAA,CAAK,YAAA;AAAA,MAC7C,MAAA,EAAQ,QAAA,EAAU,MAAA,IAAU,IAAA,CAAK;AAAA,KACnC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,WAAA,GAAc,YAAA,CAAa,MAAA,CAAO,CAAC,KAAK,KAAA,KAAU;AACpD,IAAA,IAAI,KAAA,CAAM,UAAU,EAAA,EAAI;AACtB,MAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,IAC3D;AACA,IAAA,OAAO,MAAM,KAAA,CAAM,MAAA;AAAA,EACrB,GAAG,EAAE,CAAA;AAEL,EAAA,IAAI,cAAc,GAAA,EAAK;AACrB,IAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,EACjE;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,YAAY,CAAA;AAG/B,EAAA,IAAI,cAAc,GAAA,EAAK;AACrB,IAAA,MAAM,YAAY,GAAA,GAAM,WAAA;AACxB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AAC1C,IAAA,IAAI,eAAA,GAAkB,WAAW,SAAA,IAAa,CAAA;AAC9C,IAAA,IAAI,kBAAA,GAAqB,WAAW,YAAA,IAAgB,CAAA;AAEpD,IAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,MAAA,kBAAA,GAAqB,CAAA;AAAA,IACvB;AAEA,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,IAAA,CAAK,QAAA,GAAW,WAAW,CAAA,GAAI,WAAA;AAC3D,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,WAAW,CAAA,GAAI,WAAA;AACxD,IAAA,MAAM,iBAAiB,UAAA,GAAa,WAAA;AAEpC,IAAA,eAAA,GAAkB,IAAA,CAAK,GAAA,CAAI,eAAA,EAAiB,cAAc,CAAA;AAC1D,IAAA,IAAI,eAAA,GAAkB,kBAAkB,kBAAA,GAAqB,WAAA;AAE7D,IAAA,IAAI,kBAAkB,cAAA,EAAgB;AACpC,MAAA,eAAA,GAAkB,cAAA;AAClB,MAAA,eAAA,GAAkB,IAAA,CAAK,GAAA,CAAI,eAAA,EAAiB,cAAA,GAAiB,WAAW,CAAA;AAAA,IAC1E;AAEA,IAAA,IAAI,mBAAmB,eAAA,EAAiB;AACtC,MAAA,eAAA,GAAkB,IAAA,CAAK,GAAA,CAAI,cAAA,EAAgB,cAAA,GAAiB,WAAW,CAAA;AACvE,MAAA,eAAA,GAAkB,eAAA,GAAkB,WAAA;AAAA,IACtC;AAEA,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,SAAA,EAAW,eAAA;AAAA,MACX,SAAA,EAAW,eAAA;AAAA,MACX,YAAA,EAAc,kBAAA;AAAA,MACd,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,WAAA,GAAc,GAAA;AAAA,EAChB;AAEA,EAAA,IAAI,gBAAgB,GAAA,EAAK;AACvB,IAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,EAC7D;AAEA,EAAA,OAAO,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAO;AACpC","file":"chunk-Q5ERW5ZW.mjs","sourcesContent":["import type { Address } from 'viem'\nimport {\n DEFAULT_MULTICURVE_LOWER_TICKS,\n DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES,\n DEFAULT_MULTICURVE_NUM_POSITIONS,\n DEFAULT_MULTICURVE_UPPER_TICKS,\n FEE_TIERS,\n TICK_SPACINGS,\n WAD,\n} from '../constants'\nimport { MAX_TICK, MIN_TICK } from '../utils'\nimport type {\n PriceRange,\n TickRange,\n MulticurveMarketCapPreset,\n GovernanceOption,\n MigrationConfig,\n} from '../types'\nimport type { SupportedChainId } from '../addresses'\n\n// ============================================================================\n// Common Builder Interface\n// ============================================================================\n\n/**\n * Common interface shared by all auction builders.\n * \n * Defines the methods that all builders (Static, Dynamic, Multicurve) implement.\n * Useful for documentation and ensuring API consistency across builders.\n * \n * @template C - The chain ID type\n */\nexport interface BaseAuctionBuilder<C extends SupportedChainId> {\n /** The chain ID this builder is configured for */\n readonly chainId: C\n\n /**\n * Configure the token to be created.\n * Supports standard ERC20 or Doppler404 token types.\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\n /**\n * Configure the token sale parameters.\n * @param params.initialSupply - Total token supply to mint\n * @param params.numTokensToSell - Number of tokens allocated for the bonding curve\n * @param params.numeraire - The quote token address (e.g., WETH)\n */\n saleConfig(params: {\n initialSupply: bigint\n numTokensToSell: bigint\n numeraire: Address\n }): this\n\n /**\n * Configure token vesting for team/investor allocations.\n * Pass undefined or omit to disable vesting.\n */\n withVesting(params?: {\n duration?: bigint\n cliffDuration?: number\n recipients?: Address[]\n amounts?: bigint[]\n }): this\n\n /**\n * Configure governance for the token.\n * @param params - Use { type: 'default' }, { type: 'noOp' }, or { type: 'custom', ... }\n */\n withGovernance(params: GovernanceOption<C>): this\n\n /**\n * Configure post-auction liquidity migration.\n * @param migration - Migration target (uniswapV2, uniswapV3, uniswapV4, or noOp)\n */\n withMigration(migration: MigrationConfig): this\n\n /**\n * Set the user address (token creator/owner).\n * Required for build().\n */\n withUserAddress(address: Address): this\n\n /**\n * Set the integrator address for fee attribution.\n * Defaults to zero address if not provided.\n */\n withIntegrator(address?: Address): this\n\n /**\n * Override the default gas limit for the create transaction.\n */\n withGasLimit(gas?: bigint): this\n\n // Module address overrides\n withTokenFactory(address: Address): this\n withAirlock(address: Address): this\n withGovernanceFactory(address: Address): this\n withV2Migrator(address: Address): this\n withV3Migrator(address: Address): this\n withV4Migrator(address: Address): this\n withNoOpMigrator(address: Address): this\n}\n\nexport function 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\nexport const MARKET_CAP_PRESET_ORDER = ['low', 'medium', 'high'] as const satisfies readonly MulticurveMarketCapPreset[]\n\nexport type MarketCapPresetConfig = {\n tickLower: number\n tickUpper: number\n numPositions: number\n shares: bigint\n}\n\nexport const MARKET_CAP_PRESETS: Record<MulticurveMarketCapPreset, MarketCapPresetConfig> = {\n low: {\n tickLower: DEFAULT_MULTICURVE_LOWER_TICKS[0],\n tickUpper: DEFAULT_MULTICURVE_UPPER_TICKS[0],\n numPositions: DEFAULT_MULTICURVE_NUM_POSITIONS[0],\n shares: DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES[0],\n },\n medium: {\n tickLower: DEFAULT_MULTICURVE_LOWER_TICKS[1],\n tickUpper: DEFAULT_MULTICURVE_UPPER_TICKS[1],\n numPositions: DEFAULT_MULTICURVE_NUM_POSITIONS[1],\n shares: DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES[1],\n },\n high: {\n tickLower: DEFAULT_MULTICURVE_LOWER_TICKS[2],\n tickUpper: DEFAULT_MULTICURVE_UPPER_TICKS[2],\n numPositions: DEFAULT_MULTICURVE_NUM_POSITIONS[2],\n shares: DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES[2],\n },\n}\n\nexport type MarketCapPresetOverrides = Partial<\n Record<\n MulticurveMarketCapPreset,\n {\n tickLower?: number\n tickUpper?: number\n numPositions?: number\n shares?: bigint\n }\n >\n>\n\n/**\n * Helper to build curves from market cap presets with optional filler curve\n */\nexport function buildCurvesFromPresets(params: {\n fee?: number\n tickSpacing?: number\n presets?: MulticurveMarketCapPreset[]\n overrides?: MarketCapPresetOverrides\n}): { fee: number; tickSpacing: number; curves: MarketCapPresetConfig[] } {\n const fee = params?.fee ?? FEE_TIERS.LOW\n const tickSpacing =\n params?.tickSpacing ??\n (TICK_SPACINGS as Record<number, number>)[fee]\n\n if (tickSpacing === undefined) {\n throw new Error('tickSpacing must be provided when using a custom fee tier')\n }\n\n const requestedPresets = params?.presets ?? [...MARKET_CAP_PRESET_ORDER]\n const uniquePresets: MulticurveMarketCapPreset[] = []\n for (const preset of requestedPresets) {\n if (!(preset in MARKET_CAP_PRESETS)) {\n throw new Error(`Unsupported market cap preset: ${preset}`)\n }\n if (!uniquePresets.includes(preset)) {\n uniquePresets.push(preset)\n }\n }\n\n if (uniquePresets.length === 0) {\n throw new Error('At least one market cap preset must be provided')\n }\n\n const presetCurves = uniquePresets.map((preset) => {\n const base = MARKET_CAP_PRESETS[preset]\n const override = params?.overrides?.[preset]\n return {\n tickLower: override?.tickLower ?? base.tickLower,\n tickUpper: override?.tickUpper ?? base.tickUpper,\n numPositions: override?.numPositions ?? base.numPositions,\n shares: override?.shares ?? base.shares,\n }\n })\n\n let totalShares = presetCurves.reduce((acc, curve) => {\n if (curve.shares <= 0n) {\n throw new Error('Preset shares must be greater than zero')\n }\n return acc + curve.shares\n }, 0n)\n\n if (totalShares > WAD) {\n throw new Error('Total preset shares cannot exceed 100% (1e18)')\n }\n\n const curves = [...presetCurves]\n\n // Add filler curve if shares don't sum to 100%\n if (totalShares < WAD) {\n const remainder = WAD - totalShares\n const lastCurve = curves[curves.length - 1]\n let fillerTickLower = lastCurve?.tickUpper ?? 0\n let fillerNumPositions = lastCurve?.numPositions ?? 1\n\n if (fillerNumPositions <= 0) {\n fillerNumPositions = 1\n }\n\n const minTickAllowed = Math.ceil(MIN_TICK / tickSpacing) * tickSpacing\n const rawMaxTick = Math.floor(MAX_TICK / tickSpacing) * tickSpacing\n const maxTickAllowed = rawMaxTick - tickSpacing\n\n fillerTickLower = Math.max(fillerTickLower, minTickAllowed)\n let fillerTickUpper = fillerTickLower + fillerNumPositions * tickSpacing\n\n if (fillerTickUpper > maxTickAllowed) {\n fillerTickUpper = maxTickAllowed\n fillerTickLower = Math.min(fillerTickLower, maxTickAllowed - tickSpacing)\n }\n\n if (fillerTickUpper <= fillerTickLower) {\n fillerTickLower = Math.max(minTickAllowed, maxTickAllowed - tickSpacing)\n fillerTickUpper = fillerTickLower + tickSpacing\n }\n\n curves.push({\n tickLower: fillerTickLower,\n tickUpper: fillerTickUpper,\n numPositions: fillerNumPositions,\n shares: remainder,\n })\n\n totalShares = WAD\n }\n\n if (totalShares !== WAD) {\n throw new Error('Failed to normalize preset shares to 100%')\n }\n\n return { fee, tickSpacing, curves }\n}\n"]}
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var viem = require('viem');
4
+
5
+ // src/utils/poolKey.ts
6
+ function computePoolId(poolKey) {
7
+ const encoded = viem.encodeAbiParameters(
8
+ [
9
+ { name: "currency0", type: "address" },
10
+ { name: "currency1", type: "address" },
11
+ { name: "fee", type: "uint24" },
12
+ { name: "tickSpacing", type: "int24" },
13
+ { name: "hooks", type: "address" }
14
+ ],
15
+ [
16
+ poolKey.currency0,
17
+ poolKey.currency1,
18
+ poolKey.fee,
19
+ poolKey.tickSpacing,
20
+ poolKey.hooks
21
+ ]
22
+ );
23
+ return viem.keccak256(encoded);
24
+ }
25
+
26
+ exports.computePoolId = computePoolId;
27
+ //# sourceMappingURL=chunk-Q7YNBSVH.js.map
28
+ //# sourceMappingURL=chunk-Q7YNBSVH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/poolKey.ts"],"names":["encodeAbiParameters","keccak256"],"mappings":";;;;;AAYO,SAAS,cAAc,OAAA,EAAyB;AAGrD,EAAA,MAAM,OAAA,GAAUA,wBAAA;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,OAAOC,eAAU,OAAO,CAAA;AAC1B","file":"chunk-Q7YNBSVH.js","sourcesContent":["import { encodeAbiParameters, keccak256, type Address, 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"]}
@@ -23,10 +23,11 @@ var TICK_SPACINGS = {
23
23
  var SECONDS_PER_DAY = 86400;
24
24
  var SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY;
25
25
  var DEFAULT_EPOCH_LENGTH = 43200;
26
- var DEFAULT_AUCTION_DURATION = 7;
26
+ var DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY;
27
27
  var DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR;
28
28
  var DEFAULT_PD_SLUGS = 5;
29
29
  var DAY_SECONDS = SECONDS_PER_DAY;
30
+ var DEFAULT_CREATE_GAS_LIMIT = 13500000n;
30
31
  var DEFAULT_V3_START_TICK = 175e3;
31
32
  var DEFAULT_V3_END_TICK = 225e3;
32
33
  var DEFAULT_V3_NUM_POSITIONS = 15;
@@ -44,6 +45,17 @@ var DEFAULT_V4_INITIAL_VOTING_DELAY = 7200;
44
45
  var DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400;
45
46
  var DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n;
46
47
  var DEFAULT_V4_YEARLY_MINT_RATE = parseEther("0.02");
48
+ var DEFAULT_MULTICURVE_LOWER_TICKS = [-202100, -183100, -167e3];
49
+ var DEFAULT_MULTICURVE_UPPER_TICKS = [-188200, -172100, -156e3];
50
+ var DEFAULT_MULTICURVE_NUM_POSITIONS = [11, 11, 11];
51
+ var DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = [
52
+ parseEther("0.05"),
53
+ // 5% for LOW tier
54
+ parseEther("0.125"),
55
+ // 12.5% for MEDIUM tier
56
+ parseEther("0.2")
57
+ // 20% for HIGH tier
58
+ ];
47
59
  var MIN_SQRT_RATIO = 4295128739n;
48
60
  var MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n;
49
61
  var BASIS_POINTS = 1e4;
@@ -60,6 +72,6 @@ var DOPPLER_FLAGS = BigInt(
60
72
  var DYNAMIC_FEE_FLAG = 8388608;
61
73
  var FEE_AMOUNT_MASK = 16777215;
62
74
 
63
- export { BASIS_POINTS, DAY_SECONDS, DEAD_ADDRESS, DEFAULT_AUCTION_DURATION, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, DOPPLER_FLAGS, DYNAMIC_FEE_FLAG, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, MAX_SQRT_RATIO, MIN_SQRT_RATIO, SECONDS_PER_DAY, SECONDS_PER_YEAR, TICK_SPACINGS, WAD, ZERO_ADDRESS };
64
- //# sourceMappingURL=chunk-T644D54P.mjs.map
65
- //# sourceMappingURL=chunk-T644D54P.mjs.map
75
+ export { BASIS_POINTS, DAY_SECONDS, DEAD_ADDRESS, DEFAULT_AUCTION_DURATION, DEFAULT_CREATE_GAS_LIMIT, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, DOPPLER_FLAGS, DYNAMIC_FEE_FLAG, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, MAX_SQRT_RATIO, MIN_SQRT_RATIO, SECONDS_PER_DAY, SECONDS_PER_YEAR, TICK_SPACINGS, WAD, ZERO_ADDRESS };
76
+ //# sourceMappingURL=chunk-QKO2FZGN.mjs.map
77
+ //# sourceMappingURL=chunk-QKO2FZGN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"names":[],"mappings":";;;AAGO,IAAM,MAAM,GAAA,IAAO;AACnB,IAAM,YAAA,GAAe;AACrB,IAAM,YAAA,GAAe;AAGrB,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,GAAA,EAAK,GAAA;AAAA;AAAA,EACL,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,IAAA,EAAM;AAAA;AACR;AAGO,IAAM,aAAA,GAAgB;AAAA,EAC3B,GAAA,EAAK,CAAA;AAAA,EACL,GAAA,EAAK,EAAA;AAAA,EACL,GAAA,EAAM,EAAA;AAAA,EACN,GAAA,EAAO;AACT;AAGO,IAAM,eAAA,GAAkB;AACxB,IAAM,mBAAmB,GAAA,GAAM;AAG/B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,2BAA2B,CAAA,GAAI;AACrC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,gBAAA,GAAmB;AACzB,IAAM,WAAA,GAAc;AAGpB,IAAM,wBAAA,GAA2B;AAGjC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAA,GAA2B;AACjC,IAAM,cAAA,GAAiB;AACvB,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8B,OAAO,gBAAgB;AAC3D,IAAM,yBAAA,GAA4B,WAAW,YAAY;AACzD,IAAM,6BAAA,GAAgC,WAAW,WAAW;AAC5D,IAAM,2BAAA,GAA8B,WAAW,MAAM;AACrD,IAAM,mBAAA,GAAsB,WAAW,SAAS;AAChD,IAAM,+BAAA,GAAkC,WAAW,MAAM;AAGzD,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8B,WAAW,MAAM;AAKrD,IAAM,8BAAA,GAAiC,CAAC,OAAA,EAAU,OAAA,EAAU,MAAQ;AACpE,IAAM,8BAAA,GAAiC,CAAC,OAAA,EAAU,OAAA,EAAU,MAAQ;AACpE,IAAM,gCAAA,GAAmC,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE;AACpD,IAAM,oCAAA,GAAuC;AAAA,EAClD,WAAW,MAAM,CAAA;AAAA;AAAA,EACjB,WAAW,OAAO,CAAA;AAAA;AAAA,EAClB,WAAW,KAAK;AAAA;AAClB;AAGO,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GAAiB;AAGvB,IAAM,YAAA,GAAe;AAGrB,IAAM,SAAA,GAAY,OAAO,KAAM;AAC/B,IAAM,aAAA,GAAgB,MAAA;AAAA,EAC1B,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK;AAAA;AACR;AAGO,IAAM,gBAAA,GAAmB;AACzB,IAAM,eAAA,GAAkB","file":"chunk-QKO2FZGN.mjs","sourcesContent":["import { Address, parseEther } from 'viem'\n\n// Common constants\nexport const WAD = 10n ** 18n\nexport const DEAD_ADDRESS = '0x000000000000000000000000000000000000dEaD' as Address\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address\n\n// Fee tiers\nexport const FEE_TIERS = {\n LOWEST: 100, // 0.01%\n LOW: 500, // 0.05%\n MEDIUM: 3000, // 0.30%\n HIGH: 10000 // 1.00%\n} as const\n\n// Tick spacings for different fee tiers\nexport const TICK_SPACINGS = {\n 100: 1,\n 500: 10,\n 3000: 60,\n 10000: 200\n} as const\n\n// Time constants\nexport const SECONDS_PER_DAY = 86400\nexport const SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY\n\n// Default values\nexport const DEFAULT_EPOCH_LENGTH = 43200 // 12 hours in seconds (matching V4 SDK)\nexport const DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY // 7 days\nexport const DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR // 1 year\nexport const DEFAULT_PD_SLUGS = 5 // Default price discovery slugs\nexport const DAY_SECONDS = SECONDS_PER_DAY // Alias for consistency\n\n// Default gas limit to fall back on when create() simulations do not return a value\nexport const DEFAULT_CREATE_GAS_LIMIT = 13_500_000n\n\n// V3 Default parameters\nexport const DEFAULT_V3_START_TICK = 175000\nexport const DEFAULT_V3_END_TICK = 225000\nexport const DEFAULT_V3_NUM_POSITIONS = 15\nexport const DEFAULT_V3_FEE = 10000 // 1% fee tier\nexport const DEFAULT_V3_INITIAL_VOTING_DELAY = 172800 // 2 days\nexport const DEFAULT_V3_INITIAL_VOTING_PERIOD = 1209600 // 14 days\nexport const DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD = 0n\nexport const DEFAULT_V3_VESTING_DURATION = BigInt(SECONDS_PER_YEAR)\nexport const DEFAULT_V3_INITIAL_SUPPLY = parseEther('1000000000') // 1 billion tokens\nexport const DEFAULT_V3_NUM_TOKENS_TO_SELL = parseEther('900000000') // 900 million tokens\nexport const DEFAULT_V3_YEARLY_MINT_RATE = parseEther('0.02') // 2% yearly mint rate\nexport const DEFAULT_V3_PRE_MINT = parseEther('9000000') // 9 million tokens (0.9%)\nexport const DEFAULT_V3_MAX_SHARE_TO_BE_SOLD = parseEther('0.35') // 35%\n\n// V4 Default parameters\nexport const DEFAULT_V4_INITIAL_VOTING_DELAY = 7200 // 2 hours\nexport const DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400 // 14 hours\nexport const DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n\nexport const DEFAULT_V4_YEARLY_MINT_RATE = parseEther('0.02') // 2% yearly mint rate\n\n// V4 Multicurve Default Tick Ranges\n// Based on market cap tiers: LOW ($7.5k -> $30k), MEDIUM ($50k -> $150k), HIGH ($250k -> $750k)\n// Calculated for 1B token supply, $4500 numeraire (e.g., WETH on Base)\nexport const DEFAULT_MULTICURVE_LOWER_TICKS = [-202_100, -183_100, -167_000] as const\nexport const DEFAULT_MULTICURVE_UPPER_TICKS = [-188_200, -172_100, -156_000] as const\nexport const DEFAULT_MULTICURVE_NUM_POSITIONS = [11, 11, 11] as const\nexport const DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = [\n parseEther('0.05'), // 5% for LOW tier\n parseEther('0.125'), // 12.5% for MEDIUM tier\n parseEther('0.2'), // 20% for HIGH tier\n] as const\n\n// Price bounds\nexport const MIN_SQRT_RATIO = 4295128739n\nexport const MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n\n\n// Basis points\nexport const BASIS_POINTS = 10000\n\n// V4 Hook Flags for Doppler\nexport const FLAG_MASK = BigInt(0x3fff)\nexport const DOPPLER_FLAGS = BigInt(\n (1 << 13) | // BEFORE_INITIALIZE_FLAG\n (1 << 12) | // AFTER_INITIALIZE_FLAG \n (1 << 11) | // BEFORE_ADD_LIQUIDITY_FLAG\n (1 << 7) | // BEFORE_SWAP_FLAG\n (1 << 6) | // AFTER_SWAP_FLAG\n (1 << 5) // BEFORE_DONATE_FLAG\n)\n\n// V4 Dynamic Fee Flag\nexport const DYNAMIC_FEE_FLAG = 0x800000 // 8388608 in decimal\nexport const FEE_AMOUNT_MASK = 0xFFFFFF // Mask to extract actual fee from dynamic fee\n"]}