@whetstone-research/doppler-sdk 0.0.1-alpha.9 → 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-AQPINKEW.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-AXA7YT2G.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-PMIJTXU6.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-EIRVZJTT.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-4K5GBNQV.mjs.map +0 -1
  317. package/dist/chunk-7F5IXZLH.js +0 -308
  318. package/dist/chunk-7F5IXZLH.js.map +0 -1
  319. package/dist/chunk-7W72MFJO.mjs.map +0 -1
  320. package/dist/chunk-AQPINKEW.mjs.map +0 -1
  321. package/dist/chunk-AXA7YT2G.mjs.map +0 -1
  322. package/dist/chunk-AYPP5JEQ.mjs.map +0 -1
  323. package/dist/chunk-AZLFJNTG.mjs +0 -3
  324. package/dist/chunk-CIRZKWLL.js.map +0 -1
  325. package/dist/chunk-CIVGL27M.mjs +0 -160
  326. package/dist/chunk-CIVGL27M.mjs.map +0 -1
  327. package/dist/chunk-CYDWEPFL.mjs +0 -3
  328. package/dist/chunk-DCFHANLR.mjs.map +0 -1
  329. package/dist/chunk-DRBRT57F.js +0 -4
  330. package/dist/chunk-EFAPDN4J.js.map +0 -1
  331. package/dist/chunk-EIRVZJTT.js.map +0 -1
  332. package/dist/chunk-ER42VG7H.js.map +0 -1
  333. package/dist/chunk-FPGJKJIR.js +0 -872
  334. package/dist/chunk-FPGJKJIR.js.map +0 -1
  335. package/dist/chunk-HRFHDSNE.js +0 -180
  336. package/dist/chunk-HRFHDSNE.js.map +0 -1
  337. package/dist/chunk-IHBIBFZK.mjs +0 -12
  338. package/dist/chunk-IHBIBFZK.mjs.map +0 -1
  339. package/dist/chunk-JIDZBQ7R.mjs +0 -870
  340. package/dist/chunk-JIDZBQ7R.mjs.map +0 -1
  341. package/dist/chunk-KEXKKQVW.js +0 -42
  342. package/dist/chunk-KFD6U3LQ.mjs +0 -305
  343. package/dist/chunk-KFD6U3LQ.mjs.map +0 -1
  344. package/dist/chunk-KPBCG4X2.js.map +0 -1
  345. package/dist/chunk-KRN3ROUE.js +0 -4
  346. package/dist/chunk-KT7U37XS.mjs +0 -207
  347. package/dist/chunk-KT7U37XS.mjs.map +0 -1
  348. package/dist/chunk-LOROXNH3.mjs +0 -37
  349. package/dist/chunk-LOROXNH3.mjs.map +0 -1
  350. package/dist/chunk-LZO67TYV.mjs +0 -176
  351. package/dist/chunk-LZO67TYV.mjs.map +0 -1
  352. package/dist/chunk-MZ2UBC4M.mjs +0 -80
  353. package/dist/chunk-MZ2UBC4M.mjs.map +0 -1
  354. package/dist/chunk-OPKQMN46.mjs.map +0 -1
  355. package/dist/chunk-PMIJTXU6.js.map +0 -1
  356. package/dist/chunk-T644D54P.mjs.map +0 -1
  357. package/dist/chunk-TOMVBPNZ.js.map +0 -1
  358. package/dist/chunk-UHT4QLL7.js +0 -162
  359. package/dist/chunk-UHT4QLL7.js.map +0 -1
  360. package/dist/chunk-XG7K4R56.js.map +0 -1
  361. package/dist/chunk-YNP2HGJZ.js +0 -82
  362. package/dist/chunk-YNP2HGJZ.js.map +0 -1
  363. package/dist/chunk-ZAIP54LX.js +0 -209
  364. package/dist/chunk-ZAIP54LX.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
