@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
@@ -0,0 +1,331 @@
1
+ import { buildCurvesFromPresets } from './chunk-Q5ERW5ZW.mjs';
2
+ import { validateMarketCapParameters, marketCapRangeToTicksForCurve } from './chunk-64AWG57M.mjs';
3
+ import { DEFAULT_V3_YEARLY_MINT_RATE, WAD, FEE_TIERS, TICK_SPACINGS, ZERO_ADDRESS } from './chunk-QKO2FZGN.mjs';
4
+ import { isNoOpEnabledChain } from './chunk-OZ6DGBRL.mjs';
5
+
6
+ // src/builders/MulticurveBuilder.ts
7
+ var MulticurveBuilder = class _MulticurveBuilder {
8
+ constructor(chainId) {
9
+ this.chainId = chainId;
10
+ }
11
+ static forChain(chainId) {
12
+ return new _MulticurveBuilder(chainId);
13
+ }
14
+ tokenConfig(params) {
15
+ if (params && "type" in params && params.type === "doppler404") {
16
+ this.token = {
17
+ type: "doppler404",
18
+ name: params.name,
19
+ symbol: params.symbol,
20
+ baseURI: params.baseURI,
21
+ unit: params.unit
22
+ };
23
+ } else {
24
+ this.token = {
25
+ type: "standard",
26
+ name: params.name,
27
+ symbol: params.symbol,
28
+ tokenURI: params.tokenURI,
29
+ yearlyMintRate: params.yearlyMintRate ?? DEFAULT_V3_YEARLY_MINT_RATE
30
+ };
31
+ }
32
+ return this;
33
+ }
34
+ saleConfig(params) {
35
+ this.sale = { initialSupply: params.initialSupply, numTokensToSell: params.numTokensToSell, numeraire: params.numeraire };
36
+ return this;
37
+ }
38
+ poolConfig(params) {
39
+ const sortedBeneficiaries = params.beneficiaries ? [...params.beneficiaries].sort((a, b) => {
40
+ const aAddr = a.beneficiary.toLowerCase();
41
+ const bAddr = b.beneficiary.toLowerCase();
42
+ return aAddr < bAddr ? -1 : aAddr > bAddr ? 1 : 0;
43
+ }) : void 0;
44
+ this.pool = { fee: params.fee, tickSpacing: params.tickSpacing, curves: params.curves, beneficiaries: sortedBeneficiaries };
45
+ return this;
46
+ }
47
+ withMarketCapPresets(params) {
48
+ const { fee, tickSpacing, curves } = buildCurvesFromPresets({
49
+ fee: params?.fee,
50
+ tickSpacing: params?.tickSpacing,
51
+ presets: params?.presets,
52
+ overrides: params?.overrides
53
+ });
54
+ return this.poolConfig({
55
+ fee,
56
+ tickSpacing,
57
+ curves,
58
+ beneficiaries: params?.beneficiaries
59
+ });
60
+ }
61
+ /**
62
+ * Configure multicurve using market cap ranges (no tick math required).
63
+ *
64
+ * This is the recommended way to configure multicurve pools. Simply specify
65
+ * market cap ranges in USD for each curve.
66
+ *
67
+ * Curves can be provided in any order - they will be automatically sorted
68
+ * by market cap (ascending) before validation and processing. Curves must
69
+ * be contiguous or overlapping (no gaps allowed).
70
+ *
71
+ * @param params - Market cap configuration with curves defined by market cap ranges
72
+ * @returns Builder instance for chaining
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * builder
77
+ * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })
78
+ * .withCurves({
79
+ * numerairePrice: 3000, // ETH = $3000
80
+ * curves: [
81
+ * { marketCap: { start: 500_000, end: 1_000_000 }, numPositions: 10, shares: parseEther('0.3') },
82
+ * { marketCap: { start: 1_000_000, end: 5_000_000 }, numPositions: 20, shares: parseEther('0.5') },
83
+ * { marketCap: { start: 5_000_000, end: 50_000_000 }, numPositions: 10, shares: parseEther('0.2') },
84
+ * ],
85
+ * })
86
+ * ```
87
+ */
88
+ withCurves(params) {
89
+ if (!this.sale?.numeraire) {
90
+ throw new Error("Must call saleConfig() before withCurves()");
91
+ }
92
+ if (params.numerairePrice <= 0) {
93
+ throw new Error("numerairePrice must be greater than 0");
94
+ }
95
+ if (!params.curves || params.curves.length === 0) {
96
+ throw new Error("curves array must contain at least one curve");
97
+ }
98
+ for (let i = 0; i < params.curves.length; i++) {
99
+ const curve = params.curves[i];
100
+ this.validateCurveRange(
101
+ curve.marketCap.start,
102
+ curve.marketCap.end,
103
+ curve.numPositions,
104
+ curve.shares,
105
+ `curves[${i}]`
106
+ );
107
+ }
108
+ const sortedCurves = this.sortCurvesByMarketCap(params.curves);
109
+ this.validateCurveContiguity(sortedCurves);
110
+ const totalShares = sortedCurves.reduce((sum, c) => sum + c.shares, 0n);
111
+ if (totalShares !== WAD) {
112
+ throw new Error(
113
+ `Total curve shares must equal 100% (${WAD}). Got ${totalShares} (${Number(totalShares * 10000n / WAD) / 100}%)`
114
+ );
115
+ }
116
+ const tokenSupply = params.tokenSupply ?? this.sale.initialSupply;
117
+ if (!tokenSupply) {
118
+ throw new Error(
119
+ "tokenSupply must be provided (either via saleConfig() or withCurves() params)"
120
+ );
121
+ }
122
+ const fee = params.fee ?? FEE_TIERS.LOW;
123
+ const tickSpacing = params.tickSpacing ?? TICK_SPACINGS[fee];
124
+ if (tickSpacing === void 0) {
125
+ throw new Error("tickSpacing must be provided when using a custom fee tier");
126
+ }
127
+ const numeraire = this.sale.numeraire;
128
+ const firstCurve = sortedCurves[0];
129
+ const startValidation = validateMarketCapParameters(
130
+ firstCurve.marketCap.start,
131
+ tokenSupply,
132
+ params.tokenDecimals
133
+ );
134
+ const endValidation = validateMarketCapParameters(
135
+ firstCurve.marketCap.end,
136
+ tokenSupply,
137
+ params.tokenDecimals
138
+ );
139
+ const allWarnings = [...startValidation.warnings, ...endValidation.warnings];
140
+ if (allWarnings.length > 0) {
141
+ console.warn("First curve market cap validation warnings:");
142
+ allWarnings.forEach((w) => console.warn(` - ${w}`));
143
+ }
144
+ const curves = [];
145
+ for (const curve of sortedCurves) {
146
+ const curveTicks = marketCapRangeToTicksForCurve(
147
+ curve.marketCap.start,
148
+ curve.marketCap.end,
149
+ tokenSupply,
150
+ params.numerairePrice,
151
+ params.tokenDecimals ?? 18,
152
+ params.numeraireDecimals ?? 18,
153
+ tickSpacing,
154
+ numeraire
155
+ );
156
+ curves.push({
157
+ tickLower: curveTicks.tickLower,
158
+ tickUpper: curveTicks.tickUpper,
159
+ numPositions: curve.numPositions,
160
+ shares: curve.shares
161
+ });
162
+ }
163
+ return this.poolConfig({
164
+ fee,
165
+ tickSpacing,
166
+ curves,
167
+ beneficiaries: params.beneficiaries
168
+ });
169
+ }
170
+ /**
171
+ * Sort curves by market cap (start, then end) for deterministic ordering
172
+ */
173
+ sortCurvesByMarketCap(curves) {
174
+ return [...curves].sort((a, b) => {
175
+ const startDiff = a.marketCap.start - b.marketCap.start;
176
+ if (startDiff !== 0) return startDiff;
177
+ return a.marketCap.end - b.marketCap.end;
178
+ });
179
+ }
180
+ /**
181
+ * Validate a single curve's parameters
182
+ */
183
+ validateCurveRange(startMarketCap, endMarketCap, numPositions, shares, label) {
184
+ if (startMarketCap <= 0) {
185
+ throw new Error(`${label}: marketCap.start must be greater than 0`);
186
+ }
187
+ if (endMarketCap <= 0) {
188
+ throw new Error(`${label}: marketCap.end must be greater than 0`);
189
+ }
190
+ if (startMarketCap >= endMarketCap) {
191
+ throw new Error(
192
+ `${label}: startMarketCap ($${startMarketCap.toLocaleString()}) must be less than endMarketCap ($${endMarketCap.toLocaleString()})`
193
+ );
194
+ }
195
+ if (numPositions <= 0) {
196
+ throw new Error(`${label}: numPositions must be greater than 0`);
197
+ }
198
+ if (shares <= 0n) {
199
+ throw new Error(`${label}: shares must be greater than 0`);
200
+ }
201
+ }
202
+ /**
203
+ * Validate that curves are contiguous or overlapping (no gaps allowed).
204
+ * Expects curves to be pre-sorted by market cap.
205
+ */
206
+ validateCurveContiguity(sortedCurves) {
207
+ if (sortedCurves.length <= 1) {
208
+ return;
209
+ }
210
+ for (let i = 1; i < sortedCurves.length; i++) {
211
+ const prevCurve = sortedCurves[i - 1];
212
+ const currCurve = sortedCurves[i];
213
+ if (currCurve.marketCap.start > prevCurve.marketCap.end) {
214
+ throw new Error(
215
+ `Gap detected between market cap ranges: $${prevCurve.marketCap.start.toLocaleString()}-$${prevCurve.marketCap.end.toLocaleString()} and $${currCurve.marketCap.start.toLocaleString()}-$${currCurve.marketCap.end.toLocaleString()}. Curves must be contiguous or overlapping.`
216
+ );
217
+ }
218
+ }
219
+ }
220
+ withVesting(params) {
221
+ if (!params) {
222
+ this.vesting = void 0;
223
+ return this;
224
+ }
225
+ this.vesting = { duration: Number(params.duration ?? 0n), cliffDuration: params.cliffDuration ?? 0, recipients: params.recipients, amounts: params.amounts };
226
+ return this;
227
+ }
228
+ withSchedule(params) {
229
+ if (!params) {
230
+ this.schedule = void 0;
231
+ return this;
232
+ }
233
+ let startTimeSeconds;
234
+ const { startTime } = params;
235
+ if (startTime instanceof Date) {
236
+ startTimeSeconds = Math.floor(startTime.getTime() / 1e3);
237
+ } else if (typeof startTime === "bigint") {
238
+ startTimeSeconds = Number(startTime);
239
+ } else {
240
+ startTimeSeconds = Number(startTime);
241
+ }
242
+ if (!Number.isFinite(startTimeSeconds) || !Number.isInteger(startTimeSeconds)) {
243
+ throw new Error("Schedule startTime must be an integer number of seconds since Unix epoch");
244
+ }
245
+ if (startTimeSeconds < 0) {
246
+ throw new Error("Schedule startTime cannot be negative");
247
+ }
248
+ const UINT32_MAX = 4294967295;
249
+ if (startTimeSeconds > UINT32_MAX) {
250
+ throw new Error("Schedule startTime must fit within uint32 (seconds since Unix epoch up to year 2106)");
251
+ }
252
+ this.schedule = { startTime: startTimeSeconds };
253
+ return this;
254
+ }
255
+ withGovernance(params) {
256
+ this.governance = params;
257
+ return this;
258
+ }
259
+ withMigration(migration) {
260
+ this.migration = migration;
261
+ return this;
262
+ }
263
+ withUserAddress(address) {
264
+ this.userAddress = address;
265
+ return this;
266
+ }
267
+ withIntegrator(address) {
268
+ this.integrator = address ?? ZERO_ADDRESS;
269
+ return this;
270
+ }
271
+ withGasLimit(gas) {
272
+ this.gasLimit = gas;
273
+ return this;
274
+ }
275
+ overrideModule(key, address) {
276
+ this.moduleAddresses = { ...this.moduleAddresses ?? {}, [key]: address };
277
+ return this;
278
+ }
279
+ withTokenFactory(address) {
280
+ return this.overrideModule("tokenFactory", address);
281
+ }
282
+ withAirlock(address) {
283
+ return this.overrideModule("airlock", address);
284
+ }
285
+ withV4MulticurveInitializer(address) {
286
+ return this.overrideModule("v4MulticurveInitializer", address);
287
+ }
288
+ withV4ScheduledMulticurveInitializer(address) {
289
+ return this.overrideModule("v4ScheduledMulticurveInitializer", address);
290
+ }
291
+ withGovernanceFactory(address) {
292
+ return this.overrideModule("governanceFactory", address);
293
+ }
294
+ withV2Migrator(address) {
295
+ return this.overrideModule("v2Migrator", address);
296
+ }
297
+ withV3Migrator(address) {
298
+ return this.overrideModule("v3Migrator", address);
299
+ }
300
+ withV4Migrator(address) {
301
+ return this.overrideModule("v4Migrator", address);
302
+ }
303
+ withNoOpMigrator(address) {
304
+ return this.overrideModule("noOpMigrator", address);
305
+ }
306
+ build() {
307
+ if (!this.token) throw new Error("tokenConfig is required");
308
+ if (!this.sale) throw new Error("saleConfig is required");
309
+ if (!this.pool) throw new Error("poolConfig is required");
310
+ if (!this.migration) throw new Error("migration configuration is required");
311
+ if (!this.userAddress) throw new Error("userAddress is required");
312
+ const governance = this.governance ?? (isNoOpEnabledChain(this.chainId) ? { type: "noOp" } : { type: "default" });
313
+ return {
314
+ token: this.token,
315
+ sale: this.sale,
316
+ pool: this.pool,
317
+ schedule: this.schedule,
318
+ vesting: this.vesting,
319
+ governance,
320
+ migration: this.migration,
321
+ integrator: this.integrator ?? ZERO_ADDRESS,
322
+ userAddress: this.userAddress,
323
+ modules: this.moduleAddresses,
324
+ gas: this.gasLimit
325
+ };
326
+ }
327
+ };
328
+
329
+ export { MulticurveBuilder };
330
+ //# sourceMappingURL=chunk-AULFBXM5.mjs.map
331
+ //# sourceMappingURL=chunk-AULFBXM5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/builders/MulticurveBuilder.ts"],"names":[],"mappings":"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","file":"chunk-AULFBXM5.mjs","sourcesContent":["import type { Address } from 'viem'\nimport {\n DEFAULT_V3_YEARLY_MINT_RATE,\n FEE_TIERS,\n TICK_SPACINGS,\n WAD,\n ZERO_ADDRESS,\n} from '../constants'\nimport {\n marketCapRangeToTicksForCurve,\n validateMarketCapParameters,\n} from '../utils'\nimport {\n isNoOpEnabledChain,\n type CreateMulticurveParams,\n type GovernanceOption,\n type MigrationConfig,\n type VestingConfig,\n type TokenConfig,\n type MulticurveMarketCapCurvesConfig,\n type MulticurveMarketCapPreset,\n type ModuleAddressOverrides,\n} from '../types'\nimport { type SupportedChainId } from '../addresses'\nimport {\n type BaseAuctionBuilder,\n type MarketCapPresetOverrides,\n buildCurvesFromPresets,\n} from './shared'\n\nexport class MulticurveBuilder<C extends SupportedChainId>\n implements BaseAuctionBuilder<C> {\n private token?: TokenConfig\n private sale?: CreateMulticurveParams<C>['sale']\n private pool?: CreateMulticurveParams<C>['pool']\n private schedule?: CreateMulticurveParams<C>['schedule']\n private vesting?: VestingConfig\n private governance?: GovernanceOption<C>\n private migration?: MigrationConfig\n private integrator?: Address\n private userAddress?: Address\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): MulticurveBuilder<C> {\n return new MulticurveBuilder(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_V3_YEARLY_MINT_RATE,\n }\n }\n return this\n }\n\n saleConfig(params: { initialSupply: bigint; numTokensToSell: bigint; numeraire: Address }): this {\n this.sale = { initialSupply: params.initialSupply, numTokensToSell: params.numTokensToSell, numeraire: params.numeraire }\n return this\n }\n\n poolConfig(params: { fee: number; tickSpacing: number; curves: { tickLower: number; tickUpper: number; numPositions: number; shares: bigint }[]; beneficiaries?: { beneficiary: Address; shares: bigint }[] }): this {\n const sortedBeneficiaries = params.beneficiaries\n ? [...params.beneficiaries].sort((a, b) => {\n const aAddr = a.beneficiary.toLowerCase()\n const bAddr = b.beneficiary.toLowerCase()\n return aAddr < bAddr ? -1 : aAddr > bAddr ? 1 : 0\n })\n : undefined\n\n this.pool = { fee: params.fee, tickSpacing: params.tickSpacing, curves: params.curves, beneficiaries: sortedBeneficiaries }\n return this\n }\n\n withMarketCapPresets(params?: {\n fee?: number\n tickSpacing?: number\n presets?: MulticurveMarketCapPreset[]\n overrides?: MarketCapPresetOverrides\n beneficiaries?: { beneficiary: Address; shares: bigint }[]\n }): this {\n const { fee, tickSpacing, curves } = buildCurvesFromPresets({\n fee: params?.fee,\n tickSpacing: params?.tickSpacing,\n presets: params?.presets,\n overrides: params?.overrides,\n })\n\n return this.poolConfig({\n fee,\n tickSpacing,\n curves,\n beneficiaries: params?.beneficiaries,\n })\n }\n\n /**\n * Configure multicurve using market cap ranges (no tick math required).\n *\n * This is the recommended way to configure multicurve pools. Simply specify\n * market cap ranges in USD for each curve.\n *\n * Curves can be provided in any order - they will be automatically sorted\n * by market cap (ascending) before validation and processing. Curves must\n * be contiguous or overlapping (no gaps allowed).\n *\n * @param params - Market cap configuration with curves defined by market cap ranges\n * @returns Builder instance for chaining\n *\n * @example\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000, // ETH = $3000\n * curves: [\n * { marketCap: { start: 500_000, end: 1_000_000 }, numPositions: 10, shares: parseEther('0.3') },\n * { marketCap: { start: 1_000_000, end: 5_000_000 }, numPositions: 20, shares: parseEther('0.5') },\n * { marketCap: { start: 5_000_000, end: 50_000_000 }, numPositions: 10, shares: parseEther('0.2') },\n * ],\n * })\n * ```\n */\n withCurves(params: MulticurveMarketCapCurvesConfig): this {\n // Validate required config\n if (!this.sale?.numeraire) {\n throw new Error('Must call saleConfig() before withCurves()')\n }\n\n // Validate numerairePrice\n if (params.numerairePrice <= 0) {\n throw new Error('numerairePrice must be greater than 0')\n }\n\n // Validate curves array\n if (!params.curves || params.curves.length === 0) {\n throw new Error('curves array must contain at least one curve')\n }\n\n // Validate each curve\n for (let i = 0; i < params.curves.length; i++) {\n const curve = params.curves[i]\n this.validateCurveRange(\n curve.marketCap.start,\n curve.marketCap.end,\n curve.numPositions,\n curve.shares,\n `curves[${i}]`\n )\n }\n\n // Sort curves by market cap (start, then end) for deterministic ordering\n const sortedCurves = this.sortCurvesByMarketCap(params.curves)\n\n // Validate curve contiguity (no gaps allowed, overlaps OK)\n this.validateCurveContiguity(sortedCurves)\n\n // Validate total shares sum to exactly WAD\n const totalShares = sortedCurves.reduce((sum, c) => sum + c.shares, 0n)\n if (totalShares !== WAD) {\n throw new Error(\n `Total curve shares must equal 100% (${WAD}). Got ${totalShares} (${Number(totalShares * 10000n / WAD) / 100}%)`\n )\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 withCurves() params)'\n )\n }\n\n // Get fee and tick spacing\n const fee = params.fee ?? FEE_TIERS.LOW\n const tickSpacing = 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 numeraire = this.sale.numeraire\n\n // Validate first curve market caps (the launch price)\n const firstCurve = sortedCurves[0]\n const startValidation = validateMarketCapParameters(\n firstCurve.marketCap.start,\n tokenSupply,\n params.tokenDecimals\n )\n const endValidation = validateMarketCapParameters(\n firstCurve.marketCap.end,\n tokenSupply,\n params.tokenDecimals\n )\n const allWarnings = [...startValidation.warnings, ...endValidation.warnings]\n if (allWarnings.length > 0) {\n console.warn('First curve market cap validation warnings:')\n allWarnings.forEach(w => console.warn(` - ${w}`))\n }\n\n // Convert all curves to ticks\n const curves: { tickLower: number; tickUpper: number; numPositions: number; shares: bigint }[] = []\n\n for (const curve of sortedCurves) {\n const curveTicks = marketCapRangeToTicksForCurve(\n curve.marketCap.start,\n curve.marketCap.end,\n tokenSupply,\n params.numerairePrice,\n params.tokenDecimals ?? 18,\n params.numeraireDecimals ?? 18,\n tickSpacing,\n numeraire\n )\n\n curves.push({\n tickLower: curveTicks.tickLower,\n tickUpper: curveTicks.tickUpper,\n numPositions: curve.numPositions,\n shares: curve.shares,\n })\n }\n\n // Delegate to existing poolConfig method\n return this.poolConfig({\n fee,\n tickSpacing,\n curves,\n beneficiaries: params.beneficiaries,\n })\n }\n\n /**\n * Sort curves by market cap (start, then end) for deterministic ordering\n */\n private sortCurvesByMarketCap<T extends { marketCap: { start: number; end: number } }>(\n curves: T[]\n ): T[] {\n return [...curves].sort((a, b) => {\n const startDiff = a.marketCap.start - b.marketCap.start\n if (startDiff !== 0) return startDiff\n return a.marketCap.end - b.marketCap.end\n })\n }\n\n /**\n * Validate a single curve's parameters\n */\n private validateCurveRange(\n startMarketCap: number,\n endMarketCap: number,\n numPositions: number,\n shares: bigint,\n label: string\n ): void {\n if (startMarketCap <= 0) {\n throw new Error(`${label}: marketCap.start must be greater than 0`)\n }\n if (endMarketCap <= 0) {\n throw new Error(`${label}: marketCap.end must be greater than 0`)\n }\n if (startMarketCap >= endMarketCap) {\n throw new Error(\n `${label}: startMarketCap ($${startMarketCap.toLocaleString()}) must be less than endMarketCap ($${endMarketCap.toLocaleString()})`\n )\n }\n if (numPositions <= 0) {\n throw new Error(`${label}: numPositions must be greater than 0`)\n }\n if (shares <= 0n) {\n throw new Error(`${label}: shares must be greater than 0`)\n }\n }\n\n /**\n * Validate that curves are contiguous or overlapping (no gaps allowed).\n * Expects curves to be pre-sorted by market cap.\n */\n private validateCurveContiguity(\n sortedCurves: { marketCap: { start: number; end: number } }[]\n ): void {\n if (sortedCurves.length <= 1) {\n return\n }\n\n for (let i = 1; i < sortedCurves.length; i++) {\n const prevCurve = sortedCurves[i - 1]\n const currCurve = sortedCurves[i]\n\n if (currCurve.marketCap.start > prevCurve.marketCap.end) {\n throw new Error(\n `Gap detected between market cap ranges: ` +\n `$${prevCurve.marketCap.start.toLocaleString()}-$${prevCurve.marketCap.end.toLocaleString()} ` +\n `and $${currCurve.marketCap.start.toLocaleString()}-$${currCurve.marketCap.end.toLocaleString()}. ` +\n `Curves must be contiguous or overlapping.`\n )\n }\n }\n }\n\n withVesting(params?: { duration?: bigint; cliffDuration?: number; recipients?: Address[]; amounts?: bigint[] }): this {\n if (!params) { this.vesting = undefined; return this }\n this.vesting = { duration: Number(params.duration ?? 0n), cliffDuration: params.cliffDuration ?? 0, recipients: params.recipients, amounts: params.amounts }\n return this\n }\n\n withSchedule(params?: { startTime: number | bigint | Date }): this {\n if (!params) {\n this.schedule = undefined\n return this\n }\n\n let startTimeSeconds: number\n const { startTime } = params\n\n if (startTime instanceof Date) {\n startTimeSeconds = Math.floor(startTime.getTime() / 1000)\n } else if (typeof startTime === 'bigint') {\n startTimeSeconds = Number(startTime)\n } else {\n startTimeSeconds = Number(startTime)\n }\n\n if (!Number.isFinite(startTimeSeconds) || !Number.isInteger(startTimeSeconds)) {\n throw new Error('Schedule startTime must be an integer number of seconds since Unix epoch')\n }\n\n if (startTimeSeconds < 0) {\n throw new Error('Schedule startTime cannot be negative')\n }\n\n const UINT32_MAX = 0xffffffff\n if (startTimeSeconds > UINT32_MAX) {\n throw new Error('Schedule startTime must fit within uint32 (seconds since Unix epoch up to year 2106)')\n }\n\n this.schedule = { startTime: startTimeSeconds }\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 private overrideModule<K extends keyof ModuleAddressOverrides>(key: K, address: NonNullable<ModuleAddressOverrides[K]>): this {\n this.moduleAddresses = { ...(this.moduleAddresses ?? {}), [key]: address } as ModuleAddressOverrides\n return this\n }\n\n withTokenFactory(address: Address): this { return this.overrideModule('tokenFactory', address) }\n withAirlock(address: Address): this { return this.overrideModule('airlock', address) }\n withV4MulticurveInitializer(address: Address): this { return this.overrideModule('v4MulticurveInitializer', address) }\n withV4ScheduledMulticurveInitializer(address: Address): this { return this.overrideModule('v4ScheduledMulticurveInitializer', address) }\n withGovernanceFactory(address: Address): this { return this.overrideModule('governanceFactory', address) }\n withV2Migrator(address: Address): this { return this.overrideModule('v2Migrator', address) }\n withV3Migrator(address: Address): this { return this.overrideModule('v3Migrator', address) }\n withV4Migrator(address: Address): this { return this.overrideModule('v4Migrator', address) }\n withNoOpMigrator(address: Address): this { return this.overrideModule('noOpMigrator', address) }\n\n build(): CreateMulticurveParams<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.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 return {\n token: this.token,\n sale: this.sale,\n pool: this.pool,\n schedule: this.schedule,\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 modules: this.moduleAddresses,\n gas: this.gasLimit,\n }\n }\n}\n"]}
@@ -0,0 +1,238 @@
1
+ import { GENERATED_DOPPLER_DEPLOYMENTS } from './chunk-FPAI4QYW.mjs';
2
+
3
+ // src/addresses.ts
4
+ var CHAIN_IDS = {
5
+ MAINNET: 1,
6
+ BASE: 8453,
7
+ BASE_SEPOLIA: 84532,
8
+ INK: 57073,
9
+ UNICHAIN: 130,
10
+ UNICHAIN_SEPOLIA: 1301,
11
+ MONAD_TESTNET: 10143,
12
+ MONAD_MAINNET: 143
13
+ };
14
+ var ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
15
+ var ADDRESSES = {
16
+ [CHAIN_IDS.MAINNET]: {
17
+ // Mainnet addresses not yet deployed
18
+ airlock: ZERO_ADDRESS,
19
+ tokenFactory: ZERO_ADDRESS,
20
+ v3Initializer: ZERO_ADDRESS,
21
+ v3Quoter: ZERO_ADDRESS,
22
+ v4Initializer: ZERO_ADDRESS,
23
+ dopplerLens: ZERO_ADDRESS,
24
+ dopplerDeployer: ZERO_ADDRESS,
25
+ v2Migrator: ZERO_ADDRESS,
26
+ v3Migrator: ZERO_ADDRESS,
27
+ v4Migrator: ZERO_ADDRESS,
28
+ poolManager: ZERO_ADDRESS,
29
+ governanceFactory: ZERO_ADDRESS,
30
+ universalRouter: ZERO_ADDRESS,
31
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
32
+ weth: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
33
+ uniswapV2Factory: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f",
34
+ uniswapV3Factory: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
35
+ uniswapV4Quoter: "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203"
36
+ },
37
+ [CHAIN_IDS.BASE]: {
38
+ airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock,
39
+ tokenFactory: "0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45",
40
+ v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV3Initializer,
41
+ v3Quoter: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
42
+ lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LockableUniswapV3Initializer,
43
+ v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Initializer,
44
+ v4MulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4MulticurveInitializer,
45
+ // From Doppler multicurve deployments (Base mainnet)
46
+ v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4ScheduledMulticurveInitializer,
47
+ // From Doppler scheduled multicurve deployments (Base mainnet)
48
+ dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerLensQuoter,
49
+ dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerDeployer,
50
+ poolManager: "0x498581ff718922c3f8e6a244956af099b2652b2b",
51
+ v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2Migrator,
52
+ v3Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2Migrator,
53
+ v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Migrator,
54
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
55
+ governanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
56
+ noOpGovernanceFactory: "0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e",
57
+ streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].StreamableFeesLocker,
58
+ universalRouter: "0x6ff5693b99212da76ad316178a184ab56d299b43",
59
+ univ2Router02: "0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24",
60
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
61
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Bundler,
62
+ weth: "0x4200000000000000000000000000000000000006",
63
+ uniswapV4Quoter: "0x0d5e0f971ed27fbff6c2837bf31316121532048d"
64
+ },
65
+ [CHAIN_IDS.BASE_SEPOLIA]: {
66
+ airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].Airlock,
67
+ tokenFactory: "0xc69ba223c617f7d936b3cf2012aa644815dbe9ff",
68
+ doppler404Factory: "0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7",
69
+ v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV3Initializer,
70
+ v3Quoter: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
71
+ lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LockableUniswapV3Initializer,
72
+ v4Initializer: "0x8e891d249f1ecbffa6143c03eb1b12843aef09d3",
73
+ v4MulticurveInitializer: "0x359b5952a254baaa0105381825daedb8986bb55c",
74
+ // From doppler multicurve deployments (Base Sepolia)
75
+ v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4ScheduledMulticurveInitializer,
76
+ // From Doppler scheduled multicurve deployments (Base Sepolia)
77
+ dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerLensQuoter,
78
+ dopplerDeployer: "0x60a039e4add40ca95e0475c11e8a4182d06c9aa0",
79
+ poolManager: "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408",
80
+ v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV2Migrator,
81
+ v3Migrator: "0xb2ec6559704467306d04322a5dc082b2af4562dd",
82
+ v4Migrator: "0xb2ec6559704467306d04322a5dc082b2af4562dd",
83
+ v4MigratorHook: "0x508812fcdd4972a59b66eb2cad3772279c052000",
84
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
85
+ governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
86
+ noOpGovernanceFactory: "0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228",
87
+ streamableFeesLocker: "0x4da7d7a8034510c0ffd38a9252237ae8dba3cb61",
88
+ universalRouter: "0x492E6456D9528771018DeB9E87ef7750EF184104",
89
+ univ2Router02: "0x1689E7B1F10000AE47eBfE339a4f69dECd19F602",
90
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
91
+ bundler: "0x69DB7c20cDdA49Bed2bFb21e16Fa218330C50661",
92
+ weth: "0x4200000000000000000000000000000000000006",
93
+ uniswapV4Quoter: "0x4A6513c898fe1B2d0E78d3b0e0A4a151589B1cBa"
94
+ },
95
+ [CHAIN_IDS.INK]: {
96
+ airlock: "0x014E1c0bd34f3B10546E554CB33B3293fECDD056",
97
+ tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].TokenFactory,
98
+ v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV3Initializer,
99
+ v3Quoter: "0x96b572D2d880cf2Fa2563651BD23ADE6f5516652",
100
+ v4Initializer: "0xC99b485499f78995C6F1640dbB1413c57f8BA684",
101
+ dopplerLens: "0x3972c00f7ed4885e145823eb7c655375d275a1c5",
102
+ dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].DopplerDeployer,
103
+ poolManager: "0x360e68faccca8ca495c1b759fd9eee466db9fb32",
104
+ v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV2Migrator,
105
+ v3Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV2Migrator,
106
+ v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].UniswapV2Migrator,
107
+ // Same as v2/v3 migrator
108
+ governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].GovernanceFactory,
109
+ noOpGovernanceFactory: ZERO_ADDRESS,
110
+ // Not yet deployed
111
+ streamableFeesLocker: ZERO_ADDRESS,
112
+ // Not yet deployed
113
+ universalRouter: "0x112908dac86e20e7241b0927479ea3bf935d1fa0",
114
+ univ2Router02: "0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4",
115
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
116
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler,
117
+ weth: "0x4200000000000000000000000000000000000006",
118
+ uniswapV4Quoter: "0x3972c00f7ed4885e145823eb7c655375d275a1c5"
119
+ },
120
+ [CHAIN_IDS.UNICHAIN]: {
121
+ airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Airlock,
122
+ tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].TokenFactory,
123
+ v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV3Initializer,
124
+ v3Quoter: "0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658",
125
+ v4Initializer: "0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB",
126
+ dopplerLens: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0",
127
+ dopplerDeployer: "0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f",
128
+ poolManager: "0x1f98400000000000000000000000000000000004",
129
+ v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV2Migrator,
130
+ v3Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV2Migrator,
131
+ v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].UniswapV2Migrator,
132
+ // Same as v2/v3 migrator
133
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpMigrator,
134
+ governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].GovernanceFactory,
135
+ noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].NoOpGovernanceFactory,
136
+ streamableFeesLocker: ZERO_ADDRESS,
137
+ // Not yet deployed
138
+ universalRouter: "0xef740bf23acae26f6492b10de645d6b98dc8eaf3",
139
+ univ2Router02: "0x284f11109359a7e1306c3e447ef14d38400063ff",
140
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
141
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Bundler,
142
+ weth: "0x4200000000000000000000000000000000000006",
143
+ uniswapV4Quoter: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0"
144
+ },
145
+ [CHAIN_IDS.UNICHAIN_SEPOLIA]: {
146
+ airlock: "0x651ab94B4777e2e4cdf96082d90C65bd947b73A4",
147
+ tokenFactory: "0xC5E5a19a2ee32831Fcb8a81546979AF43936EbaA",
148
+ v3Initializer: "0x7Fb9a622186B4660A5988C223ebb9d3690dD5007",
149
+ v3Quoter: "0x6Dd37329A1A225a6Fca658265D460423DCafBF89",
150
+ v4Initializer: "0x992375478626E67F4e639d3298EbCAaE51C3dF0b",
151
+ dopplerLens: "0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472",
152
+ dopplerDeployer: "0x2f2bacd46d3f5c9ee052ab392b73711db89129db",
153
+ poolManager: "0x00B036B58a818B1BC34d502D3fE730Db729e62AC",
154
+ v2Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
155
+ v3Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
156
+ v4Migrator: "0x44C448E38A2C3D206c9132E7f645510dFbBC946b",
157
+ // Same as v2/v3 migrator
158
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpMigrator,
159
+ governanceFactory: "0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC",
160
+ noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA].NoOpGovernanceFactory,
161
+ streamableFeesLocker: ZERO_ADDRESS,
162
+ // Not yet deployed
163
+ universalRouter: "0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D",
164
+ univ2Router02: "0x284f11109359a7e1306c3e447ef14d38400063ff",
165
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
166
+ bundler: "0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90",
167
+ weth: "0x4200000000000000000000000000000000000006",
168
+ uniswapV4Quoter: "0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472"
169
+ },
170
+ [CHAIN_IDS.MONAD_TESTNET]: {
171
+ airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Airlock,
172
+ tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].TokenFactory,
173
+ v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV3Initializer,
174
+ v3Quoter: ZERO_ADDRESS,
175
+ v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV4Initializer,
176
+ dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerLensQuoter,
177
+ dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].DopplerDeployer,
178
+ poolManager: "0xe93882f395B0b24180855c68Ab19B2d78573ceBc",
179
+ v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].UniswapV2Migrator,
180
+ v3Migrator: ZERO_ADDRESS,
181
+ v4Migrator: "0xBEd386a1Fc62B6598c9b8d2BF634471B6Fe75EB7",
182
+ // Same as v2/v3 migrator
183
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpMigrator,
184
+ governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].GovernanceFactory,
185
+ noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].NoOpGovernanceFactory,
186
+ streamableFeesLocker: "0x91231cDdD8d6C86Df602070a3081478e074b97b7",
187
+ // Not yet deployed
188
+ universalRouter: ZERO_ADDRESS,
189
+ univ2Router02: ZERO_ADDRESS,
190
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
191
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Bundler,
192
+ weth: ZERO_ADDRESS,
193
+ // TODO: Get Monad Testnet weth
194
+ uniswapV4Quoter: ZERO_ADDRESS
195
+ },
196
+ [CHAIN_IDS.MONAD_MAINNET]: {
197
+ airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Airlock,
198
+ tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].TokenFactory,
199
+ v3Initializer: ZERO_ADDRESS,
200
+ v3Quoter: "0x66266174564170519409d8853898f065c719536b",
201
+ v4Initializer: ZERO_ADDRESS,
202
+ dopplerLens: ZERO_ADDRESS,
203
+ dopplerDeployer: ZERO_ADDRESS,
204
+ poolManager: "0x188d586ddcf52439676ca21a244753fa19f9ea8e",
205
+ v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2Migrator,
206
+ v3Migrator: ZERO_ADDRESS,
207
+ v4Migrator: ZERO_ADDRESS,
208
+ // Same as v2/v3 migrator
209
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpMigrator,
210
+ governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
211
+ noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
212
+ v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV4ScheduledMulticurveInitializer,
213
+ streamableFeesLocker: ZERO_ADDRESS,
214
+ // Not yet deployed
215
+ universalRouter: "0x0d97dc33264bfc1c226207428a79b26757fb9dc3",
216
+ univ2Router02: ZERO_ADDRESS,
217
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
218
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Bundler,
219
+ weth: "0xEE8c0E9f1BFFb4Eb878d8f15f368A02a35481242",
220
+ // TODO: Get Monad Mainnet weth
221
+ uniswapV4Quoter: "0xa222dd357a9076d1091ed6aa2e16c9742dd26891"
222
+ }
223
+ };
224
+ function getAddresses(chainId) {
225
+ const addresses = ADDRESSES[chainId];
226
+ if (!addresses) {
227
+ throw new Error(`Unsupported chain ID: ${chainId}`);
228
+ }
229
+ return addresses;
230
+ }
231
+ var SUPPORTED_CHAIN_IDS = Object.values(CHAIN_IDS);
232
+ function isSupportedChainId(id) {
233
+ return id in ADDRESSES;
234
+ }
235
+
236
+ export { ADDRESSES, CHAIN_IDS, SUPPORTED_CHAIN_IDS, getAddresses, isSupportedChainId };
237
+ //# sourceMappingURL=chunk-AW3WR2D3.mjs.map
238
+ //# sourceMappingURL=chunk-AW3WR2D3.mjs.map