@@ -0,0 +1,280 @@
1
+ import { computeTicks } from './chunk-Q5ERW5ZW.mjs';
2
+ import { computeOptimalGamma } from './chunk-MNJ5OYPE.mjs';
3
+ import { validateMarketCapParameters, marketCapRangeToTicks, transformTicksForAuction } from './chunk-64AWG57M.mjs';
4
+ import { DEFAULT_V4_YEARLY_MINT_RATE, ZERO_ADDRESS, DEFAULT_AUCTION_DURATION, DEFAULT_EPOCH_LENGTH } from './chunk-QKO2FZGN.mjs';
5
+ import { isNoOpEnabledChain } from './chunk-OZ6DGBRL.mjs';
6
+
7
+ // src/builders/DynamicAuctionBuilder.ts
8
+ var DynamicAuctionBuilder = class _DynamicAuctionBuilder {
9
+ constructor(chainId) {
10
+ this.chainId = chainId;
11
+ }
12
+ static forChain(chainId) {
13
+ return new _DynamicAuctionBuilder(chainId);
14
+ }
15
+ tokenConfig(params) {
16
+ if (params && "type" in params && params.type === "doppler404") {
17
+ this.token = {
18
+ type: "doppler404",
19
+ name: params.name,
20
+ symbol: params.symbol,
21
+ baseURI: params.baseURI,
22
+ unit: params.unit
23
+ };
24
+ } else {
25
+ this.token = {
26
+ type: "standard",
27
+ name: params.name,
28
+ symbol: params.symbol,
29
+ tokenURI: params.tokenURI,
30
+ yearlyMintRate: params.yearlyMintRate ?? DEFAULT_V4_YEARLY_MINT_RATE
31
+ };
32
+ }
33
+ return this;
34
+ }
35
+ saleConfig(params) {
36
+ this.sale = {
37
+ initialSupply: params.initialSupply,
38
+ numTokensToSell: params.numTokensToSell,
39
+ numeraire: params.numeraire ?? ZERO_ADDRESS
40
+ };
41
+ return this;
42
+ }
43
+ poolConfig(params) {
44
+ this.pool = { fee: params.fee, tickSpacing: params.tickSpacing };
45
+ return this;
46
+ }
47
+ // Provide ticks directly
48
+ auctionByTicks(params) {
49
+ const duration = params.duration ?? DEFAULT_AUCTION_DURATION;
50
+ const epochLength = params.epochLength ?? DEFAULT_EPOCH_LENGTH;
51
+ const gamma = params.gamma ?? (this.pool ? computeOptimalGamma(params.startTick, params.endTick, duration, epochLength, this.pool.tickSpacing) : void 0);
52
+ this.auction = {
53
+ duration,
54
+ epochLength,
55
+ startTick: params.startTick,
56
+ endTick: params.endTick,
57
+ gamma,
58
+ minProceeds: params.minProceeds,
59
+ maxProceeds: params.maxProceeds,
60
+ numPdSlugs: params.numPdSlugs
61
+ };
62
+ return this;
63
+ }
64
+ /**
65
+ * @deprecated Use withMarketCapRange() instead for more intuitive market cap configuration
66
+ */
67
+ auctionByPriceRange(params) {
68
+ const tickSpacing = params.tickSpacing ?? this.pool?.tickSpacing;
69
+ if (!tickSpacing) {
70
+ throw new Error("tickSpacing is required (set poolConfig first or pass tickSpacing)");
71
+ }
72
+ const ticks = computeTicks(params.priceRange, tickSpacing);
73
+ return this.auctionByTicks({
74
+ startTick: ticks.startTick,
75
+ endTick: ticks.endTick,
76
+ minProceeds: params.minProceeds,
77
+ maxProceeds: params.maxProceeds,
78
+ duration: params.duration,
79
+ epochLength: params.epochLength,
80
+ gamma: params.gamma,
81
+ numPdSlugs: params.numPdSlugs
82
+ });
83
+ }
84
+ /**
85
+ * Configure auction using target market cap range.
86
+ * Converts market cap values (in USD) to Uniswap ticks.
87
+ *
88
+ * @param params - Market cap configuration with auction parameters
89
+ * @returns Builder instance for chaining
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * builder
94
+ * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })
95
+ * .poolConfig({ fee: 3000, tickSpacing: 60 })
96
+ * .withMarketCapRange({
97
+ * marketCap: { start: 500_000, min: 50_000 }, // $500k start, $50k floor
98
+ * numerairePrice: 3000, // ETH = $3000
99
+ * minProceeds: parseEther('10'),
100
+ * maxProceeds: parseEther('1000'),
101
+ * })
102
+ * ```
103
+ */
104
+ withMarketCapRange(params) {
105
+ if (!this.sale?.numeraire) {
106
+ throw new Error("Must call saleConfig() before withMarketCapRange()");
107
+ }
108
+ const tokenSupply = params.tokenSupply ?? this.sale.initialSupply;
109
+ if (!tokenSupply) {
110
+ throw new Error(
111
+ "tokenSupply must be provided (either via saleConfig() or withMarketCapRange() params)"
112
+ );
113
+ }
114
+ const tickSpacing = this.pool?.tickSpacing;
115
+ if (!tickSpacing) {
116
+ throw new Error(
117
+ "tickSpacing is required (set via poolConfig() before calling withMarketCapRange())"
118
+ );
119
+ }
120
+ const startValidation = validateMarketCapParameters(
121
+ params.marketCap.start,
122
+ tokenSupply,
123
+ params.tokenDecimals
124
+ );
125
+ const minValidation = validateMarketCapParameters(
126
+ params.marketCap.min,
127
+ tokenSupply,
128
+ params.tokenDecimals
129
+ );
130
+ const allWarnings = [...startValidation.warnings, ...minValidation.warnings];
131
+ if (allWarnings.length > 0) {
132
+ console.warn("Market cap validation warnings:");
133
+ allWarnings.forEach((w) => console.warn(` - ${w}`));
134
+ }
135
+ const { startTick: rawStartTick, endTick: rawEndTick } = marketCapRangeToTicks(
136
+ { start: params.marketCap.min, end: params.marketCap.start },
137
+ tokenSupply,
138
+ params.numerairePrice,
139
+ params.tokenDecimals ?? 18,
140
+ params.numeraireDecimals ?? 18,
141
+ tickSpacing,
142
+ this.sale.numeraire
143
+ );
144
+ const { startTick, endTick } = transformTicksForAuction(
145
+ rawStartTick,
146
+ rawEndTick,
147
+ this.sale.numeraire
148
+ );
149
+ return this.auctionByTicks({
150
+ startTick,
151
+ endTick,
152
+ minProceeds: params.minProceeds,
153
+ maxProceeds: params.maxProceeds,
154
+ duration: params.duration,
155
+ epochLength: params.epochLength,
156
+ gamma: params.gamma,
157
+ numPdSlugs: params.numPdSlugs
158
+ });
159
+ }
160
+ withVesting(params) {
161
+ if (!params) {
162
+ this.vesting = void 0;
163
+ return this;
164
+ }
165
+ this.vesting = {
166
+ duration: Number(params.duration ?? 0n),
167
+ cliffDuration: params.cliffDuration ?? 0,
168
+ recipients: params.recipients,
169
+ amounts: params.amounts
170
+ };
171
+ return this;
172
+ }
173
+ withGovernance(params) {
174
+ this.governance = params;
175
+ return this;
176
+ }
177
+ withMigration(migration) {
178
+ this.migration = migration;
179
+ return this;
180
+ }
181
+ withUserAddress(address) {
182
+ this.userAddress = address;
183
+ return this;
184
+ }
185
+ withIntegrator(address) {
186
+ this.integrator = address ?? ZERO_ADDRESS;
187
+ return this;
188
+ }
189
+ withGasLimit(gas) {
190
+ this.gasLimit = gas;
191
+ return this;
192
+ }
193
+ withTime(params) {
194
+ if (!params) {
195
+ this.startTimeOffset = void 0;
196
+ this.blockTimestamp = void 0;
197
+ return this;
198
+ }
199
+ this.startTimeOffset = params.startTimeOffset;
200
+ this.blockTimestamp = params.blockTimestamp;
201
+ return this;
202
+ }
203
+ // Address override helpers
204
+ overrideModule(key, address) {
205
+ this.moduleAddresses = {
206
+ ...this.moduleAddresses ?? {},
207
+ [key]: address
208
+ };
209
+ return this;
210
+ }
211
+ withTokenFactory(address) {
212
+ return this.overrideModule("tokenFactory", address);
213
+ }
214
+ withAirlock(address) {
215
+ return this.overrideModule("airlock", address);
216
+ }
217
+ withV4Initializer(address) {
218
+ return this.overrideModule("v4Initializer", address);
219
+ }
220
+ withPoolManager(address) {
221
+ return this.overrideModule("poolManager", address);
222
+ }
223
+ withDopplerDeployer(address) {
224
+ return this.overrideModule("dopplerDeployer", address);
225
+ }
226
+ withGovernanceFactory(address) {
227
+ return this.overrideModule("governanceFactory", address);
228
+ }
229
+ withV2Migrator(address) {
230
+ return this.overrideModule("v2Migrator", address);
231
+ }
232
+ withV3Migrator(address) {
233
+ return this.overrideModule("v3Migrator", address);
234
+ }
235
+ withV4Migrator(address) {
236
+ return this.overrideModule("v4Migrator", address);
237
+ }
238
+ withNoOpMigrator(address) {
239
+ return this.overrideModule("noOpMigrator", address);
240
+ }
241
+ build() {
242
+ if (!this.token) throw new Error("tokenConfig is required");
243
+ if (!this.sale) throw new Error("saleConfig is required");
244
+ if (!this.pool) throw new Error("poolConfig is required");
245
+ if (!this.auction) throw new Error("auction configuration is required");
246
+ if (!this.migration) throw new Error("migration configuration is required");
247
+ if (!this.userAddress) throw new Error("userAddress is required");
248
+ const governance = this.governance ?? (isNoOpEnabledChain(this.chainId) ? { type: "noOp" } : { type: "default" });
249
+ let { gamma } = this.auction;
250
+ if (gamma === void 0) {
251
+ gamma = computeOptimalGamma(
252
+ this.auction.startTick,
253
+ this.auction.endTick,
254
+ this.auction.duration,
255
+ this.auction.epochLength,
256
+ this.pool.tickSpacing
257
+ );
258
+ }
259
+ const auction = { ...this.auction, gamma };
260
+ return {
261
+ token: this.token,
262
+ sale: this.sale,
263
+ auction,
264
+ pool: this.pool,
265
+ vesting: this.vesting,
266
+ governance,
267
+ migration: this.migration,
268
+ integrator: this.integrator ?? ZERO_ADDRESS,
269
+ userAddress: this.userAddress,
270
+ startTimeOffset: this.startTimeOffset,
271
+ blockTimestamp: this.blockTimestamp,
272
+ modules: this.moduleAddresses,
273
+ gas: this.gasLimit
274
+ };
275
+ }
276
+ };
277
+
278
+ export { DynamicAuctionBuilder };
279
+ //# sourceMappingURL=chunk-MCOK3UFR.mjs.map
280
+ //# sourceMappingURL=chunk-MCOK3UFR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/builders/DynamicAuctionBuilder.ts"],"names":[],"mappings":"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","file":"chunk-MCOK3UFR.mjs","sourcesContent":["import type { Address } from 'viem'\nimport {\n DEFAULT_AUCTION_DURATION,\n DEFAULT_EPOCH_LENGTH,\n DEFAULT_V4_YEARLY_MINT_RATE,\n ZERO_ADDRESS,\n} from '../constants'\nimport {\n computeOptimalGamma,\n marketCapRangeToTicks,\n transformTicksForAuction,\n validateMarketCapParameters,\n} from '../utils'\nimport {\n isNoOpEnabledChain,\n type CreateDynamicAuctionParams,\n type GovernanceOption,\n type MigrationConfig,\n type PriceRange,\n type VestingConfig,\n type TokenConfig,\n type DynamicAuctionMarketCapConfig,\n type ModuleAddressOverrides,\n} from '../types'\nimport { type SupportedChainId } from '../addresses'\nimport { computeTicks, type BaseAuctionBuilder } from './shared'\n\nexport class DynamicAuctionBuilder<C extends SupportedChainId>\n implements BaseAuctionBuilder<C> {\n private token?: TokenConfig\n private sale?: CreateDynamicAuctionParams<C>['sale']\n private auction?: CreateDynamicAuctionParams<C>['auction']\n private pool?: CreateDynamicAuctionParams<C>['pool']\n private vesting?: VestingConfig\n private governance?: GovernanceOption<C>\n private migration?: MigrationConfig\n private integrator?: Address\n private userAddress?: Address\n private startTimeOffset?: number\n private blockTimestamp?: number\n private moduleAddresses?: ModuleAddressOverrides\n private gasLimit?: bigint\n public chainId: C\n\n constructor(chainId: C) {\n this.chainId = chainId\n }\n\n static forChain<C extends SupportedChainId>(chainId: C): DynamicAuctionBuilder<C> {\n return new DynamicAuctionBuilder(chainId)\n }\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 && 'type' in params && params.type === 'doppler404') {\n this.token = {\n type: 'doppler404',\n name: params.name,\n symbol: params.symbol,\n baseURI: params.baseURI,\n unit: params.unit,\n }\n } else {\n this.token = {\n type: 'standard',\n name: params.name,\n symbol: params.symbol,\n tokenURI: params.tokenURI,\n yearlyMintRate: params.yearlyMintRate ?? DEFAULT_V4_YEARLY_MINT_RATE,\n }\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 duration?: number\n epochLength?: number\n gamma?: number\n numPdSlugs?: number\n }): this {\n const duration = params.duration ?? 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 /**\n * @deprecated Use withMarketCapRange() instead for more intuitive market cap configuration\n */\n auctionByPriceRange(params: {\n priceRange: PriceRange\n minProceeds: bigint\n maxProceeds: bigint\n duration?: 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 duration: params.duration,\n epochLength: params.epochLength,\n gamma: params.gamma,\n numPdSlugs: params.numPdSlugs,\n })\n }\n\n /**\n * Configure auction using target market cap range.\n * Converts market cap values (in USD) to Uniswap ticks.\n *\n * @param params - Market cap configuration with auction parameters\n * @returns Builder instance for chaining\n *\n * @example\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .poolConfig({ fee: 3000, tickSpacing: 60 })\n * .withMarketCapRange({\n * marketCap: { start: 500_000, min: 50_000 }, // $500k start, $50k floor\n * numerairePrice: 3000, // ETH = $3000\n * minProceeds: parseEther('10'),\n * maxProceeds: parseEther('1000'),\n * })\n * ```\n */\n withMarketCapRange(params: DynamicAuctionMarketCapConfig): this {\n // Validate required config\n if (!this.sale?.numeraire) {\n throw new Error('Must call saleConfig() before withMarketCapRange()')\n }\n\n // Get token supply\n const tokenSupply = params.tokenSupply ?? this.sale.initialSupply\n if (!tokenSupply) {\n throw new Error(\n 'tokenSupply must be provided (either via saleConfig() or withMarketCapRange() params)'\n )\n }\n\n // Get tick spacing\n const tickSpacing = this.pool?.tickSpacing\n if (!tickSpacing) {\n throw new Error(\n 'tickSpacing is required (set via poolConfig() before calling withMarketCapRange())'\n )\n }\n\n // Validate market cap parameters\n const startValidation = validateMarketCapParameters(\n params.marketCap.start,\n tokenSupply,\n params.tokenDecimals\n )\n const minValidation = validateMarketCapParameters(\n params.marketCap.min,\n tokenSupply,\n params.tokenDecimals\n )\n\n const allWarnings = [...startValidation.warnings, ...minValidation.warnings]\n if (allWarnings.length > 0) {\n console.warn('Market cap validation warnings:')\n allWarnings.forEach(w => console.warn(` - ${w}`))\n }\n\n // Convert market cap range to ticks and transform for auction contract\n // Pass min as start, start as end (ascending order for validation)\n // Dutch auction price semantics are handled by the contract, not tick ordering\n const { startTick: rawStartTick, endTick: rawEndTick } = marketCapRangeToTicks(\n { start: params.marketCap.min, end: params.marketCap.start },\n tokenSupply,\n params.numerairePrice,\n params.tokenDecimals ?? 18,\n params.numeraireDecimals ?? 18,\n tickSpacing,\n this.sale.numeraire\n )\n\n const { startTick, endTick } = transformTicksForAuction(\n rawStartTick,\n rawEndTick,\n this.sale.numeraire\n )\n\n // Delegate to existing auctionByTicks method\n return this.auctionByTicks({\n startTick,\n endTick,\n minProceeds: params.minProceeds,\n maxProceeds: params.maxProceeds,\n duration: params.duration,\n epochLength: params.epochLength,\n gamma: params.gamma,\n numPdSlugs: params.numPdSlugs,\n })\n }\n\n withVesting(params?: { duration?: bigint; cliffDuration?: number; recipients?: Address[]; amounts?: bigint[] }): 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 recipients: params.recipients,\n amounts: params.amounts,\n }\n return this\n }\n\n withGovernance(params: GovernanceOption<C>): this {\n this.governance = params\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 withGasLimit(gas?: bigint): this {\n this.gasLimit = gas\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 // Address override helpers\n private overrideModule<K extends keyof ModuleAddressOverrides>(key: K, address: NonNullable<ModuleAddressOverrides[K]>): this {\n this.moduleAddresses = {\n ...(this.moduleAddresses ?? {}),\n [key]: address,\n } as ModuleAddressOverrides\n return this\n }\n\n withTokenFactory(address: Address): this {\n return this.overrideModule('tokenFactory', address)\n }\n\n withAirlock(address: Address): this {\n return this.overrideModule('airlock', address)\n }\n\n withV4Initializer(address: Address): this {\n return this.overrideModule('v4Initializer', address)\n }\n\n withPoolManager(address: Address): this {\n return this.overrideModule('poolManager', address)\n }\n\n withDopplerDeployer(address: Address): this {\n return this.overrideModule('dopplerDeployer', address)\n }\n\n withGovernanceFactory(address: Address): this {\n return this.overrideModule('governanceFactory', address)\n }\n\n withV2Migrator(address: Address): this {\n return this.overrideModule('v2Migrator', address)\n }\n\n withV3Migrator(address: Address): this {\n return this.overrideModule('v3Migrator', address)\n }\n\n withV4Migrator(address: Address): this {\n return this.overrideModule('v4Migrator', address)\n }\n\n withNoOpMigrator(address: Address): this {\n return this.overrideModule('noOpMigrator', address)\n }\n\n build(): CreateDynamicAuctionParams<C> {\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\n // Default governance: noOp on supported chains, default on others (e.g., Ink)\n const governance = this.governance ?? (\n isNoOpEnabledChain(this.chainId)\n ? { type: 'noOp' as const }\n : { type: 'default' as const }\n )\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: governance as GovernanceOption<C>,\n migration: this.migration,\n integrator: this.integrator ?? ZERO_ADDRESS,\n userAddress: this.userAddress,\n startTimeOffset: this.startTimeOffset,\n blockTimestamp: this.blockTimestamp,\n modules: this.moduleAddresses,\n gas: this.gasLimit,\n }\n }\n}\n"]}
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ var chunkRVFSRYI5_js = require('./chunk-RVFSRYI5.js');
4
+ var viem = require('viem');
5
+
6
+ var DEFAULT_MAX_ITERATIONS = 1e6;
7
+ var STANDARD_TOKEN_DATA_ABI = [
8
+ { type: "string" },
9
+ { type: "string" },
10
+ { type: "uint256" },
11
+ { type: "uint256" },
12
+ { type: "address[]" },
13
+ { type: "uint256[]" },
14
+ { type: "string" }
15
+ ];
16
+ var DOPPLER404_TOKEN_DATA_ABI = [
17
+ { type: "string" },
18
+ { type: "string" },
19
+ { type: "string" },
20
+ { type: "uint256" }
21
+ ];
22
+ function normalizePrefix(prefix) {
23
+ const normalized = prefix.trim().toLowerCase().replace(/^0x/, "");
24
+ if (normalized.length === 0) {
25
+ throw new Error("TokenAddressMiner: prefix must contain at least one hex character");
26
+ }
27
+ if (normalized.length > 40) {
28
+ throw new Error("TokenAddressMiner: prefix cannot exceed 40 hex characters");
29
+ }
30
+ if (!/^[0-9a-f]+$/i.test(normalized)) {
31
+ throw new Error("TokenAddressMiner: prefix must be a hexadecimal string");
32
+ }
33
+ return normalized;
34
+ }
35
+ function computeCreate2Address(salt, initCodeHash, deployer) {
36
+ const encoded = viem.encodePacked(
37
+ ["bytes1", "address", "bytes32", "bytes32"],
38
+ ["0xff", deployer, salt, initCodeHash]
39
+ );
40
+ return viem.getAddress(`0x${viem.keccak256(encoded).slice(-40)}`);
41
+ }
42
+ function buildTokenInitHash(params) {
43
+ const { variant, tokenData, initialSupply, recipient, owner, customBytecode } = params;
44
+ if (variant === "doppler404") {
45
+ const [name2, symbol2, baseURI] = viem.decodeAbiParameters(
46
+ DOPPLER404_TOKEN_DATA_ABI,
47
+ tokenData
48
+ );
49
+ const initHashData2 = viem.encodeAbiParameters(
50
+ [
51
+ { type: "string" },
52
+ { type: "string" },
53
+ { type: "uint256" },
54
+ { type: "address" },
55
+ { type: "address" },
56
+ { type: "string" }
57
+ ],
58
+ [name2, symbol2, initialSupply, recipient, owner, baseURI]
59
+ );
60
+ return viem.keccak256(
61
+ viem.encodePacked(
62
+ ["bytes", "bytes"],
63
+ [customBytecode ?? chunkRVFSRYI5_js.DopplerDN404Bytecode, initHashData2]
64
+ )
65
+ );
66
+ }
67
+ const [
68
+ name,
69
+ symbol,
70
+ yearlyMintRate,
71
+ vestingDuration,
72
+ vestingRecipients,
73
+ vestingAmounts,
74
+ tokenURI
75
+ ] = viem.decodeAbiParameters(STANDARD_TOKEN_DATA_ABI, tokenData);
76
+ const initHashData = viem.encodeAbiParameters(
77
+ [
78
+ { type: "string" },
79
+ { type: "string" },
80
+ { type: "uint256" },
81
+ { type: "address" },
82
+ { type: "address" },
83
+ { type: "uint256" },
84
+ { type: "uint256" },
85
+ { type: "address[]" },
86
+ { type: "uint256[]" },
87
+ { type: "string" }
88
+ ],
89
+ [
90
+ name,
91
+ symbol,
92
+ initialSupply,
93
+ recipient,
94
+ owner,
95
+ yearlyMintRate,
96
+ vestingDuration,
97
+ Array.from(vestingRecipients),
98
+ Array.from(vestingAmounts),
99
+ tokenURI
100
+ ]
101
+ );
102
+ return viem.keccak256(
103
+ viem.encodePacked(
104
+ ["bytes", "bytes"],
105
+ [customBytecode ?? chunkRVFSRYI5_js.DERC20Bytecode, initHashData]
106
+ )
107
+ );
108
+ }
109
+ function mineTokenAddress(params) {
110
+ const {
111
+ prefix,
112
+ tokenFactory,
113
+ initialSupply,
114
+ recipient,
115
+ owner,
116
+ tokenData,
117
+ tokenVariant = "standard",
118
+ customBytecode,
119
+ maxIterations = DEFAULT_MAX_ITERATIONS,
120
+ startSalt = 0n,
121
+ hook
122
+ } = params;
123
+ if (maxIterations <= 0 || !Number.isFinite(maxIterations)) {
124
+ throw new Error("TokenAddressMiner: maxIterations must be a positive finite number");
125
+ }
126
+ if (startSalt < 0n) {
127
+ throw new Error("TokenAddressMiner: startSalt cannot be negative");
128
+ }
129
+ const normalizedPrefix = normalizePrefix(prefix);
130
+ const tokenInitHash = buildTokenInitHash({
131
+ variant: tokenVariant,
132
+ tokenData,
133
+ initialSupply,
134
+ recipient,
135
+ owner,
136
+ customBytecode
137
+ });
138
+ const hookConfig = hook ? {
139
+ deployer: hook.deployer,
140
+ initCodeHash: hook.initCodeHash,
141
+ prefix: hook.prefix ? normalizePrefix(hook.prefix) : void 0
142
+ } : void 0;
143
+ const maxSalt = startSalt + BigInt(maxIterations);
144
+ let iterations = 0;
145
+ for (let salt = startSalt; salt < maxSalt; salt++) {
146
+ const saltHex = `0x${salt.toString(16).padStart(64, "0")}`;
147
+ const candidate = computeCreate2Address(saltHex, tokenInitHash, tokenFactory);
148
+ iterations++;
149
+ if (candidate.slice(2).toLowerCase().startsWith(normalizedPrefix)) {
150
+ let hookAddress;
151
+ if (hookConfig) {
152
+ hookAddress = computeCreate2Address(
153
+ saltHex,
154
+ hookConfig.initCodeHash,
155
+ hookConfig.deployer
156
+ );
157
+ if (hookConfig.prefix && !hookAddress.slice(2).toLowerCase().startsWith(hookConfig.prefix)) {
158
+ continue;
159
+ }
160
+ }
161
+ return {
162
+ salt: saltHex,
163
+ tokenAddress: candidate,
164
+ iterations,
165
+ hookAddress
166
+ };
167
+ }
168
+ }
169
+ throw new Error(
170
+ `TokenAddressMiner: could not find salt matching prefix ${prefix} within ${maxIterations} iterations`
171
+ );
172
+ }
173
+
174
+ exports.mineTokenAddress = mineTokenAddress;
175
+ //# sourceMappingURL=chunk-MGQSQCFG.js.map
176
+ //# sourceMappingURL=chunk-MGQSQCFG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/tokenAddressMiner.ts"],"names":["encodePacked","getAddress","keccak256","name","symbol","decodeAbiParameters","initHashData","encodeAbiParameters","DopplerDN404Bytecode","DERC20Bytecode"],"mappings":"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","file":"chunk-MGQSQCFG.js","sourcesContent":["import {\n type Address,\n type Hash,\n type Hex,\n encodeAbiParameters,\n encodePacked,\n keccak256,\n getAddress,\n decodeAbiParameters,\n} from 'viem'\nimport { DERC20Bytecode, DopplerDN404Bytecode } from '../abis'\n\nconst DEFAULT_MAX_ITERATIONS = 1_000_000\n\nexport type TokenVariant = 'standard' | 'doppler404'\n\nexport interface TokenAddressHookConfig {\n deployer: Address\n initCodeHash: Hash\n prefix?: string\n}\n\nexport interface TokenAddressMiningParams {\n prefix: string\n tokenFactory: Address\n initialSupply: bigint\n recipient: Address\n owner: Address\n tokenData: Hex\n tokenVariant?: TokenVariant\n customBytecode?: Hex\n maxIterations?: number\n startSalt?: bigint\n hook?: TokenAddressHookConfig\n}\n\nexport interface TokenAddressMiningResult {\n salt: Hash\n tokenAddress: Address\n iterations: number\n hookAddress?: Address\n}\n\nconst STANDARD_TOKEN_DATA_ABI = [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n] as const\n\nconst DOPPLER404_TOKEN_DATA_ABI = [\n { type: 'string' },\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n] as const\n\nfunction normalizePrefix(prefix: string): string {\n const normalized = prefix.trim().toLowerCase().replace(/^0x/, '')\n if (normalized.length === 0) {\n throw new Error('TokenAddressMiner: prefix must contain at least one hex character')\n }\n if (normalized.length > 40) {\n throw new Error('TokenAddressMiner: prefix cannot exceed 40 hex characters')\n }\n if (!/^[0-9a-f]+$/i.test(normalized)) {\n throw new Error('TokenAddressMiner: prefix must be a hexadecimal string')\n }\n return normalized\n}\n\nfunction computeCreate2Address(salt: Hash, initCodeHash: Hash, deployer: Address): Address {\n const encoded = encodePacked(\n ['bytes1', 'address', 'bytes32', 'bytes32'],\n ['0xff', deployer, salt, initCodeHash]\n )\n return getAddress(`0x${keccak256(encoded).slice(-40)}`)\n}\n\nfunction buildTokenInitHash(params: {\n variant: TokenVariant\n tokenData: Hex\n initialSupply: bigint\n recipient: Address\n owner: Address\n customBytecode?: Hex\n}): Hash {\n const { variant, tokenData, initialSupply, recipient, owner, customBytecode } = params\n\n if (variant === 'doppler404') {\n const [name, symbol, baseURI] = decodeAbiParameters(\n DOPPLER404_TOKEN_DATA_ABI,\n tokenData\n ) as readonly [string, string, string, bigint | undefined]\n\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'string' },\n ],\n [name, symbol, initialSupply, recipient, owner, baseURI]\n )\n\n return keccak256(\n encodePacked(\n ['bytes', 'bytes'],\n [(customBytecode ?? (DopplerDN404Bytecode as Hex)), initHashData]\n )\n ) as Hash\n }\n\n const [\n name,\n symbol,\n yearlyMintRate,\n vestingDuration,\n vestingRecipients,\n vestingAmounts,\n tokenURI,\n ] = decodeAbiParameters(STANDARD_TOKEN_DATA_ABI, tokenData) as readonly [\n string,\n string,\n bigint,\n bigint,\n readonly Address[],\n readonly bigint[],\n string\n ]\n\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n initialSupply,\n recipient,\n owner,\n yearlyMintRate,\n vestingDuration,\n Array.from(vestingRecipients),\n Array.from(vestingAmounts),\n tokenURI,\n ]\n )\n\n return keccak256(\n encodePacked(\n ['bytes', 'bytes'],\n [(customBytecode ?? (DERC20Bytecode as Hex)), initHashData]\n )\n ) as Hash\n}\n\nexport function mineTokenAddress(params: TokenAddressMiningParams): TokenAddressMiningResult {\n const {\n prefix,\n tokenFactory,\n initialSupply,\n recipient,\n owner,\n tokenData,\n tokenVariant = 'standard',\n customBytecode,\n maxIterations = DEFAULT_MAX_ITERATIONS,\n startSalt = 0n,\n hook,\n } = params\n\n if (maxIterations <= 0 || !Number.isFinite(maxIterations)) {\n throw new Error('TokenAddressMiner: maxIterations must be a positive finite number')\n }\n if (startSalt < 0n) {\n throw new Error('TokenAddressMiner: startSalt cannot be negative')\n }\n\n const normalizedPrefix = normalizePrefix(prefix)\n const tokenInitHash = buildTokenInitHash({\n variant: tokenVariant,\n tokenData,\n initialSupply,\n recipient,\n owner,\n customBytecode,\n })\n\n const hookConfig = hook\n ? {\n deployer: hook.deployer,\n initCodeHash: hook.initCodeHash,\n prefix: hook.prefix ? normalizePrefix(hook.prefix) : undefined,\n }\n : undefined\n\n const maxSalt = startSalt + BigInt(maxIterations)\n let iterations = 0\n\n for (let salt = startSalt; salt < maxSalt; salt++) {\n const saltHex = `0x${salt.toString(16).padStart(64, '0')}` as Hash\n const candidate = computeCreate2Address(saltHex, tokenInitHash, tokenFactory)\n iterations++\n if (candidate.slice(2).toLowerCase().startsWith(normalizedPrefix)) {\n let hookAddress: Address | undefined\n if (hookConfig) {\n hookAddress = computeCreate2Address(\n saltHex,\n hookConfig.initCodeHash,\n hookConfig.deployer\n )\n if (\n hookConfig.prefix &&\n !hookAddress.slice(2).toLowerCase().startsWith(hookConfig.prefix)\n ) {\n continue\n }\n }\n return {\n salt: saltHex,\n tokenAddress: candidate,\n iterations,\n hookAddress,\n }\n }\n }\n\n throw new Error(\n `TokenAddressMiner: could not find salt matching prefix ${prefix} within ${maxIterations} iterations`\n )\n}\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-MKE3BUL3.mjs.map
3
+ //# sourceMappingURL=chunk-MKE3BUL3.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CYDWEPFL.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-MKE3BUL3.mjs"}
@@ -0,0 +1,17 @@
1
+ // src/utils/computeOptimalGamma.ts
2
+ function computeOptimalGamma(startTick, endTick, duration, epochLength, tickSpacing) {
3
+ const totalEpochs = duration / epochLength;
4
+ const tickDelta = Math.abs(endTick - startTick);
5
+ let perEpochTicks = Math.ceil(tickDelta / totalEpochs);
6
+ const multiples = Math.ceil(perEpochTicks / tickSpacing);
7
+ let gamma = multiples * tickSpacing;
8
+ gamma = Math.max(tickSpacing, gamma);
9
+ if (gamma % tickSpacing !== 0) {
10
+ throw new Error("Computed gamma must be divisible by tick spacing");
11
+ }
12
+ return gamma;
13
+ }
14
+
15
+ export { computeOptimalGamma };
16
+ //# sourceMappingURL=chunk-MNJ5OYPE.mjs.map
17
+ //# sourceMappingURL=chunk-MNJ5OYPE.mjs.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-MNJ5OYPE.mjs","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}"]}