@whetstone-research/doppler-sdk 0.0.22 → 0.0.23

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 (206) hide show
  1. package/README.md +74 -0
  2. package/dist/DopplerSDK.js +25 -24
  3. package/dist/DopplerSDK.mjs +24 -23
  4. package/dist/abis/bytecodes/derc20.js +2 -2
  5. package/dist/abis/bytecodes/derc20.mjs +1 -1
  6. package/dist/abis/bytecodes/derc2080.js +2 -2
  7. package/dist/abis/bytecodes/derc2080.mjs +1 -1
  8. package/dist/abis/bytecodes/doppler.js +2 -2
  9. package/dist/abis/bytecodes/doppler.mjs +1 -1
  10. package/dist/abis/bytecodes/dopplerDN404.js +2 -2
  11. package/dist/abis/bytecodes/dopplerDN404.mjs +1 -1
  12. package/dist/abis/bytecodes/stateView.js +2 -2
  13. package/dist/abis/bytecodes/stateView.mjs +1 -1
  14. package/dist/abis/bytecodes.js +10 -10
  15. package/dist/abis/bytecodes.mjs +5 -5
  16. package/dist/abis/index.js +10 -10
  17. package/dist/abis/index.mjs +5 -5
  18. package/dist/addresses.d.mts +2 -0
  19. package/dist/addresses.d.ts +2 -0
  20. package/dist/addresses.js +7 -7
  21. package/dist/addresses.mjs +2 -2
  22. package/dist/builders/DynamicAuctionBuilder.d.mts +2 -0
  23. package/dist/builders/DynamicAuctionBuilder.d.ts +2 -0
  24. package/dist/builders/DynamicAuctionBuilder.js +16 -15
  25. package/dist/builders/DynamicAuctionBuilder.mjs +15 -14
  26. package/dist/builders/MulticurveBuilder.js +16 -15
  27. package/dist/builders/MulticurveBuilder.mjs +15 -14
  28. package/dist/builders/StaticAuctionBuilder.js +16 -15
  29. package/dist/builders/StaticAuctionBuilder.mjs +15 -14
  30. package/dist/builders/index.js +24 -23
  31. package/dist/builders/index.mjs +17 -16
  32. package/dist/builders/shared.d.mts +1 -1
  33. package/dist/builders/shared.d.ts +1 -1
  34. package/dist/builders/shared.js +17 -16
  35. package/dist/builders/shared.mjs +13 -12
  36. package/dist/{chunk-AZOBEWP3.mjs → chunk-3NMGCQJ4.mjs} +2 -2
  37. package/dist/chunk-3NMGCQJ4.mjs.map +1 -0
  38. package/dist/{chunk-OGYWNJGI.js → chunk-5TQOT6CW.js} +2 -2
  39. package/dist/chunk-5TQOT6CW.js.map +1 -0
  40. package/dist/{chunk-QQEOKYEX.js → chunk-6UHDSD42.js} +206 -28
  41. package/dist/chunk-6UHDSD42.js.map +1 -0
  42. package/dist/{chunk-5VV7STYK.js → chunk-7CAAI5DL.js} +101 -99
  43. package/dist/chunk-7CAAI5DL.js.map +1 -0
  44. package/dist/{chunk-KITPRKQ4.mjs → chunk-7P2SPZC7.mjs} +189 -11
  45. package/dist/chunk-7P2SPZC7.mjs.map +1 -0
  46. package/dist/chunk-7ZUV6WPX.mjs +3 -0
  47. package/dist/{chunk-5TL5V6UX.mjs.map → chunk-7ZUV6WPX.mjs.map} +1 -1
  48. package/dist/{chunk-HJ4AS5DZ.mjs → chunk-C6MH7HYT.mjs} +11 -11
  49. package/dist/{chunk-HJ4AS5DZ.mjs.map → chunk-C6MH7HYT.mjs.map} +1 -1
  50. package/dist/{chunk-D7PCIMWU.mjs → chunk-CATH4QRQ.mjs} +3 -3
  51. package/dist/{chunk-D7PCIMWU.mjs.map → chunk-CATH4QRQ.mjs.map} +1 -1
  52. package/dist/{chunk-MT34O3YL.js → chunk-CMNJZKTM.js} +24 -24
  53. package/dist/{chunk-MT34O3YL.js.map → chunk-CMNJZKTM.js.map} +1 -1
  54. package/dist/chunk-DNB3T5P2.js +269 -0
  55. package/dist/chunk-DNB3T5P2.js.map +1 -0
  56. package/dist/chunk-DSYPZETD.js +4 -0
  57. package/dist/{chunk-WTS75RUC.js.map → chunk-DSYPZETD.js.map} +1 -1
  58. package/dist/{chunk-3XYDN2XB.js → chunk-EH3V2BJF.js} +12 -12
  59. package/dist/chunk-EH3V2BJF.js.map +1 -0
  60. package/dist/{chunk-CS6FVODR.mjs → chunk-EIXUJANI.mjs} +5 -5
  61. package/dist/chunk-EIXUJANI.mjs.map +1 -0
  62. package/dist/{chunk-RWVNXU7Z.mjs → chunk-FFV6DMPA.mjs} +3 -3
  63. package/dist/{chunk-RWVNXU7Z.mjs.map → chunk-FFV6DMPA.mjs.map} +1 -1
  64. package/dist/{chunk-ZRNPHFP3.mjs → chunk-FLFYAWSS.mjs} +3 -3
  65. package/dist/{chunk-ZRNPHFP3.mjs.map → chunk-FLFYAWSS.mjs.map} +1 -1
  66. package/dist/{chunk-N33R22A2.js → chunk-FNUBKONK.js} +2 -2
  67. package/dist/{chunk-N33R22A2.js.map → chunk-FNUBKONK.js.map} +1 -1
  68. package/dist/{chunk-5WYXNWNH.js → chunk-FTRCBE3J.js} +11 -11
  69. package/dist/{chunk-5WYXNWNH.js.map → chunk-FTRCBE3J.js.map} +1 -1
  70. package/dist/{chunk-WKKOBMXR.js → chunk-FZ4FIWCR.js} +5 -5
  71. package/dist/{chunk-WKKOBMXR.js.map → chunk-FZ4FIWCR.js.map} +1 -1
  72. package/dist/chunk-GDODJJ7D.mjs +36 -0
  73. package/dist/chunk-GDODJJ7D.mjs.map +1 -0
  74. package/dist/{chunk-MQNSJCAW.mjs → chunk-GSBQIVME.mjs} +2 -2
  75. package/dist/{chunk-MQNSJCAW.mjs.map → chunk-GSBQIVME.mjs.map} +1 -1
  76. package/dist/{chunk-AZH2P4JK.mjs → chunk-GSTY3GO7.mjs} +3 -3
  77. package/dist/{chunk-AZH2P4JK.mjs.map → chunk-GSTY3GO7.mjs.map} +1 -1
  78. package/dist/{chunk-INLXNN7P.js → chunk-H7WPK5CR.js} +4 -4
  79. package/dist/{chunk-INLXNN7P.js.map → chunk-H7WPK5CR.js.map} +1 -1
  80. package/dist/{chunk-SAX7P3MH.js → chunk-HJFVRV47.js} +2 -2
  81. package/dist/{chunk-SAX7P3MH.js.map → chunk-HJFVRV47.js.map} +1 -1
  82. package/dist/{chunk-FVTTG72Z.mjs → chunk-HL7ZAAD4.mjs} +19 -7
  83. package/dist/chunk-HL7ZAAD4.mjs.map +1 -0
  84. package/dist/{chunk-2ZM4JVFC.js → chunk-J62YDWIK.js} +2 -2
  85. package/dist/chunk-J62YDWIK.js.map +1 -0
  86. package/dist/{chunk-CUB4F546.js → chunk-JB5XXPLL.js} +25 -13
  87. package/dist/chunk-JB5XXPLL.js.map +1 -0
  88. package/dist/{chunk-WDSV4O6T.mjs → chunk-OHA5KJ2M.mjs} +2 -2
  89. package/dist/chunk-OHA5KJ2M.mjs.map +1 -0
  90. package/dist/{chunk-COOVGAOE.js → chunk-OX5CESVM.js} +13 -13
  91. package/dist/chunk-OX5CESVM.js.map +1 -0
  92. package/dist/{chunk-VGOEXLQ2.js → chunk-QAPQGDWK.js} +2 -2
  93. package/dist/chunk-QAPQGDWK.js.map +1 -0
  94. package/dist/{chunk-OF7BIKXV.js → chunk-QRTABC4Z.js} +2 -2
  95. package/dist/chunk-QRTABC4Z.js.map +1 -0
  96. package/dist/{chunk-O3RH43H3.mjs → chunk-RI6SDMER.mjs} +3 -3
  97. package/dist/{chunk-O3RH43H3.mjs.map → chunk-RI6SDMER.mjs.map} +1 -1
  98. package/dist/{chunk-ADAAU4F5.mjs → chunk-RIIVW6TQ.mjs} +5 -3
  99. package/dist/chunk-RIIVW6TQ.mjs.map +1 -0
  100. package/dist/{chunk-VK5HAWX6.mjs → chunk-SWWLOD7Q.mjs} +2 -2
  101. package/dist/chunk-SWWLOD7Q.mjs.map +1 -0
  102. package/dist/{chunk-3L4DLMOK.js → chunk-TIGHBA37.js} +5 -5
  103. package/dist/{chunk-3L4DLMOK.js.map → chunk-TIGHBA37.js.map} +1 -1
  104. package/dist/{chunk-M2EMKIP5.mjs → chunk-TLEVIIUE.mjs} +3 -3
  105. package/dist/chunk-TLEVIIUE.mjs.map +1 -0
  106. package/dist/{chunk-LPA32BIK.mjs → chunk-U3GOWK6J.mjs} +2 -2
  107. package/dist/chunk-U3GOWK6J.mjs.map +1 -0
  108. package/dist/{chunk-YWK6YH6M.mjs → chunk-VCX6FG3E.mjs} +5 -5
  109. package/dist/{chunk-YWK6YH6M.mjs.map → chunk-VCX6FG3E.mjs.map} +1 -1
  110. package/dist/{chunk-64ZQRKG3.mjs → chunk-VYSOAGRU.mjs} +2 -2
  111. package/dist/chunk-VYSOAGRU.mjs.map +1 -0
  112. package/dist/chunk-WJBJARLJ.js +38 -0
  113. package/dist/chunk-WJBJARLJ.js.map +1 -0
  114. package/dist/{chunk-OROTK4OT.js → chunk-WNUB3UTT.js} +12 -12
  115. package/dist/chunk-WNUB3UTT.js.map +1 -0
  116. package/dist/{chunk-SMTHFPBA.js → chunk-XMFOZYNI.js} +2 -2
  117. package/dist/chunk-XMFOZYNI.js.map +1 -0
  118. package/dist/chunk-XRYLHTVV.mjs +267 -0
  119. package/dist/chunk-XRYLHTVV.mjs.map +1 -0
  120. package/dist/{chunk-S4IZ5ATO.js → chunk-XT3BAM4H.js} +5 -5
  121. package/dist/{chunk-S4IZ5ATO.js.map → chunk-XT3BAM4H.js.map} +1 -1
  122. package/dist/{chunk-VGCXJRUV.mjs → chunk-YBK6EBA5.mjs} +10 -10
  123. package/dist/chunk-YBK6EBA5.mjs.map +1 -0
  124. package/dist/{chunk-ZDTJ3BPS.js → chunk-YFEPTSI2.js} +11 -11
  125. package/dist/{chunk-ZDTJ3BPS.js.map → chunk-YFEPTSI2.js.map} +1 -1
  126. package/dist/{chunk-HH7HQ4HC.mjs → chunk-ZEDJUNC6.mjs} +2 -2
  127. package/dist/{chunk-HH7HQ4HC.mjs.map → chunk-ZEDJUNC6.mjs.map} +1 -1
  128. package/dist/deployments.generated.d.mts +39 -19
  129. package/dist/deployments.generated.d.ts +39 -19
  130. package/dist/deployments.generated.js +2 -2
  131. package/dist/deployments.generated.mjs +1 -1
  132. package/dist/entities/DopplerFactory.js +14 -13
  133. package/dist/entities/DopplerFactory.mjs +13 -12
  134. package/dist/entities/auction/DynamicAuction.js +9 -9
  135. package/dist/entities/auction/DynamicAuction.mjs +8 -8
  136. package/dist/entities/auction/MulticurvePool.js +10 -10
  137. package/dist/entities/auction/MulticurvePool.mjs +9 -9
  138. package/dist/entities/auction/StaticAuction.js +9 -9
  139. package/dist/entities/auction/StaticAuction.mjs +8 -8
  140. package/dist/entities/auction/index.js +17 -17
  141. package/dist/entities/auction/index.mjs +11 -11
  142. package/dist/entities/quoter/Quoter.js +9 -9
  143. package/dist/entities/quoter/Quoter.mjs +8 -8
  144. package/dist/entities/quoter/index.js +9 -9
  145. package/dist/entities/quoter/index.mjs +8 -8
  146. package/dist/entities/token/derc20/Derc20.js +5 -5
  147. package/dist/entities/token/derc20/Derc20.mjs +5 -5
  148. package/dist/entities/token/derc20/index.js +5 -5
  149. package/dist/entities/token/derc20/index.mjs +5 -5
  150. package/dist/entities/token/index.js +6 -6
  151. package/dist/entities/token/index.mjs +6 -6
  152. package/dist/index.d.mts +2 -1
  153. package/dist/index.d.ts +2 -1
  154. package/dist/index.js +71 -66
  155. package/dist/index.js.map +1 -1
  156. package/dist/index.mjs +24 -23
  157. package/dist/index.mjs.map +1 -1
  158. package/dist/types.d.mts +30 -2
  159. package/dist/types.d.ts +30 -2
  160. package/dist/types.js +8 -8
  161. package/dist/types.mjs +3 -3
  162. package/dist/utils/airlock.js +7 -7
  163. package/dist/utils/airlock.mjs +3 -3
  164. package/dist/utils/dopplerHookMigrator.d.mts +11 -0
  165. package/dist/utils/dopplerHookMigrator.d.ts +11 -0
  166. package/dist/utils/dopplerHookMigrator.js +12 -0
  167. package/dist/utils/dopplerHookMigrator.js.map +1 -0
  168. package/dist/utils/dopplerHookMigrator.mjs +3 -0
  169. package/dist/utils/dopplerHookMigrator.mjs.map +1 -0
  170. package/dist/utils/index.d.mts +1 -0
  171. package/dist/utils/index.d.ts +1 -0
  172. package/dist/utils/index.js +36 -31
  173. package/dist/utils/index.mjs +12 -11
  174. package/dist/utils/marketCapHelpers.js +13 -13
  175. package/dist/utils/marketCapHelpers.mjs +1 -1
  176. package/dist/utils/tokenAddressMiner.js +7 -7
  177. package/dist/utils/tokenAddressMiner.mjs +6 -6
  178. package/package.json +1 -1
  179. package/dist/chunk-2ZM4JVFC.js.map +0 -1
  180. package/dist/chunk-3XYDN2XB.js.map +0 -1
  181. package/dist/chunk-5TL5V6UX.mjs +0 -3
  182. package/dist/chunk-5VV7STYK.js.map +0 -1
  183. package/dist/chunk-64ZQRKG3.mjs.map +0 -1
  184. package/dist/chunk-ADAAU4F5.mjs.map +0 -1
  185. package/dist/chunk-AZOBEWP3.mjs.map +0 -1
  186. package/dist/chunk-COOVGAOE.js.map +0 -1
  187. package/dist/chunk-CS6FVODR.mjs.map +0 -1
  188. package/dist/chunk-CUB4F546.js.map +0 -1
  189. package/dist/chunk-FVTTG72Z.mjs.map +0 -1
  190. package/dist/chunk-KITPRKQ4.mjs.map +0 -1
  191. package/dist/chunk-LPA32BIK.mjs.map +0 -1
  192. package/dist/chunk-M2EMKIP5.mjs.map +0 -1
  193. package/dist/chunk-OF7BIKXV.js.map +0 -1
  194. package/dist/chunk-OGYWNJGI.js.map +0 -1
  195. package/dist/chunk-OROTK4OT.js.map +0 -1
  196. package/dist/chunk-QFQXHDC7.mjs +0 -247
  197. package/dist/chunk-QFQXHDC7.mjs.map +0 -1
  198. package/dist/chunk-QQEOKYEX.js.map +0 -1
  199. package/dist/chunk-RLUMYHPI.js +0 -249
  200. package/dist/chunk-RLUMYHPI.js.map +0 -1
  201. package/dist/chunk-SMTHFPBA.js.map +0 -1
  202. package/dist/chunk-VGCXJRUV.mjs.map +0 -1
  203. package/dist/chunk-VGOEXLQ2.js.map +0 -1
  204. package/dist/chunk-VK5HAWX6.mjs.map +0 -1
  205. package/dist/chunk-WDSV4O6T.mjs.map +0 -1
  206. package/dist/chunk-WTS75RUC.js +0 -4
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/addresses.ts"],"names":["GENERATED_DOPPLER_DEPLOYMENTS"],"mappings":";;;;;AAIO,IAAM,SAAA,GAAY;AAAA,EACvB,OAAA,EAAS,CAAA;AAAA,EACT,WAAA,EAAa,QAAA;AAAA,EACb,IAAA,EAAM,IAAA;AAAA,EACN,YAAA,EAAc,KAAA;AAAA,EACd,GAAA,EAAK,KAAA;AAAA,EACL,QAAA,EAAU,GAAA;AAAA,EACV,gBAAA,EAAkB,IAAA;AAAA,EAClB,aAAA,EAAe,KAAA;AAAA,EACf,aAAA,EAAe;AACjB;AA+DA,IAAM,YAAA,GAAe,4CAAA;AAEd,IAAM,SAAA,GAAsD;AAAA,EACjE,CAAC,SAAA,CAAU,OAAO,GAAG;AAAA,IACnB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAAE,OAAA;AAAA,IAC1D,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAC1D,iBAAA;AAAA,IACH,aAAA,EAAe,YAAA;AAAA,IACf,QAAA,EAAU,YAAA;AAAA,IACV,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAC3D,oBAAA;AAAA,IACH,gCAAA,EAAkCA,8CAAA,CAChC,SAAA,CAAU,OACZ,CAAA,CAAE,uCAAA;AAAA,IACF,sBAAA,EAAwBA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CACpE,sBAAA;AAAA,IACH,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAC/D,iBAAA;AAAA,IACH,WAAA,EAAa,YAAA;AAAA,IACb,eAAA,EAAiBA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAC7D,eAAA;AAAA,IACH,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CACxD,iBAAA;AAAA,IACH,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CACxD,iBAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAC1D,YAAA;AAAA,IACH,iBAAA,EAAmB,YAAA;AAAA,IACnB,qBAAA,EAAuBA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CACnE,qBAAA;AAAA,IACH,oBAAA,EAAsBA,8CAAA,CAA8B,SAAA,CAAU,OAAO,CAAA,CAClE,oBAAA;AAAA,IACH,eAAA,EAAiB,4CAAA;AAAA,IACjB,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM,4CAAA;AAAA,IACN,gBAAA,EAAkB,4CAAA;AAAA,IAClB,gBAAA,EAAkB,4CAAA;AAAA,IAClB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,WAAW,GAAG;AAAA,IACvB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CACzD,OAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CAC9D,iBAAA;AAAA,IACH,aAAA,EAAe,YAAA;AAAA,IACf,QAAA,EAAU,YAAA;AAAA,IACV,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CAC/D,oBAAA;AAAA,IACH,gCAAA,EAAkCA,8CAAA,CAChC,SAAA,CAAU,WACZ,CAAA,CAAE,uCAAA;AAAA,IACF,sBAAA,EAAwBA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CACxE,sBAAA;AAAA,IACH,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CACnE,iBAAA;AAAA,IACH,WAAA,EAAa,YAAA;AAAA,IACb,eAAA,EAAiBA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CACjE,eAAA;AAAA,IACH,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CAC5D,iBAAA;AAAA,IACH,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CAC5D,iBAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CAC9D,YAAA;AAAA,IACH,iBAAA,EAAmB,YAAA;AAAA,IACnB,qBAAA,EAAuBA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CACvE,qBAAA;AAAA,IACH,oBAAA,EAAsBA,8CAAA,CAA8B,SAAA,CAAU,WAAW,CAAA,CACtE,oBAAA;AAAA,IACH,eAAA,EAAiB,4CAAA;AAAA,IACjB,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM,4CAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,IAAI,GAAG;AAAA,IAChB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAAE,OAAA;AAAA,IACvD,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACvD,cAAA;AAAA,IACH,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACxD,oBAAA;AAAA,IACH,QAAA,EAAU,4CAAA;AAAA,IACV,qBAAA,EAAuBA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAChE,4BAAA;AAAA,IACH,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACxD,oBAAA;AAAA,IACH,uBAAA,EAAyBA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAClE,8BAAA;AAAA;AAAA,IACH,gCAAA,EAAkCA,8CAAA,CAChC,SAAA,CAAU,IACZ,CAAA,CAAE,uCAAA;AAAA;AAAA,IACF,4BAAA,EAA8BA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACvE,0BAAA;AAAA;AAAA,IACH,WAAA,EAAaA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACtD,iBAAA;AAAA,IACH,eAAA,EAAiBA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAC1D,eAAA;AAAA,IACH,WAAA,EAAa,4CAAA;AAAA,IACb,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAC5D,iBAAA;AAAA,IACH,sBAAA,EAAwBA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACjE,sBAAA;AAAA,IACH,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACrD,iBAAA;AAAA,IACH,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACrD,iBAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACvD,YAAA;AAAA,IACH,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EACE,4CAAA;AAAA,IACF,0BAAA,EAA4BA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CACrE,0BAAA;AAAA,IACH,oBAAA,EAAsBA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAC/D,oBAAA;AAAA,IACH,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,IAAI,CAAA,CAAE,OAAA;AAAA,IACvD,IAAA,EAAM,4CAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,YAAY,GAAG;AAAA,IACxB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAC1D,OAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAC/D,cAAA;AAAA,IACH,iBAAA,EAAmB,4CAAA;AAAA,IACnB,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAChE,oBAAA;AAAA,IACH,QAAA,EAAU,4CAAA;AAAA,IACV,qBAAA,EAAuBA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CACxE,4BAAA;AAAA,IACH,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAChE,oBAAA;AAAA,IACH,uBAAA,EAAyBA,8CAAA,CACvB,SAAA,CAAU,YACZ,CAAA,CAAE,8BAAA;AAAA,IACF,gCAAA,EAAkCA,8CAAA,CAChC,SAAA,CAAU,YACZ,CAAA,CAAE,uCAAA;AAAA;AAAA,IACF,4BAAA,EAA8BA,8CAAA,CAC5B,SAAA,CAAU,YACZ,CAAA,CAAE,0BAAA;AAAA;AAAA,IACF,sBAAA,EACE,4CAAA;AAAA,IACF,iBAAA,EAAmB,4CAAA;AAAA,IACnB,WAAA,EAAaA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAC9D,iBAAA;AAAA,IACH,eAAA,EAAiBA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAClE,eAAA;AAAA,IACH,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAC7D,iBAAA;AAAA,IACH,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAC7D,iBAAA;AAAA,IACH,cAAA,EAAgBA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CACjE,qBAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CAC/D,YAAA;AAAA,IACH,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CACpE,iBAAA;AAAA,IACH,qBAAA,EACE,4CAAA;AAAA,IACF,oBAAA,EAAsBA,8CAAA,CAA8B,SAAA,CAAU,YAAY,CAAA,CACvE,oBAAA;AAAA,IACH,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM,4CAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,GAAG,GAAG;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,GAAG,CAAA,CACtD,YAAA;AAAA,IACH,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,GAAG,CAAA,CACvD,oBAAA;AAAA,IACH,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,4CAAA;AAAA,IACf,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiBA,8CAAA,CAA8B,SAAA,CAAU,GAAG,CAAA,CACzD,eAAA;AAAA,IACH,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,GAAG,CAAA,CACpD,iBAAA;AAAA,IACH,UAAA,EAAY,YAAA;AAAA,IACZ,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,GAAG,CAAA,CAC3D,iBAAA;AAAA,IACH,qBAAA,EAAuB,YAAA;AAAA;AAAA,IACvB,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,GAAG,CAAA,CAAE,OAAA;AAAA,IACtD,IAAA,EAAM,4CAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,QAAQ,GAAG;AAAA,IACpB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CACtD,OAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CAC3D,YAAA;AAAA,IACH,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CAC5D,oBAAA;AAAA,IACH,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,4CAAA;AAAA,IACf,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CACzD,iBAAA;AAAA,IACH,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CACzD,iBAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CAC3D,YAAA;AAAA,IACH,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CAChE,iBAAA;AAAA,IACH,qBAAA,EAAuBA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CACpE,qBAAA;AAAA,IACH,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,QAAQ,CAAA,CACtD,OAAA;AAAA,IACH,IAAA,EAAM,4CAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,gBAAgB,GAAG;AAAA,IAC5B,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,gBAAgB,CAAA,CACnE,YAAA;AAAA,IACH,aAAA,EAAe,4CAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,4CAAA;AAAA,IACf,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,gBAAgB,CAAA,CACnE,YAAA;AAAA,IACH,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EAAuBA,8CAAA,CACrB,SAAA,CAAU,gBACZ,CAAA,CAAE,qBAAA;AAAA,IACF,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM,4CAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,aAAa,GAAG;AAAA,IACzB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC3D,OAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAChE,cAAA;AAAA,IACH,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CACjE,oBAAA;AAAA,IACH,QAAA,EAAU,YAAA;AAAA,IACV,aAAA,EAAeA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CACjE,oBAAA;AAAA,IACH,WAAA,EAAaA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC/D,iBAAA;AAAA,IACH,eAAA,EAAiBA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CACnE,eAAA;AAAA,IACH,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC9D,iBAAA;AAAA,IACH,UAAA,EAAY,4CAAA;AAAA,IACZ,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAChE,YAAA;AAAA,IACH,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CACrE,iBAAA;AAAA,IACH,qBAAA,EAAuBA,8CAAA,CACrB,SAAA,CAAU,aACZ,CAAA,CAAE,qBAAA;AAAA,IACF,oBAAA,EACE,4CAAA;AAAA;AAAA,IACF,eAAA,EAAiB,YAAA;AAAA,IACjB,aAAA,EAAe,YAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC3D,OAAA;AAAA,IACH,IAAA,EAAM,YAAA;AAAA;AAAA,IACN,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,CAAC,SAAA,CAAU,aAAa,GAAG;AAAA,IACzB,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC3D,OAAA;AAAA,IACH,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAChE,cAAA;AAAA,IACH,aAAA,EAAe,YAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,YAAA;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,eAAA,EAAiB,YAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAYA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC9D,iBAAA;AAAA,IACH,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAcA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAChE,YAAA;AAAA,IACH,iBAAA,EAAmBA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CACrE,iBAAA;AAAA,IACH,qBAAA,EAAuBA,8CAAA,CACrB,SAAA,CAAU,aACZ,CAAA,CAAE,qBAAA;AAAA,IACF,0BAAA,EAA4BA,8CAAA,CAC1B,SAAA,CAAU,aACZ,CAAA,CAAE,0BAAA;AAAA,IACF,gCAAA,EAAkCA,8CAAA,CAChC,SAAA,CAAU,aACZ,CAAA,CAAE,uCAAA;AAAA,IACF,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,YAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAASA,8CAAA,CAA8B,SAAA,CAAU,aAAa,CAAA,CAC3D,OAAA;AAAA,IACH,IAAA,EAAM,4CAAA;AAAA;AAAA,IACN,eAAA,EAAiB;AAAA;AAErB;AAIO,SAAS,aAAa,OAAA,EAAiC;AAC5D,EAAA,MAAM,SAAA,GAAY,UAAU,OAA2B,CAAA;AACvD,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,OAAO,CAAA,CAAE,CAAA;AAAA,EACpD;AACA,EAAA,OAAO,SAAA;AACT;AAKO,IAAM,sBAAsB,MAAA,CAAO,MAAA;AAAA,EACxC;AACF;AAKO,SAAS,mBAAmB,EAAA,EAAoC;AAErE,EAAA,OAAO,EAAA,IAAM,SAAA;AACf","file":"chunk-5VV7STYK.js","sourcesContent":["import { Address } from 'viem';\nimport { GENERATED_DOPPLER_DEPLOYMENTS } from './deployments.generated';\n\n// Chain IDs\nexport const CHAIN_IDS = {\n MAINNET: 1,\n ETH_SEPOLIA: 11155111,\n BASE: 8453,\n BASE_SEPOLIA: 84532,\n INK: 57073,\n UNICHAIN: 130,\n UNICHAIN_SEPOLIA: 1301,\n MONAD_TESTNET: 10143,\n MONAD_MAINNET: 143,\n} as const;\n\nexport type SupportedChainId = (typeof CHAIN_IDS)[keyof typeof CHAIN_IDS];\n\n// Human-friendly chain key type (e.g., 'BASE', 'UNICHAIN')\nexport type SupportedChainKey = keyof typeof CHAIN_IDS;\n\n// Contract addresses per chain\nexport interface ChainAddresses {\n // Core contracts\n airlock: Address;\n tokenFactory: Address;\n\n // Static auction contracts (V3)\n v3Initializer: Address;\n v3Quoter: Address;\n lockableV3Initializer?: Address;\n\n // Dynamic auction contracts (V4)\n v4Initializer: Address;\n // Multicurve initializer (V4) — optional per chain\n v4MulticurveInitializer?: Address;\n v4ScheduledMulticurveInitializer?: Address;\n v4DecayMulticurveInitializer?: Address;\n\n // DopplerHook system (for RehypeDopplerHook support)\n dopplerHookInitializer?: Address;\n rehypeDopplerHook?: Address;\n dopplerLens: Address;\n dopplerDeployer: Address;\n poolManager: Address;\n\n // Doppler404 contracts\n doppler404Factory?: Address;\n\n // Migration contracts\n v2Migrator: Address;\n v4Migrator: Address;\n v4MigratorHook?: Address;\n noOpMigrator?: Address;\n\n // Governance contracts\n governanceFactory: Address;\n noOpGovernanceFactory?: Address;\n launchpadGovernanceFactory?: Address;\n streamableFeesLocker?: Address;\n\n // Router contracts\n universalRouter: Address;\n univ2Router02?: Address;\n permit2: Address;\n\n // Other contracts\n bundler?: Address;\n\n // Uniswap contracts\n weth: Address;\n uniswapV2Factory?: Address;\n uniswapV3Factory?: Address;\n uniswapV4Quoter: Address;\n}\n\n// Not yet deployed placeholder\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address;\n\nexport const ADDRESSES: Record<SupportedChainId, ChainAddresses> = {\n [CHAIN_IDS.MAINNET]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .CloneERC20Factory as Address,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .UniswapV4Initializer as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MAINNET\n ].UniswapV4ScheduledMulticurveInitializer as Address,\n dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .DopplerHookInitializer as Address,\n rehypeDopplerHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .RehypeDopplerHook as Address,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .DopplerDeployer as Address,\n poolManager: '0x000000000004444c5dc75cB358380D2e3dE08A90' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .NoOpMigrator as Address,\n governanceFactory: ZERO_ADDRESS,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .NoOpGovernanceFactory as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .StreamableFeesLocker as Address,\n universalRouter: '0x66a9893cc07d91d95644aedd05d03f95e1dba8af' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' as Address,\n uniswapV2Factory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' as Address,\n uniswapV3Factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984' as Address,\n uniswapV4Quoter: '0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203' as Address,\n },\n [CHAIN_IDS.ETH_SEPOLIA]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .CloneERC20Factory as Address,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .UniswapV4Initializer as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.ETH_SEPOLIA\n ].UniswapV4ScheduledMulticurveInitializer as Address,\n dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .DopplerHookInitializer as Address,\n rehypeDopplerHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .RehypeDopplerHook as Address,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .DopplerDeployer as Address,\n poolManager: '0xE03A1074c86CFeDd5C142C4F04F1a1536e203543' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .NoOpMigrator as Address,\n governanceFactory: ZERO_ADDRESS,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .NoOpGovernanceFactory as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .StreamableFeesLocker as Address,\n universalRouter: '0x3A9D48AB9751398BbFa63ad67599Bb04e4BdF98b' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14' as Address,\n uniswapV4Quoter: '0x61b3f2011a92d183c7dbadbda940a7555ccf9227' as Address,\n },\n [CHAIN_IDS.BASE]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .TokenFactory80 as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV3Initializer as Address,\n v3Quoter: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a' as Address,\n lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .LockableUniswapV3Initializer as Address,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV4Initializer as Address,\n v4MulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV4MulticurveInitializer as Address, // From Doppler multicurve deployments (Base mainnet)\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE\n ].UniswapV4ScheduledMulticurveInitializer as Address, // From Doppler scheduled multicurve deployments (Base mainnet)\n v4DecayMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DecayMulticurveInitializer as Address, // From Doppler decay multicurve deployments (Base mainnet)\n dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DopplerLensQuoter as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DopplerDeployer as Address,\n poolManager: '0x498581ff718922c3f8e6a244956af099b2652b2b' as Address,\n rehypeDopplerHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .RehypeDopplerHook as Address,\n dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DopplerHookInitializer as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .NoOpMigrator as Address,\n governanceFactory: '0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9' as Address,\n noOpGovernanceFactory:\n '0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e' as Address,\n launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .LaunchpadGovernanceFactory as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .StreamableFeesLocker as Address,\n universalRouter: '0x6ff5693b99212da76ad316178a184ab56d299b43' as Address,\n univ2Router02: '0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Bundler as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x0d5e0f971ed27fbff6c2837bf31316121532048d' as Address,\n },\n [CHAIN_IDS.BASE_SEPOLIA]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .TokenFactory80 as Address,\n doppler404Factory: '0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7' as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV3Initializer as Address,\n v3Quoter: '0xC5290058841028F1614F3A6F0F5816cAd0df5E27' as Address,\n lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .LockableUniswapV3Initializer as Address,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV4Initializer as Address,\n v4MulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE_SEPOLIA\n ].UniswapV4MulticurveInitializer as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE_SEPOLIA\n ].UniswapV4ScheduledMulticurveInitializer as Address, // From Doppler scheduled multicurve deployments (Base Sepolia)\n v4DecayMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE_SEPOLIA\n ].DecayMulticurveInitializer as Address, // From Doppler decay multicurve deployments (Base Sepolia)\n dopplerHookInitializer:\n '0x98CD6478DeBe443069dB863Abb9626d94de9A544' as Address,\n rehypeDopplerHook: \"0x636a756cee08775cc18780f52dd90b634f18ad37\" as Address,\n dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .DopplerLensQuoter as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .DopplerDeployer as Address,\n poolManager: '0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV4Migrator as Address,\n v4MigratorHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV4MigratorHook as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .GovernanceFactory as Address,\n noOpGovernanceFactory:\n '0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228' as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .StreamableFeesLocker as Address,\n universalRouter: '0x492E6456D9528771018DeB9E87ef7750EF184104' as Address,\n univ2Router02: '0x1689E7B1F10000AE47eBfE339a4f69dECd19F602' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x69DB7c20cDdA49Bed2bFb21e16Fa218330C50661' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x4A6513c898fe1B2d0E78d3b0e0A4a151589B1cBa' as Address,\n },\n [CHAIN_IDS.INK]: {\n airlock: '0x014E1c0bd34f3B10546E554CB33B3293fECDD056' as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .TokenFactory as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .UniswapV3Initializer as Address,\n v3Quoter: '0x96b572D2d880cf2Fa2563651BD23ADE6f5516652' as Address,\n v4Initializer: '0xC99b485499f78995C6F1640dbB1413c57f8BA684' as Address,\n dopplerLens: '0x3972c00f7ed4885e145823eb7c655375d275a1c5' as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .DopplerDeployer as Address,\n poolManager: '0x360e68faccca8ca495c1b759fd9eee466db9fb32' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .UniswapV2Migrator as Address,\n v4Migrator: ZERO_ADDRESS,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0x112908dac86e20e7241b0927479ea3bf935d1fa0' as Address,\n univ2Router02: '0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x3972c00f7ed4885e145823eb7c655375d275a1c5' as Address,\n },\n [CHAIN_IDS.UNICHAIN]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .TokenFactory as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .UniswapV3Initializer as Address,\n v3Quoter: '0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658' as Address,\n v4Initializer: '0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB' as Address,\n dopplerLens: '0x333e3c607b141b18ff6de9f258db6e77fe7491e0' as Address,\n dopplerDeployer: '0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f' as Address,\n poolManager: '0x1f98400000000000000000000000000000000004' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .NoOpGovernanceFactory as Address,\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xef740bf23acae26f6492b10de645d6b98dc8eaf3' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .Bundler as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x333e3c607b141b18ff6de9f258db6e77fe7491e0' as Address,\n },\n [CHAIN_IDS.UNICHAIN_SEPOLIA]: {\n airlock: '0x651ab94B4777e2e4cdf96082d90C65bd947b73A4' as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA]\n .TokenFactory as Address,\n v3Initializer: '0x7Fb9a622186B4660A5988C223ebb9d3690dD5007' as Address,\n v3Quoter: '0x6Dd37329A1A225a6Fca658265D460423DCafBF89' as Address,\n v4Initializer: '0x992375478626E67F4e639d3298EbCAaE51C3dF0b' as Address,\n dopplerLens: '0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472' as Address,\n dopplerDeployer: '0x2f2bacd46d3f5c9ee052ab392b73711db89129db' as Address,\n poolManager: '0x00B036B58a818B1BC34d502D3fE730Db729e62AC' as Address,\n v2Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n v4Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA]\n .NoOpMigrator as Address,\n governanceFactory: '0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC' as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.UNICHAIN_SEPOLIA\n ].NoOpGovernanceFactory as Address,\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472' as Address,\n },\n [CHAIN_IDS.MONAD_TESTNET]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .TokenFactory80 as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .UniswapV3Initializer as Address,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .UniswapV4Initializer as Address,\n dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .DopplerLensQuoter as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .DopplerDeployer as Address,\n poolManager: '0xe93882f395B0b24180855c68Ab19B2d78573ceBc' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .UniswapV2Migrator as Address,\n v4Migrator: '0xBEd386a1Fc62B6598c9b8d2BF634471B6Fe75EB7' as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_TESTNET\n ].NoOpGovernanceFactory as Address,\n streamableFeesLocker:\n '0x91231cDdD8d6C86Df602070a3081478e074b97b7' as Address, // Not yet deployed\n universalRouter: ZERO_ADDRESS,\n univ2Router02: ZERO_ADDRESS,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .Bundler as Address,\n weth: ZERO_ADDRESS, // TODO: Get Monad Testnet weth\n uniswapV4Quoter: ZERO_ADDRESS,\n },\n [CHAIN_IDS.MONAD_MAINNET]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .TokenFactory80 as Address,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: '0x66266174564170519409d8853898f065c719536b' as Address,\n v4Initializer: ZERO_ADDRESS,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: ZERO_ADDRESS,\n poolManager: '0x188d586ddcf52439676ca21a244753fa19f9ea8e' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .UniswapV2Migrator as Address,\n v4Migrator: ZERO_ADDRESS,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_MAINNET\n ].NoOpGovernanceFactory as Address,\n launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_MAINNET\n ].LaunchpadGovernanceFactory as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_MAINNET\n ].UniswapV4ScheduledMulticurveInitializer as Address,\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0x0d97dc33264bfc1c226207428a79b26757fb9dc3' as Address,\n univ2Router02: ZERO_ADDRESS,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .Bundler as Address,\n weth: '0x3bd359c1119da7da1d913d1c4d2b7c461115433a' as Address, // INFO: this is wmon, but we treat it as weth because mon is native\n uniswapV4Quoter: '0xa222dd357a9076d1091ed6aa2e16c9742dd26891' as Address,\n },\n};\n/**\n * Get addresses for a specific chain\n */\nexport function getAddresses(chainId: number): ChainAddresses {\n const addresses = ADDRESSES[chainId as SupportedChainId];\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chainId}`);\n }\n return addresses;\n}\n\n/**\n * List of supported chain IDs for easy iteration/validation\n */\nexport const SUPPORTED_CHAIN_IDS = Object.values(\n CHAIN_IDS,\n) as SupportedChainId[];\n\n/**\n * Runtime/type guard for narrowing a number to SupportedChainId\n */\nexport function isSupportedChainId(id: number): id is SupportedChainId {\n // Numeric object keys are coerced to strings at runtime; `in` is fine here\n return id in ADDRESSES;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/abis/bytecodes/derc20.ts"],"names":[],"mappings":";AAAA,IAAO,cAAA,GACL","file":"chunk-64ZQRKG3.mjs","sourcesContent":["export default\n '0x6101c0604052346100ab5761002761001561023e565b9897909796919695929594939461070b565b60405161278290816112d5823960805181611a4a015260a05181611b07015260c05181611a14015260e05181611a9901526101005181611abf01526101205181610b6b01526101405181610b9401526101605181818161065201528181610c6201526115660152610180518181816104a5015261158801526101a051816114190152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176100e657604052565b6100af565b604051906100fa6040836100c3565b565b81601f820112156100ab578051906001600160401b0382116100e65760405192610130601f8401601f1916602001856100c3565b828452602083830101116100ab57815f9260208093018386015e8301015290565b51906001600160a01b03821682036100ab57565b6001600160401b0381116100e65760051b60200190565b9080601f830112156100ab57815161019381610165565b926101a160405194856100c3565b81845260208085019260051b8201019283116100ab57602001905b8282106101c95750505090565b602080916101d684610151565b8152019101906101bc565b9080601f830112156100ab5781516101f881610165565b9261020660405194856100c3565b81845260208085019260051b8201019283116100ab57602001905b82821061022e5750505090565b8151815260209182019101610221565b613a9790813803806040519361025482866100c3565b8439820191610140818403126100ab5780516001600160401b0381116100ab57836102809183016100fc565b60208201519093906001600160401b0381116100ab57816102a29184016100fc565b936040830151936102b560608501610151565b936102c260808201610151565b9360a08201519360c08301519360e084015160018060401b0381116100ab57836102ed91860161017c565b6101008501519094906001600160401b0381116100ab57846103109183016101e1565b6101208201519094906001600160401b0381116100ab5761033192016100fc565b9199989796959493929190565b156103465750565b630ca514df60e01b5f5260045266470de4df82000060245260445ffd5b90600182811c92168015610391575b602083101461037d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610372565b601f81116103a7575050565b60035f5260205f20906020601f840160051c830193106103e1575b601f0160051c01905b8181106103d6575050565b5f81556001016103cb565b90915081906103c2565b601f82116103f857505050565b5f5260205f20906020601f840160051c83019310610430575b601f0160051c01905b818110610425575050565b5f815560010161041a565b9091508190610411565b8160011b915f199060031b1c19161790565b80519091906001600160401b0381116100e6576104758161046e601054610363565b60106103eb565b602092601f82116001146104a857610498929382915f9261049d575b505061043a565b601055565b015190505f80610491565b60105f52601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672915f5b86811061050c57508360019596106104f4575b505050811b01601055565b01515f1960f88460031b161c191690555f80806104e9565b919260206001819286850151815501940192016104d6565b80519091906001600160401b0381116100e65761054d81610546600454610363565b60046103eb565b602092601f82116001146105745761056f929382915f9261049d57505061043a565b600455565b60045f52601f198216937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b8681106105d857508360019596106105c0575b505050811b01600455565b01515f1960f88460031b161c191690555f80806105b5565b919260206001819286850151815501940192016105a2565b156105f757565b631dc0052360e11b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b906702c68af0bb1400008202918083046702c68af0bb140000149015171561063e57565b610606565b634e487b7160e01b5f52603260045260245ffd5b805182101561066b5760209160051b010190565b610643565b6001600160a01b03165f90815260096020526040902090565b9190820180921161063e57565b1561069f575050565b630443fb3960e11b5f5260045260245260445ffd5b156106bd575050565b6323f3f88b60e01b5f5260045260245260445ffd5b156106db575050565b6305767d1760e01b5f5260045260245260445ffd5b5f1981019190821161063e57565b9190820391821161063e57565b61074b9591816107249261073d959a9b99969c97610873565b6107388166470de4df82000081111561033e565b600d55565b42610160526101805261044c565b8251610759825182146105f0565b5f936107756107678561061a565b670de0b6b3a7640000900490565b5f935b8385106107d75750505050506100fa9291816107a661079c6107676107c29561061a565b83818111156106b4565b6107b381838181106106d2565b816101a052816107c8576106fe565b906109d9565b6107d282306109d9565b6106fe565b909192939561086884600192610863868b61085c61082a61081d8461085261082a61081d878f8161080791610657565b519c8d61084b61084361082a61081d8686610657565b516001600160a01b031690565b6001600160a01b03165f90815260116020526040902090565b918254610689565b9055610657565b541115938d610657565b5490610696565b610689565b960193929190610778565b9290604051916108846040846100c3565b60018352603160f81b60208401908152845190946001600160401b0382116100e6576108ba826108b5600354610363565b61039b565b602090601f83116001146109525791806108e0926108e895945f9261049d57505061043a565b600355610524565b6108f181610b0f565b610120526108fe82610bf7565b610140526020815191012060e052519020610100524660a05261091f610cdc565b6080523060c0526001600160a01b0381161561093e576100fa90610ac7565b631e4fbdf760e01b5f90815260045260245ffd5b60035f52601f19831691907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b925f5b8181106109c157509160019391856108e8979694106109a9575b505050811b01600355610524565b01515f1960f88460031b161c191690555f808061099b565b92936020600181928786015181550195019301610981565b91906001600160a01b0383168015610ab457600c546001600160a01b03811682149081610aa5575b50610a9657610a1a610a1583600254610689565b600255565b6001600160a01b0384165f90815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254926001600160d01b03808511610a7f57506100fa929350610da5565b630e58ae9360e11b5f52600485905260245260445ffd5b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f610a01565b63ec442f0560e01b5f525f60045260245ffd5b600b80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908151602081105f14610b2a575090610b2790610d3a565b90565b6001600160401b0381116100e657610b4e81610b47600554610363565b60056103eb565b602092601f8211600114610b7857610b70929382915f9261049d57505061043a565b60055560ff90565b60055f52601f198216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b868110610bdf5750836001959610610bc7575b505050811b0160055560ff90565b01515f1960f88460031b161c191690555f8080610bb9565b91926020600181928685015181550194019201610ba6565b908151602081105f14610c0f575090610b2790610d3a565b6001600160401b0381116100e657610c3381610c2c600654610363565b60066103eb565b602092601f8211600114610c5d57610c55929382915f9261049d57505061043a565b60065560ff90565b60065f52601f198216937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b868110610cc45750836001959610610cac575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080610c9e565b91926020600181928685015181550194019201610c8b565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152610d3460c0826100c3565b51902090565b601f815111610d65576020815191015160208210610d56571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b90610daf81610ea4565b9165ffffffffffff4311610e8c57600a5480610e565750610de9610dd96100fa945f5b6001611278565b65ffffffffffff4316600a611159565b50506001600160a01b03168015610e3e575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f9182526040909120546001600160a01b039081169116610fd3565b610e4f610e4a83610ea4565b610ed5565b5050610dfb565b92835f1981011161063e57600a5f525f80516020613a57833981519152909301546100fa93610de991610dd9919060301c610dd2565b6306dfcc6560e41b5f5260306004524360245260445ffd5b6001600160d01b038111610ebe576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b65ffffffffffff4311610e8c57600a5480610eff5750610dd9610efb915f5b6002611278565b9091565b805f1981011161063e57600a5f525f80516020613a578339815191520154610efb91610dd99160301c610ef4565b65ffffffffffff4311610e8c57805480610f615750610f51610efb925f6002611278565b9065ffffffffffff431690611159565b805f1981011161063e575f82815260209020015f190154610efb92610f519160301c610ef4565b65ffffffffffff4311610e8c57805480610fac5750610f51610efb925f6001611278565b805f1981011161063e575f82815260209020015f190154610efb92610f519160301c610dd2565b6001600160a01b038083169392919081169081851415806110a8575b610ffb575b5050505050565b8161105d575b505082611010575b8080610ff4565b5f80516020613a778339815191529161103461102e61103a93610670565b91610ea4565b90610f88565b604080516001600160d01b039384168152919092166020820152a25f8080611009565b6110866110775f80516020613a7783398151915292610670565b61108086610ea4565b90610f2d565b604080516001600160d01b039384168152919092166020820152a25f80611001565b50831515610fef565b9065ffffffffffff82549181199060301b169116179055565b908154680100000000000000008110156100e6576001810180845581101561066b576100fa925f5260205f20019065ffffffffffff81511665ffffffffffff19835416178255602060018060d01b0391015116906110b1565b604080519192919081016001600160401b038111828210176100e657604052915465ffffffffffff8116835260301c6020830152565b80549293929190821561124f57611185611180611175856106f0565b835f5260205f200190565b611123565b9065ffffffffffff61119d835165ffffffffffff1690565b8185169182911611611240576112049460209488926111d06111c5875165ffffffffffff1690565b65ffffffffffff1690565b0361120857506111f6926111e66111f1926106f0565b905f5260205f200190565b6110b1565b01516001600160d01b031690565b9190565b91505061123b9161122861121a6100eb565b65ffffffffffff9093168352565b6001600160d01b038816828601526110ca565b6111f6565b632520601d60e01b5f5260045ffd5b611273925061125f61121a6100eb565b6001600160d01b03851660208301526110ca565b5f9190565b919091806001146112ba5760021461129e57634e487b7160e01b5f52605160045260245ffd5b6001600160d01b039081169181169190910390811161063e5790565b506001600160d01b039182169082160190811161063e579056fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146102d4578063095ea7b3146102cf57806310aa0ebb146102ca57806313cff13d146102c55780631514617e146102c057806316f0115b146102bb57806318160ddd146102b657806320720df7146102b1578063207d0636146102ac57806323b872dd146102a7578063254800d4146102a2578063313ce5671461029d5780633644e515146102985780633a46b1a8146102935780633c130d901461028e57806342966c68146102895780634bf5d7e9146102845780634c8697951461027f578063587cde1e1461027a5780635c19a95c146102755780636fcfff451461027057806370a082311461026b578063715018a6146102665780637ecebe001461026157806384b0196e1461025c57806386d1a69f1461025757806389026538146102525780638da5cb5b1461024d5780638e539e8c146102485780638e80ff5d1461024357806391ddadf41461023e57806395d89b411461023957806398cd6153146102345780639ab24eb01461022f5780639ccb51751461022a578063a9059cbb14610225578063c3cda52014610220578063c551a2f91461021b578063d505accf14610216578063dd62ed3e14610211578063f1127ed81461020c578063f2fde38b14610207578063f68d90d8146102025763f6939d34146101fd575f80fd5b611494565b611402565b61138f565b6112f8565b6112cc565b6111c1565b6111a9565b6110b1565b61106b565b610fee565b610fa7565b610f36565b610e65565b610e3a565b610e1d565b610d29565b610d01565b610ccb565b610c50565b610b53565b610b1b565b610ad3565b610ab0565b610a4e565b610a2c565b6109ec565b6109c9565b610939565b610868565b6107d6565b6106b2565b610690565b610675565b61063b565b61056d565b61052a565b61050d565b6104f0565b6104c8565b61048e565b610471565b61044c565b61041b565b610311565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061030e9281815201906102d9565b90565b346103eb575f3660031901126103eb576040515f60035461033181610747565b80845290600181169081156103c75750600114610369575b61036583610359818503826107b3565b604051918291826102fd565b0390f35b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106103ad57509091508101602001610359610349565b919260018160209254838588010152019101909291610395565b60ff191660208086019190915291151560051b840190910191506103599050610349565b5f80fd5b600435906001600160a01b03821682036103eb57565b602435906001600160a01b03821682036103eb57565b346103eb5760403660031901126103eb576104416104376103ef565b6024359033611d8b565b602060405160018152f35b346103eb575f3660031901126103eb57602060ff600c5460a01c166040519015158152f35b346103eb575f3660031901126103eb576020600e54604051908152f35b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103eb575f3660031901126103eb57600c546040516001600160a01b039091168152602090f35b346103eb575f3660031901126103eb576020600254604051908152f35b346103eb575f3660031901126103eb576020600d54604051908152f35b346103eb5760203660031901126103eb576105436103ef565b61054b61190d565b600c80546001600160a81b0319166001600160a01b0392909216919091179055005b346103eb5760603660031901126103eb576105866103ef565b61058e610405565b6044359061059c33846118ae565b92600184016105bc575b6105b0935061194b565b60405160018152602090f35b828410610620576001600160a01b038116801561060d5733156105fa576105b09484915f526001602052036105f43360405f2061146e565b556105a6565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103eb575f3660031901126103eb57602060405160128152f35b346103eb575f3660031901126103eb5760206106aa611a11565b604051908152f35b346103eb5760403660031901126103eb576106cb6103ef565b60243565ffffffffffff6106de43611b2d565b169182821015610731576001600160a01b03165f90815260096020526040902061036592506001600160d01b0391610720919061071a90611b2d565b90611b5c565b604051911681529081906020820190565b50637669fc0f60e11b5f5260045260245260445ffd5b90600182811c92168015610775575b602083101461076157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610756565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176107ae57604052565b61077f565b601f909101601f19168101906001600160401b038211908210176107ae57604052565b346103eb575f3660031901126103eb576040515f6010546107f681610747565b80845290600181169081156103c7575060011461081d5761036583610359818503826107b3565b60105f9081525f80516020612736833981519152939250905b80821061084e57509091508101602001610359610349565b919260018160209254838588010152019101909291610836565b346103eb5760203660031901126103eb57600435331561092657600c546001600160a01b038116159081610917575b50610908576108a53361143c565b54908082106108f157806108ef92036108bd3361143c565b556108cb8160025403600255565b6040518181525f9033905f8051602061271683398151915290602090a35f336124a5565b005b63391434e360e21b5f526109059133611934565b5ffd5b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f610897565b634b637e8f60e11b5f525f60045260245ffd5b346103eb575f3660031901126103eb5761095243611b2d565b65ffffffffffff8061096343611b2d565b169116036109ba5761036560405161097c6040826107b3565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c7400000060208201526040519182916020835260208301906102d9565b6301bfc1c560e61b5f5260045ffd5b346103eb5760203660031901126103eb5760206106aa6109e76103ef565b611564565b346103eb5760203660031901126103eb576001600160a01b03610a0d6103ef565b165f526008602052602060018060a01b0360405f205416604051908152f35b346103eb5760203660031901126103eb576108ef610a486103ef565b33611bed565b346103eb5760203660031901126103eb576001600160a01b03610a6f6103ef565b165f52600960205260405f205463ffffffff8111610a995760405163ffffffff9091168152602090f35b6306dfcc6560e41b5f52602060045260245260445ffd5b346103eb5760203660031901126103eb5760206106aa610ace6103ef565b611640565b346103eb575f3660031901126103eb57610aeb61190d565b600b80546001600160a01b031981169091555f906001600160a01b03165f805160206126f68339815191528280a3005b346103eb5760203660031901126103eb576001600160a01b03610b3c6103ef565b165f526007602052602060405f2054604051908152f35b346103eb575f3660031901126103eb57610bf7610b8f7f00000000000000000000000000000000000000000000000000000000000000006120af565b610bb87f0000000000000000000000000000000000000000000000000000000000000000612174565b6020604051610bc782826107b3565b5f815281610c0581830194601f198301368737604051978897600f60f81b895260e0858a015260e08901906102d9565b9087820360408901526102d9565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b828110610c3957505050500390f35b835185528695509381019392810192600101610c2a565b346103eb575f3660031901126103eb577f000000000000000000000000000000000000000000000000000000000000000015610cbc57610c8f33611564565b335f526011602052600160405f2001908154818101809111610cb7576108ef9255333061194b565b6114d8565b63641c0b2160e11b5f5260045ffd5b346103eb575f3660031901126103eb57610ce361190d565b600c805460ff60a01b1916600160a01b17905542600f819055600e55005b346103eb575f3660031901126103eb57600b546040516001600160a01b039091168152602090f35b346103eb5760203660031901126103eb5760043565ffffffffffff610d4d43611b2d565b169081811015610e0857610d6090611b2d565b600a54905f829160058411610db4575b610d7c9350600a611f63565b80610d98575060205f5b6040516001600160d01b039091168152f35b610da3602091611518565b600a5f52815f20015460301c610d86565b9192610dbf81611df0565b8103908111610cb757610d7c93600a5f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14610df6575091610d70565b929150610e02906114fd565b90610d70565b637669fc0f60e11b5f5260045260245260445ffd5b346103eb575f3660031901126103eb576020600f54604051908152f35b346103eb575f3660031901126103eb576020610e5543611b2d565b65ffffffffffff60405191168152f35b346103eb575f3660031901126103eb576040515f600454610e8581610747565b80845290600181169081156103c75750600114610eac5761036583610359818503826107b3565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610ef057509091508101602001610359610349565b919260018160209254838588010152019101909291610ed8565b60405190610f196040836107b3565b565b6001600160401b0381116107ae57601f01601f191660200190565b346103eb5760203660031901126103eb576004356001600160401b0381116103eb57366023820112156103eb578060040135610f7181610f1b565b90610f7f60405192836107b3565b80825236602482850101116103eb576020815f9260246108ef9601838601378301015261165a565b346103eb5760203660031901126103eb576001600160a01b03610fc86103ef565b165f526009602052602060018060d01b03610fe560405f20611c59565b16604051908152f35b346103eb5760203660031901126103eb5760043561100a61190d565b66470de4df820000811161104e57600e54151580611039575b61102c57600d55005b6110346117ac565b600d55005b50600f544281420311610cb757421415611023565b630ca514df60e01b5f5260045266470de4df82000060245260445ffd5b346103eb5760403660031901126103eb576104416110876103ef565b602435903361194b565b6064359060ff821682036103eb57565b6084359060ff821682036103eb57565b346103eb5760c03660031901126103eb576110ca6103ef565b602435906044356110d9611091565b6084359060a43592804211611197579161115e93916111506111559460405160208101917fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf835260018060a01b038a1660408301528a606083015260808201526080815261114860a0826107b3565b519020611c83565b612219565b909291926122ba565b61116781611d69565b809303611178576108ef9250611bed565b90506301d4b62360e61b5f5260018060a01b031660045260245260445ffd5b632341d78760e11b5f5260045260245ffd5b346103eb575f3660031901126103eb576108ef6117ac565b346103eb5760e03660031901126103eb576111da6103ef565b6111e2610405565b60443590606435926111f26110a1565b60a43560c435908642116112b95761127e9261127961121086611d69565b9860405160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835260018060a01b0389169b8c604084015260018060a01b038b1660608401528b608084015260a083015260c082015260c0815261114860e0826107b3565b611ca9565b936001600160a01b03851603611298576108ef9350611d8b565b6325c0072360e11b5f526001600160a01b038085166004521660245260445ffd5b8663313c898160e11b5f5260045260245ffd5b346103eb5760403660031901126103eb5760206106aa6112ea6103ef565b6112f2610405565b906118ae565b346103eb5760403660031901126103eb576113116103ef565b6024359063ffffffff821682036103eb5761136691611360916113326118f5565b5061133b6118f5565b506001600160a01b03165f90815260096020526040902061135a6118f5565b50612336565b5061235f565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925290f35b346103eb5760203660031901126103eb576113a86103ef565b6113b061190d565b6001600160a01b031680156113ef57600b80546001600160a01b0319811683179091556001600160a01b03165f805160206126f68339815191525f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6001600160a01b03165f90815260208190526040902090565b6001600160a01b03165f90815260096020526040902090565b9060018060a01b03165f5260205260405f2090565b908152602081019190915260400190565b346103eb5760203660031901126103eb576001600160a01b036114b56103ef565b165f52601160205260405f20600181549101549061036560405192839283611483565b634e487b7160e01b5f52601160045260245ffd5b906301e133808201809211610cb757565b9060018201809211610cb757565b91908201809211610cb757565b5f19810191908211610cb757565b91908203918211610cb757565b81810292918115918404141715610cb757565b8115611550570490565b634e487b7160e01b5f52601260045260245ffd5b7f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000808301808411610cb757421015611619576001600160a01b0382165f9081526011602052604090205442938403938411610cb7576115f66001926115f161030e9661161194611533565b611546565b6001600160a01b039093165f90815260116020526040902090565b015490611526565b506001600160a01b03165f908152601160205260409020805461030e925090600190611611565b6001600160a01b03165f9081526020819052604090205490565b9061166361190d565b81516001600160401b0381116107ae5761168781611682601054610747565b611730565b602092601f82116001146116c7576116b7929382915f926116bc575b50508160011b915f199060031b1c19161790565b601055565b015190505f806116a3565b60105f52601f198216935f80516020612736833981519152915f5b8681106117185750836001959610611700575b505050811b01601055565b01515f1960f88460031b161c191690555f80806116f5565b919260206001819286850151815501940192016116e2565b601f811161173c575050565b60105f5260205f20906020601f840160051c83019310611776575b601f0160051c01905b81811061176b575050565b5f8155600101611760565b9091508190611757565b1561178757565b633601f27d60e11b5f5260045ffd5b1561179d57565b63bbb80c2b60e01b5f5260045ffd5b600e546117ba811515611780565b5f90600254600f5490600d54915b6117d1846114ec565b4211156118355761182d9161182161181a6118096117fa611827956117f58a6114ec565b611526565b6118048886611533565b611533565b6a1a1601fc4ea7109e000000900490565b809261150b565b9561150b565b926114ec565b9192826117c8565b9091610f19949392824211611876575b50505061185c90611857831515611796565b600e55565b61186542600f55565b600b546001600160a01b0316611cb8565b6118096118a59361189961189261185c97989561189f95611533565b9142611526565b90611533565b9061150b565b91905f80611845565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba3146118ee576118ea9160018060a01b03165f52600160205260405f2061146e565b5490565b50505f1990565b6040519061190282610793565b5f6020838281520152565b600b546001600160a01b0316330361192157565b63118cdaa760e01b5f523360045260245ffd5b6001600160a01b0316600452602452604452606490565b6001600160a01b038116939291908415610926576001600160a01b03821680156119fe57600c546001600160a01b038116821490816119ef575b50610908576119938261143c565b54958487106119da5784610f199697036119ac8461143c565b556119b68461143c565b8054860190556040518581525f8051602061271683398151915290602090a36124a5565b63391434e360e21b5f52610905858885611934565b60ff915060a01c16155f611985565b63ec442f0560e01b5f525f60045260245ffd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611b04575b15611a6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611afe60c0826107b3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611a43565b65ffffffffffff8111611b455765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b908154905f829160058411611b9a575b611b77935084611f63565b80611b825750505f90565b611b8b90611518565b905f5260205f20015460301c90565b9192611ba581611df0565b8103908111610cb757611b7793855f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14611bdb575091611b6c565b929150611be7906114fd565b90611b6c565b6001600160a01b038181165f81815260086020526040812080548685166001600160a01b031982168117909255610f1996941694611c539390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a4611640565b91611fc7565b80549081611c675750505f90565b815f19810111610cb7575f525f199060205f2001015460301c90565b604290611c8e611a11565b906040519161190160f01b8352600283015260228201522090565b9161030e939161115593612219565b91906001600160a01b03831680156119fe57600c546001600160a01b03811682149081611d5a575b5061090857611cf9611cf48360025461150b565b600255565b611d028461143c565b8054830190556040518281525f905f8051602061271683398151915290602090a3600254926001600160d01b03808511611d435750610f199293505f6124a5565b630e58ae9360e11b5f52600485905260245260445ffd5b60ff915060a01c16155f611ce0565b6001600160a01b03165f90815260076020526040902080546001810190915590565b6001600160a01b031690811561060d576001600160a01b0381169283156105fa5780611de37f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593855f52600160205260405f2061146e565b55604051908152602090a3565b8015611f5e5761030e90611ef4611eed611ee3611ed9611ecf611ec5611ebb611eb16001611e9f5f8b608081901c80611f50575b5080611e33611e959260401c90565b80611f43575b50611e448160201c90565b80611f36575b50611e558160101c90565b80611f29575b50611e668160081c90565b80611f1c575b50611e778160041c90565b80611f0f575b50611e888160021c90565b80611f02575b5060011c90565b611efa5760011c90565b1b611eaa818b611546565b0160011c90565b611eaa818a611546565b611eaa8189611546565b611eaa8188611546565b611eaa8187611546565b611eaa8186611546565b611eaa8185611546565b8092611546565b90612383565b820160011c90565b600291509201915f611e8e565b600491509201915f611e7d565b600891509201915f611e6c565b601091509201915f611e5b565b602091509201915f611e4a565b604091509201915f611e39565b608092509050611e95611e24565b505f90565b91905b838210611f735750505090565b9091928083169080841860011c8201809211610cb757845f5265ffffffffffff8260205f2001541665ffffffffffff8416105f14611fb55750925b9190611f66565b939250611fc1906114fd565b91611fae565b6001600160a01b038083169392919081169081851415806120a6575b611fef575b5050505050565b81612056575b505082612004575b8080611fe8565b5f805160206127568339815191529161202861202261202e93611455565b91612395565b906123fe565b60405191829161204b916001600160d01b03918216911683611483565b0390a25f8080611ffd565b61207f6120705f8051602061275683398151915292611455565b61207986612395565b906123c6565b60405191829161209c916001600160d01b03918216911683611483565b0390a25f80611ff5565b50831515611fe3565b60ff81146120c05761030e90612467565b50604051600554815f6120d283610747565b808352926001811690811561215557506001146120f6575b61030e925003826107b3565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b81831061213957505090602061030e928201016120ea565b6020919350806001915483858801015201910190918392612121565b6020925061030e94915060ff191682840152151560051b8201016120ea565b60ff81146121855761030e90612467565b50604051600654815f61219783610747565b808352926001811690811561215557506001146121ba5761030e925003826107b3565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b8183106121fd57505090602061030e928201016120ea565b60209193508060019154838588010152019101909183926121e5565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411612291579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612286575f516001600160a01b0381161561227c57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600411156122a657565b634e487b7160e01b5f52602160045260245ffd5b6122c38161229c565b806122cc575050565b6122d58161229c565b600181036122ec5763f645eedf60e01b5f5260045ffd5b6122f58161229c565b60028103612310575063fce698f760e01b5f5260045260245ffd5b8061231c60039261229c565b146123245750565b6335e2f38360e21b5f5260045260245ffd5b805482101561234b575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9060405161236c81610793565b915465ffffffffffff8116835260301c6020830152565b9080821015612390575090565b905090565b6001600160d01b0381116123af576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b906123d043611b2d565b906123da83611c59565b6001600160d01b039182169082160391908211610cb7576123fa926125d6565b9091565b9061240843611b2d565b9061241283611c59565b6001600160d01b039182169082160191908211610cb7576123fa926125d6565b61243b43611b2d565b90612446600a611c59565b6001600160d01b0391821690821603908111610cb7576123fa91600a6125d6565b60ff811690601f821161249657604051916124836040846107b3565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b9091906001600160a01b0316801561250c575b610f19926001600160a01b03169081156124f4575b5f90815260086020526040808220549282529020546001600160a01b039081169116611fc7565b61250561250084612395565b612432565b50506124cd565b61251582612395565b9261251f43611b2d565b9361252a600a611c59565b6001600160d01b039182169082160194908511610cb757610f199461255091600a6125d6565b90505092506124b8565b9065ffffffffffff82549181199060301b169116179055565b8054600160401b8110156107ae5761259091600182018155612336565b6125c3578165ffffffffffff610f1993511665ffffffffffff19835416178255602060018060d01b03910151169061255a565b634e487b7160e01b5f525f60045260245ffd5b8054929392919082156126cc576126026125fd6125f285611518565b835f5260205f200190565b61235f565b9065ffffffffffff61261a835165ffffffffffff1690565b81851691829116116126bd5761268194602094889261264d612642875165ffffffffffff1690565b65ffffffffffff1690565b0361268557506126739261266361266e92611518565b905f5260205f200190565b61255a565b01516001600160d01b031690565b9190565b9150506126b8916126a5612697610f0a565b65ffffffffffff9093168352565b6001600160d01b03881682860152612573565b612673565b632520601d60e01b5f5260045ffd5b6126f092506126dc612697610f0a565b6001600160d01b0385166020830152612573565b5f919056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724a164736f6c634300081a000ac65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724' as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/addresses.ts"],"names":[],"mappings":"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","file":"chunk-ADAAU4F5.mjs","sourcesContent":["import { Address } from 'viem';\nimport { GENERATED_DOPPLER_DEPLOYMENTS } from './deployments.generated';\n\n// Chain IDs\nexport const CHAIN_IDS = {\n MAINNET: 1,\n ETH_SEPOLIA: 11155111,\n BASE: 8453,\n BASE_SEPOLIA: 84532,\n INK: 57073,\n UNICHAIN: 130,\n UNICHAIN_SEPOLIA: 1301,\n MONAD_TESTNET: 10143,\n MONAD_MAINNET: 143,\n} as const;\n\nexport type SupportedChainId = (typeof CHAIN_IDS)[keyof typeof CHAIN_IDS];\n\n// Human-friendly chain key type (e.g., 'BASE', 'UNICHAIN')\nexport type SupportedChainKey = keyof typeof CHAIN_IDS;\n\n// Contract addresses per chain\nexport interface ChainAddresses {\n // Core contracts\n airlock: Address;\n tokenFactory: Address;\n\n // Static auction contracts (V3)\n v3Initializer: Address;\n v3Quoter: Address;\n lockableV3Initializer?: Address;\n\n // Dynamic auction contracts (V4)\n v4Initializer: Address;\n // Multicurve initializer (V4) — optional per chain\n v4MulticurveInitializer?: Address;\n v4ScheduledMulticurveInitializer?: Address;\n v4DecayMulticurveInitializer?: Address;\n\n // DopplerHook system (for RehypeDopplerHook support)\n dopplerHookInitializer?: Address;\n rehypeDopplerHook?: Address;\n dopplerLens: Address;\n dopplerDeployer: Address;\n poolManager: Address;\n\n // Doppler404 contracts\n doppler404Factory?: Address;\n\n // Migration contracts\n v2Migrator: Address;\n v4Migrator: Address;\n v4MigratorHook?: Address;\n noOpMigrator?: Address;\n\n // Governance contracts\n governanceFactory: Address;\n noOpGovernanceFactory?: Address;\n launchpadGovernanceFactory?: Address;\n streamableFeesLocker?: Address;\n\n // Router contracts\n universalRouter: Address;\n univ2Router02?: Address;\n permit2: Address;\n\n // Other contracts\n bundler?: Address;\n\n // Uniswap contracts\n weth: Address;\n uniswapV2Factory?: Address;\n uniswapV3Factory?: Address;\n uniswapV4Quoter: Address;\n}\n\n// Not yet deployed placeholder\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address;\n\nexport const ADDRESSES: Record<SupportedChainId, ChainAddresses> = {\n [CHAIN_IDS.MAINNET]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .CloneERC20Factory as Address,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .UniswapV4Initializer as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MAINNET\n ].UniswapV4ScheduledMulticurveInitializer as Address,\n dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .DopplerHookInitializer as Address,\n rehypeDopplerHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .RehypeDopplerHook as Address,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .DopplerDeployer as Address,\n poolManager: '0x000000000004444c5dc75cB358380D2e3dE08A90' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .NoOpMigrator as Address,\n governanceFactory: ZERO_ADDRESS,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .NoOpGovernanceFactory as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET]\n .StreamableFeesLocker as Address,\n universalRouter: '0x66a9893cc07d91d95644aedd05d03f95e1dba8af' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' as Address,\n uniswapV2Factory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' as Address,\n uniswapV3Factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984' as Address,\n uniswapV4Quoter: '0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203' as Address,\n },\n [CHAIN_IDS.ETH_SEPOLIA]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .CloneERC20Factory as Address,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .UniswapV4Initializer as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.ETH_SEPOLIA\n ].UniswapV4ScheduledMulticurveInitializer as Address,\n dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .DopplerHookInitializer as Address,\n rehypeDopplerHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .RehypeDopplerHook as Address,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .DopplerDeployer as Address,\n poolManager: '0xE03A1074c86CFeDd5C142C4F04F1a1536e203543' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .NoOpMigrator as Address,\n governanceFactory: ZERO_ADDRESS,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .NoOpGovernanceFactory as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ETH_SEPOLIA]\n .StreamableFeesLocker as Address,\n universalRouter: '0x3A9D48AB9751398BbFa63ad67599Bb04e4BdF98b' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14' as Address,\n uniswapV4Quoter: '0x61b3f2011a92d183c7dbadbda940a7555ccf9227' as Address,\n },\n [CHAIN_IDS.BASE]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .TokenFactory80 as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV3Initializer as Address,\n v3Quoter: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a' as Address,\n lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .LockableUniswapV3Initializer as Address,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV4Initializer as Address,\n v4MulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV4MulticurveInitializer as Address, // From Doppler multicurve deployments (Base mainnet)\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE\n ].UniswapV4ScheduledMulticurveInitializer as Address, // From Doppler scheduled multicurve deployments (Base mainnet)\n v4DecayMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DecayMulticurveInitializer as Address, // From Doppler decay multicurve deployments (Base mainnet)\n dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DopplerLensQuoter as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DopplerDeployer as Address,\n poolManager: '0x498581ff718922c3f8e6a244956af099b2652b2b' as Address,\n rehypeDopplerHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .RehypeDopplerHook as Address,\n dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .DopplerHookInitializer as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .NoOpMigrator as Address,\n governanceFactory: '0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9' as Address,\n noOpGovernanceFactory:\n '0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e' as Address,\n launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .LaunchpadGovernanceFactory as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE]\n .StreamableFeesLocker as Address,\n universalRouter: '0x6ff5693b99212da76ad316178a184ab56d299b43' as Address,\n univ2Router02: '0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Bundler as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x0d5e0f971ed27fbff6c2837bf31316121532048d' as Address,\n },\n [CHAIN_IDS.BASE_SEPOLIA]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .TokenFactory80 as Address,\n doppler404Factory: '0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7' as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV3Initializer as Address,\n v3Quoter: '0xC5290058841028F1614F3A6F0F5816cAd0df5E27' as Address,\n lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .LockableUniswapV3Initializer as Address,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV4Initializer as Address,\n v4MulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE_SEPOLIA\n ].UniswapV4MulticurveInitializer as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE_SEPOLIA\n ].UniswapV4ScheduledMulticurveInitializer as Address, // From Doppler scheduled multicurve deployments (Base Sepolia)\n v4DecayMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.BASE_SEPOLIA\n ].DecayMulticurveInitializer as Address, // From Doppler decay multicurve deployments (Base Sepolia)\n dopplerHookInitializer:\n '0x98CD6478DeBe443069dB863Abb9626d94de9A544' as Address,\n rehypeDopplerHook: \"0x636a756cee08775cc18780f52dd90b634f18ad37\" as Address,\n dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .DopplerLensQuoter as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .DopplerDeployer as Address,\n poolManager: '0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV4Migrator as Address,\n v4MigratorHook: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .UniswapV4MigratorHook as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .GovernanceFactory as Address,\n noOpGovernanceFactory:\n '0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228' as Address,\n streamableFeesLocker: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA]\n .StreamableFeesLocker as Address,\n universalRouter: '0x492E6456D9528771018DeB9E87ef7750EF184104' as Address,\n univ2Router02: '0x1689E7B1F10000AE47eBfE339a4f69dECd19F602' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x69DB7c20cDdA49Bed2bFb21e16Fa218330C50661' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x4A6513c898fe1B2d0E78d3b0e0A4a151589B1cBa' as Address,\n },\n [CHAIN_IDS.INK]: {\n airlock: '0x014E1c0bd34f3B10546E554CB33B3293fECDD056' as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .TokenFactory as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .UniswapV3Initializer as Address,\n v3Quoter: '0x96b572D2d880cf2Fa2563651BD23ADE6f5516652' as Address,\n v4Initializer: '0xC99b485499f78995C6F1640dbB1413c57f8BA684' as Address,\n dopplerLens: '0x3972c00f7ed4885e145823eb7c655375d275a1c5' as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .DopplerDeployer as Address,\n poolManager: '0x360e68faccca8ca495c1b759fd9eee466db9fb32' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .UniswapV2Migrator as Address,\n v4Migrator: ZERO_ADDRESS,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0x112908dac86e20e7241b0927479ea3bf935d1fa0' as Address,\n univ2Router02: '0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x3972c00f7ed4885e145823eb7c655375d275a1c5' as Address,\n },\n [CHAIN_IDS.UNICHAIN]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .TokenFactory as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .UniswapV3Initializer as Address,\n v3Quoter: '0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658' as Address,\n v4Initializer: '0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB' as Address,\n dopplerLens: '0x333e3c607b141b18ff6de9f258db6e77fe7491e0' as Address,\n dopplerDeployer: '0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f' as Address,\n poolManager: '0x1f98400000000000000000000000000000000004' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .UniswapV2Migrator as Address,\n v4Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .UniswapV4Migrator as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .NoOpGovernanceFactory as Address,\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xef740bf23acae26f6492b10de645d6b98dc8eaf3' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN]\n .Bundler as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x333e3c607b141b18ff6de9f258db6e77fe7491e0' as Address,\n },\n [CHAIN_IDS.UNICHAIN_SEPOLIA]: {\n airlock: '0x651ab94B4777e2e4cdf96082d90C65bd947b73A4' as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA]\n .TokenFactory as Address,\n v3Initializer: '0x7Fb9a622186B4660A5988C223ebb9d3690dD5007' as Address,\n v3Quoter: '0x6Dd37329A1A225a6Fca658265D460423DCafBF89' as Address,\n v4Initializer: '0x992375478626E67F4e639d3298EbCAaE51C3dF0b' as Address,\n dopplerLens: '0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472' as Address,\n dopplerDeployer: '0x2f2bacd46d3f5c9ee052ab392b73711db89129db' as Address,\n poolManager: '0x00B036B58a818B1BC34d502D3fE730Db729e62AC' as Address,\n v2Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n v4Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN_SEPOLIA]\n .NoOpMigrator as Address,\n governanceFactory: '0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC' as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.UNICHAIN_SEPOLIA\n ].NoOpGovernanceFactory as Address,\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n uniswapV4Quoter: '0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472' as Address,\n },\n [CHAIN_IDS.MONAD_TESTNET]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .TokenFactory80 as Address,\n v3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .UniswapV3Initializer as Address,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .UniswapV4Initializer as Address,\n dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .DopplerLensQuoter as Address,\n dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .DopplerDeployer as Address,\n poolManager: '0xe93882f395B0b24180855c68Ab19B2d78573ceBc' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .UniswapV2Migrator as Address,\n v4Migrator: '0xBEd386a1Fc62B6598c9b8d2BF634471B6Fe75EB7' as Address,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_TESTNET\n ].NoOpGovernanceFactory as Address,\n streamableFeesLocker:\n '0x91231cDdD8d6C86Df602070a3081478e074b97b7' as Address, // Not yet deployed\n universalRouter: ZERO_ADDRESS,\n univ2Router02: ZERO_ADDRESS,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET]\n .Bundler as Address,\n weth: ZERO_ADDRESS, // TODO: Get Monad Testnet weth\n uniswapV4Quoter: ZERO_ADDRESS,\n },\n [CHAIN_IDS.MONAD_MAINNET]: {\n airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .Airlock as Address,\n tokenFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .TokenFactory80 as Address,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: '0x66266174564170519409d8853898f065c719536b' as Address,\n v4Initializer: ZERO_ADDRESS,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: ZERO_ADDRESS,\n poolManager: '0x188d586ddcf52439676ca21a244753fa19f9ea8e' as Address,\n v2Migrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .UniswapV2Migrator as Address,\n v4Migrator: ZERO_ADDRESS,\n noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .NoOpMigrator as Address,\n governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .GovernanceFactory as Address,\n noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_MAINNET\n ].NoOpGovernanceFactory as Address,\n launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_MAINNET\n ].LaunchpadGovernanceFactory as Address,\n v4ScheduledMulticurveInitializer: GENERATED_DOPPLER_DEPLOYMENTS[\n CHAIN_IDS.MONAD_MAINNET\n ].UniswapV4ScheduledMulticurveInitializer as Address,\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0x0d97dc33264bfc1c226207428a79b26757fb9dc3' as Address,\n univ2Router02: ZERO_ADDRESS,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET]\n .Bundler as Address,\n weth: '0x3bd359c1119da7da1d913d1c4d2b7c461115433a' as Address, // INFO: this is wmon, but we treat it as weth because mon is native\n uniswapV4Quoter: '0xa222dd357a9076d1091ed6aa2e16c9742dd26891' as Address,\n },\n};\n/**\n * Get addresses for a specific chain\n */\nexport function getAddresses(chainId: number): ChainAddresses {\n const addresses = ADDRESSES[chainId as SupportedChainId];\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chainId}`);\n }\n return addresses;\n}\n\n/**\n * List of supported chain IDs for easy iteration/validation\n */\nexport const SUPPORTED_CHAIN_IDS = Object.values(\n CHAIN_IDS,\n) as SupportedChainId[];\n\n/**\n * Runtime/type guard for narrowing a number to SupportedChainId\n */\nexport function isSupportedChainId(id: number): id is SupportedChainId {\n // Numeric object keys are coerced to strings at runtime; `in` is fine here\n return id in ADDRESSES;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/abis/bytecodes/stateView.ts"],"names":[],"mappings":";AAAA,IAAO,iBAAA,GACL","file":"chunk-AZOBEWP3.mjs","sourcesContent":["export default\n '0x60a03460b257601f610b8338819003918201601f19168301916001600160401b0383118484101760b65780849260209460405283398101031260b257516001600160a01b038116810360b257608052604051610ab890816100cb823960805181818160e1015281816101b701528181610217015281816102ba0152818161034a015281816103f50152818161045b015281816104a2015281816104e90152818161054c0152818161060701526107170152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146106a357806353e9c1fb146105de5780637c40f1fe1461050d5780638a2bb9e6146104c657806397fd7b421461048b5780639ec538c814610440578063c815641c146103d5578063caedab5414610309578063dacf1d2f14610246578063dc4c90d314610202578063f0928f29146101835763fa6793d51461009d575f80fd5b34610158576020366003190112610158576100b9600435610a1c565b6003810180911161016f57604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f9061012d575b6040516001600160801b039091168152602090f35b506020813d60201161015c575b81610147602093836107c2565b810103126101585760209051610118565b5f80fd5b3d915061013a565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b346101585761019a610194366107ac565b90610a78565b604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f9061012d576040516001600160801b039091168152602090f35b34610158575f366003190112610158576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101585760a0366003190112610158576024356001600160a01b03811681036101585761027261079c565b6064358060020b810361015857610305926102de926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f00000000000000000000000000000000000000000000000000000000000000006108fb565b604080516001600160801b0390941684526020840192909252908201529081906060820190565b0390f35b346101585760403660031901126101585761032d61032561078c565b600435610a42565b604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f906103a2575b604080516001600160801b038316815260809290921d600f0b602083015290f35b506020813d6020116103cd575b816103bc602093836107c2565b810103126101585760409051610381565b3d91506103af565b3461015857602036600319011261015857608062ffffff806104196004357f000000000000000000000000000000000000000000000000000000000000000061097d565b9294916040519560018060a01b0316865260020b6020860152166040840152166060820152f35b3461015857602036600319011261015857604061047f6004357f0000000000000000000000000000000000000000000000000000000000000000610972565b82519182526020820152f35b34610158576103056102de61049f366107ac565b907f00000000000000000000000000000000000000000000000000000000000000006108fb565b3461015857604036600319011261015857604061047f6104e461078c565b6004357f000000000000000000000000000000000000000000000000000000000000000061087c565b346101585760403660031901126101585761052961032561078c565b604051631afeb18d60e11b81526004810191909152600360248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164576080915f916105bc575b50602081015190606060408201519101519060405192600180861b0381168452841d600f0b602084015260408301526060820152f35b6105d891503d805f833e6105d081836107c2565b8101906107f9565b82610586565b346101585760603660031901126101585760406004356105fc61078c565b9061060561079c565b7f0000000000000000000000000000000000000000000000000000000000000000906106318383610972565b9061063d86868661087c565b96909361065661064e82898961087c565b98909761097d565b5050905060020b9160020b82125f1461067c575050505003910382519182526020820152f35b95969593949360020b1361069457505003910361047f565b9493929094030392030361047f565b34610158576040366003190112610158576024358060010b809103610158576106cd600435610a1c565b6005810180911161016f5760405190602082019283526040820152604081526106f76060826107c2565b519020604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f90610759575b602090604051908152f35b506020813d602011610784575b81610773602093836107c2565b81010312610158576020905161074e565b3d9150610766565b602435908160020b820361015857565b604435908160020b820361015857565b6040906003190112610158576004359060243590565b601f909101601f19168101906001600160401b038211908210176107e557604052565b634e487b7160e01b5f52604160045260245ffd5b602081830312610158578051906001600160401b03821161015857019080601f83011215610158578151916001600160401b0383116107e5578260051b906040519361084860208401866107c2565b845260208085019282010192831161015857602001905b82821061086c5750505090565b815181526020918201910161085f565b929161088791610a42565b6001810180911161016f57604051631afeb18d60e11b8152600481019190915260026024820152915f90839060449082906001600160a01b03165afa918215610164575f926108df575b506040602083015192015190565b6108f49192503d805f833e6105d081836107c2565b905f6108d1565b91610907905f92610a78565b604051631afeb18d60e11b815260048101919091526003602482015291829060449082906001600160a01b03165afa908115610164575f91610958575b506020810151916060604083015192015190565b61096c91503d805f833e6105d081836107c2565b5f610944565b919061088790610a1c565b919061098a602091610a1c565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215610164575f926109e8575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011610a14575b81610a04602093836107c2565b810103126101585751905f6109c0565b3d91506109f7565b604051602081019182526006604082015260408152610a3c6060826107c2565b51902090565b610a4b90610a1c565b6004810180911161016f5760405190602082019260020b8352604082015260408152610a3c6060826107c2565b610a8190610a1c565b6006810180911161016f576040519060208201928352604082015260408152610a3c6060826107c256fea164736f6c634300081a000a' as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":["CHAIN_IDS","LockablePoolStatus"],"mappings":";;;;;AA2EO,IAAM,uBAAA,GAA0B;AAAA,EACrCA,0BAAA,CAAU,OAAA;AAAA,EACVA,0BAAA,CAAU,WAAA;AAAA,EACVA,0BAAA,CAAU,IAAA;AAAA,EACVA,0BAAA,CAAU,YAAA;AAAA,EACVA,0BAAA,CAAU,QAAA;AAAA,EACVA,0BAAA,CAAU,gBAAA;AAAA,EACVA,0BAAA,CAAU,aAAA;AAAA,EACVA,0BAAA,CAAU;AACZ;AAOO,SAAS,mBACd,OAAA,EAC+B;AAC/B,EAAA,OAAQ,uBAAA,CAA8C,SAAS,OAAO,CAAA;AACxE;AAGO,IAAM,2BAAA,GAA8B;AAAA,EACzCA,0BAAA,CAAU,IAAA;AAAA,EACVA,0BAAA,CAAU;AACZ;AAQO,SAAS,wBACd,OAAA,EACoC;AACpC,EAAA,OAAQ,2BAAA,CAAkD,SAAS,OAAO,CAAA;AAC5E;AA8BO,IAAK,kBAAA,qBAAAC,mBAAAA,KAAL;AACL,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAgB,CAAA,CAAA,GAAhB,eAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAc,CAAA,CAAA,GAAd,aAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAS,CAAA,CAAA,GAAT,QAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAS,CAAA,CAAA,GAAT,QAAA;AAJU,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA","file":"chunk-COOVGAOE.js","sourcesContent":["import { base, baseSepolia, ink, mainnet, sepolia, unichain } from 'viem/chains';\nimport { CHAIN_IDS, type SupportedChainId } from './addresses';\n// Re-export SupportedChainId so consumers can import from this module\nexport { type SupportedChainId } from './addresses';\nimport type { Address, WalletClient } from 'viem';\n\nexport type SupportedChain =\n | typeof mainnet\n | typeof sepolia\n | typeof base\n | typeof baseSepolia\n | typeof ink\n | typeof unichain;\n// Use a wide type to avoid cross-package viem type identity issues when linking packages locally.\nexport type SupportedPublicClient = unknown;\n\n// Core configuration types\n// Token configuration (discriminated union)\nexport interface StandardTokenConfig {\n type?: 'standard'; // default behavior (backwards compatible)\n name: string;\n symbol: string;\n tokenURI: string;\n yearlyMintRate?: bigint; // Optional yearly mint rate (in WAD, default: 2% = 0.02e18)\n}\n\nexport interface Doppler404TokenConfig {\n type: 'doppler404';\n name: string;\n symbol: string;\n baseURI: string;\n // Optional unit for DN404 factory (uint256). Defaults to 1000 when omitted.\n unit?: bigint;\n}\n\nexport type TokenConfig = StandardTokenConfig | Doppler404TokenConfig;\n\nexport interface SaleConfig {\n initialSupply: bigint;\n numTokensToSell: bigint;\n numeraire: Address; // e.g., WETH address\n}\n\n// Static Auction Pool configuration\nexport interface StaticPoolConfig {\n startTick: number;\n endTick: number;\n fee: number; // e.g., 3000 for 0.3%\n // Optional parameters for lockable initializer\n numPositions?: number; // Number of liquidity positions (default: based on tick range)\n maxShareToBeSold?: bigint; // Maximum share of tokens to sell (in WAD, default: 1e18 = 100%)\n beneficiaries?: BeneficiaryData[]; // Optional beneficiaries for fee streaming\n}\n\n// Dynamic Auction configuration\nexport interface DynamicAuctionConfig {\n duration: number; // in seconds\n epochLength: number; // in seconds\n startTick: number;\n endTick: number;\n gamma?: number; // Optional, can be auto-calculated\n minProceeds: bigint;\n maxProceeds: bigint;\n numPdSlugs?: number; // Price discovery slugs (optional)\n}\n\n// Vesting configuration\nexport interface VestingConfig {\n duration: number; // in seconds\n cliffDuration: number; // in seconds\n recipients?: Address[]; // Optional array of recipient addresses (defaults to [userAddress] if not specified)\n amounts?: bigint[]; // Optional array of vesting amounts per recipient (must match recipients length if provided)\n}\n\n// Chains where no-op governance is enabled\nexport const NO_OP_ENABLED_CHAIN_IDS = [\n CHAIN_IDS.MAINNET,\n CHAIN_IDS.ETH_SEPOLIA,\n CHAIN_IDS.BASE,\n CHAIN_IDS.BASE_SEPOLIA,\n CHAIN_IDS.UNICHAIN,\n CHAIN_IDS.UNICHAIN_SEPOLIA,\n CHAIN_IDS.MONAD_TESTNET,\n CHAIN_IDS.MONAD_MAINNET,\n] as const;\n\nexport type NoOpEnabledChainId = (typeof NO_OP_ENABLED_CHAIN_IDS)[number];\n\n/**\n * Check if a chain supports no-op governance\n */\nexport function isNoOpEnabledChain(\n chainId: number,\n): chainId is NoOpEnabledChainId {\n return (NO_OP_ENABLED_CHAIN_IDS as readonly number[]).includes(chainId);\n}\n\n// Chains where launchpad governance is enabled\nexport const LAUNCHPAD_ENABLED_CHAIN_IDS = [\n CHAIN_IDS.BASE,\n CHAIN_IDS.MONAD_MAINNET,\n] as const;\n\nexport type LaunchpadEnabledChainId =\n (typeof LAUNCHPAD_ENABLED_CHAIN_IDS)[number];\n\n/**\n * Check if a chain supports launchpad governance\n */\nexport function isLaunchpadEnabledChain(\n chainId: number,\n): chainId is LaunchpadEnabledChainId {\n return (LAUNCHPAD_ENABLED_CHAIN_IDS as readonly number[]).includes(chainId);\n}\n\n// Governance configuration (discriminated union)\nexport type GovernanceDefault = { type: 'default' };\nexport interface GovernanceCustom {\n type: 'custom';\n initialVotingDelay: number;\n initialVotingPeriod: number;\n initialProposalThreshold: bigint;\n}\nexport type GovernanceNoOp = { type: 'noOp' };\nexport interface GovernanceLaunchpad {\n type: 'launchpad';\n multisig: Address;\n}\n\nexport type GovernanceOption<C extends SupportedChainId> =\n | GovernanceDefault\n | GovernanceCustom\n | (C extends NoOpEnabledChainId ? GovernanceNoOp : never)\n | (C extends LaunchpadEnabledChainId ? GovernanceLaunchpad : never);\n\n// Unified beneficiary data used for fee streaming, lockable initializers, and migration configs\n// Uses shares in WAD format (1e18 = 100%) for consistency across all beneficiary configurations\nexport interface BeneficiaryData {\n beneficiary: Address;\n shares: bigint; // shares in WAD (1e18 = 100%)\n}\n\n// Pool status for lockable initializer\nexport enum LockablePoolStatus {\n Uninitialized = 0,\n Initialized = 1,\n Locked = 2,\n Exited = 3,\n}\n\n// Lockable pool state\nexport interface LockablePoolState {\n asset: Address;\n numeraire: Address;\n tickLower: number;\n tickUpper: number;\n maxShareToBeSold: bigint;\n totalTokensOnBondingCurve: bigint;\n status: LockablePoolStatus;\n}\n\n// Multicurve pool state (V4 initializer)\nexport interface MulticurvePoolState {\n asset: Address;\n numeraire: Address;\n fee: number;\n tickSpacing: number;\n status: LockablePoolStatus; // Reuses the same enum\n poolKey: V4PoolKey;\n farTick: number;\n}\n\n// Migration configuration (discriminated union)\nexport type MigrationConfig =\n | { type: 'uniswapV2' } // Basic migration to a new Uniswap v2 pool\n | {\n type: 'uniswapV4';\n fee: number;\n tickSpacing: number;\n // Configuration for fee streaming via StreamableFeesLocker (optional)\n // When omitted, fees are not locked and beneficiaries are not configured\n // This is useful when using noOp governance where lock duration is not meaningful\n streamableFees?: {\n lockDuration: number; // in seconds\n beneficiaries: BeneficiaryData[]; // Uses shares in WAD (1e18 = 100%)\n };\n }\n | { type: 'noOp' }; // No migration - used with lockable beneficiaries\n\n// Create Static Auction parameters\nexport interface CreateStaticAuctionParams<\n C extends SupportedChainId = SupportedChainId,\n> {\n // Token configuration\n token: TokenConfig;\n\n // Sale configuration\n sale: SaleConfig;\n\n // Static Auction (Uniswap v3) Pool configuration\n pool: StaticPoolConfig;\n\n // Vesting configuration (optional)\n vesting?: VestingConfig;\n\n // Governance configuration (required). Use `{ type: 'noOp' }` where enabled,\n // `{ type: 'default' }` for standard defaults, or `{ type: 'custom', ... }` to customize.\n governance: GovernanceOption<C>;\n\n // Explicit Migration Configuration\n migration: MigrationConfig;\n\n // Integrator details\n integrator?: Address;\n userAddress: Address;\n\n // Optional address overrides for on-chain modules used during encoding/creation\n modules?: ModuleAddressOverrides;\n\n // Optional transaction gas limit override for the create() transaction\n // If omitted, SDK will default to 13,500,000 gas for create()\n gas?: bigint;\n}\n\n// Create Dynamic Auction parameters\nexport interface CreateDynamicAuctionParams<\n C extends SupportedChainId = SupportedChainId,\n> {\n // Token configuration\n token: TokenConfig;\n\n // Sale configuration\n sale: SaleConfig;\n\n // Dynamic Auction (Uniswap v4 Hook) configuration\n auction: DynamicAuctionConfig;\n\n // Pool configuration\n pool: {\n fee: number; // e.g., 3000 for 0.3%\n tickSpacing: number;\n };\n\n // Vesting configuration (optional)\n vesting?: VestingConfig;\n\n // Governance configuration (required). Use `{ type: 'noOp' }` where enabled,\n // `{ type: 'default' }` for standard defaults, or `{ type: 'custom', ... }` to customize.\n governance: GovernanceOption<C>;\n\n // Explicit Migration Configuration\n migration: MigrationConfig;\n\n // Integrator details\n integrator?: Address;\n userAddress: Address;\n\n // Time configuration (internal use)\n startTimeOffset?: number;\n blockTimestamp?: number; // Optional: use this block timestamp instead of fetching latest\n\n // Optional transaction gas limit override for the create() transaction\n // If omitted, SDK will default to 13,500,000 gas for create()\n gas?: bigint;\n\n // Optional address overrides for on-chain modules used during encoding/creation\n modules?: ModuleAddressOverrides;\n}\n\n// Price range configuration for automatic tick calculation\nexport interface PriceRange {\n startPrice: number;\n endPrice: number;\n}\n\n// Tick range configuration\nexport interface TickRange {\n startTick: number;\n endTick: number;\n}\n\n// ============================================================================\n// Market Cap Configuration Types\n// ============================================================================\n\n/**\n * Market cap range in USD for price configurations.\n * Used to define start and end market caps for bonding curves.\n */\nexport interface MarketCapRange {\n /** Starting market cap in USD (e.g., 100_000 for $100k) */\n start: number;\n /** Ending market cap in USD (e.g., 10_000_000 for $10M) */\n end: number;\n}\n\n/**\n * Base configuration for market cap-based tick calculations.\n * Used by builder methods to convert market caps to ticks.\n */\nexport interface MarketCapConfig {\n /** Target market cap range in USD */\n marketCap: MarketCapRange;\n /** Price of numeraire in USD (e.g., 3000 for ETH at $3000) */\n numerairePrice: number;\n /**\n * Token supply override. If not provided, inferred from saleConfig.initialSupply.\n * Must include decimals (e.g., parseEther('1000000000') for 1B tokens).\n */\n tokenSupply?: bigint;\n /** Token decimals (default: 18) */\n tokenDecimals?: number;\n /** Numeraire decimals (default: 18) */\n numeraireDecimals?: number;\n}\n\n/**\n * Market cap configuration for V3 Static Auctions.\n * Extends base config with V3-specific parameters.\n */\nexport interface StaticAuctionMarketCapConfig extends MarketCapConfig {\n /** Fee tier in basis points (e.g., 10000 for 1%). Default: 10000 */\n fee?: number;\n /** Number of liquidity positions. Default: 15 */\n numPositions?: number;\n /** Maximum share of tokens to sell per position (WAD). Default: 35% */\n maxShareToBeSold?: bigint;\n}\n\n/**\n * Market cap range for V4 Dynamic Auctions (Dutch auctions).\n * Uses start/min because price descends from start to minimum.\n */\nexport interface DynamicMarketCapRange {\n /** Starting market cap in USD - auction begins here (e.g., 500_000 for $500k) */\n start: number;\n /** Minimum market cap in USD - floor price the auction descends to (e.g., 50_000 for $50k) */\n min: number;\n}\n\n/**\n * Market cap configuration for V4 Dynamic Auctions.\n * Uses start/min (not start/end) because Dutch auctions descend from start to minimum.\n */\nexport interface DynamicAuctionMarketCapConfig {\n /** Target market cap range (start = launch price, min = floor price) */\n marketCap: DynamicMarketCapRange;\n /** Price of numeraire in USD (e.g., 3000 for ETH at $3000) */\n numerairePrice: number;\n /**\n * Token supply override. If not provided, inferred from saleConfig.initialSupply.\n * Must include decimals (e.g., parseEther('1000000000') for 1B tokens).\n */\n tokenSupply?: bigint;\n /** Token decimals (default: 18) */\n tokenDecimals?: number;\n /** Numeraire decimals (default: 18) */\n numeraireDecimals?: number;\n /**\n * Pool fee in basis points. Default: 10000 (1%)\n *\n * V4 pools support any fee from 0 to 100,000 (10%).\n * Standard tiers (100, 500, 3000, 10000) auto-derive tickSpacing.\n * Custom fees require explicit tickSpacing parameter.\n */\n fee?: number;\n /**\n * Tick spacing for the pool. Required for custom fees.\n *\n * Must be <= 30 for Doppler pools (MAX_TICK_SPACING constraint).\n * If not provided with a standard fee tier, defaults to 30.\n */\n tickSpacing?: number;\n /** Minimum proceeds required for successful auction */\n minProceeds: bigint;\n /** Maximum proceeds cap for the auction */\n maxProceeds: bigint;\n /** Auction duration in seconds. Default: 7 days */\n duration?: number;\n /** Epoch length in seconds. Default: 3600 (1 hour) */\n epochLength?: number;\n /** Gamma (tick decay per epoch). Auto-calculated if not provided */\n gamma?: number;\n /** Number of price discovery slugs. Default: 5 */\n numPdSlugs?: number;\n}\n\n/**\n * Result of market cap parameter validation.\n */\nexport interface MarketCapValidationResult {\n /** Whether all parameters are within normal bounds */\n valid: boolean;\n /** Warning messages for unusual but technically valid values */\n warnings: string[];\n}\n\n// ============================================================================\n// Market Cap Helper Function Parameter Types\n// ============================================================================\n\n/**\n * Parameters for converting market cap range to ticks for V3 Static Auctions.\n */\nexport interface StaticAuctionTickParams {\n marketCapRange: MarketCapRange;\n tokenSupply: bigint;\n numerairePriceUSD: number;\n tickSpacing: number;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n}\n\n/**\n * Parameters for converting market cap range to ticks for V4 Dynamic Auctions.\n */\nexport interface DynamicAuctionTickParams {\n marketCapRange: MarketCapRange;\n tokenSupply: bigint;\n numerairePriceUSD: number;\n numeraire: Address;\n tickSpacing: number;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n}\n\n/**\n * Parameters for converting market cap range to ticks for V4 Multicurve pools.\n */\nexport interface MulticurveTickRangeParams {\n marketCapLower: number;\n marketCapUpper: number | 'max';\n tokenSupply: bigint;\n numerairePriceUSD: number;\n tickSpacing: number;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n}\n\n/**\n * Parameters for converting a single market cap to a tick for Multicurve.\n */\nexport interface MulticurveTickParams {\n marketCapUSD: number;\n tokenSupply: bigint;\n numerairePriceUSD: number;\n tickSpacing: number;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n}\n\n/**\n * Parameters for converting a tick to market cap (reverse conversion).\n */\nexport interface TickToMarketCapParams {\n tick: number;\n tokenSupply: bigint;\n numerairePriceUSD: number;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n}\n\n// ============================================================================\n// New Multicurve Market Cap API (no tick math required)\n// ============================================================================\n\n/**\n * Curve configuration for Multicurve pools using market cap ranges.\n * Each curve defines a market cap range and liquidity distribution.\n */\nexport interface MulticurveMarketCapRangeCurve {\n /** Market cap range for this curve */\n marketCap: {\n /** Start market cap in USD (for the first curve, this is the launch price) */\n start: number;\n /** End market cap in USD, or 'max' for MAX_TICK rounded to tick spacing */\n end: number | 'max';\n };\n /** Number of liquidity positions in this curve */\n numPositions: number;\n /** Share of total supply allocated to this curve (WAD, e.g., parseEther('0.3') = 30%) */\n shares: bigint;\n}\n\n/**\n * Market cap-based configuration for Multicurve pools.\n * No tick math required - just specify market caps in USD.\n */\nexport interface MulticurveMarketCapCurvesConfig {\n /** Price of numeraire in USD (e.g., 3000 for ETH at $3000) */\n numerairePrice: number;\n /**\n * Array of curves defining market cap ranges and liquidity distribution.\n * The first curve's marketCap.start is the launch price.\n * Curves must be contiguous (no gaps allowed).\n */\n curves: MulticurveMarketCapRangeCurve[];\n /** Token supply override */\n tokenSupply?: bigint;\n /** Token decimals (default: 18) */\n tokenDecimals?: number;\n /** Numeraire decimals (default: 18) */\n numeraireDecimals?: number;\n /** Fee tier (default: FEE_TIERS.LOW) */\n fee?: number;\n /** Tick spacing (derived from fee if not provided) */\n tickSpacing?: number;\n /** Optional beneficiaries for fee streaming */\n beneficiaries?: BeneficiaryData[];\n}\n\n// Build configuration for static auctions (V3-style)\nexport interface StaticAuctionBuildConfig {\n // Token details\n name: string;\n symbol: string;\n totalSupply?: bigint; // default: 1 billion\n numTokensToSell?: bigint; // default: 900 million\n tokenURI: string;\n\n // Time parameters\n startTimeOffset?: number; // Optional - seconds to add to current block timestamp (default: 30)\n\n // Price parameters - must provide either priceRange or tickRange\n numeraire: Address; // Required for V3\n tickRange?: TickRange;\n priceRange?: PriceRange;\n fee?: number; // default: 10000 (1%)\n\n // Pool parameters (V3 specific)\n numPositions?: number; // default: 15\n maxShareToBeSold?: bigint; // default: 35% in WAD\n\n // Vesting parameters\n yearlyMintRate?: bigint; // default: 2%\n vestingDuration?: bigint; // default: 1 year\n recipients?: Address[]; // defaults to [userAddress]\n amounts?: bigint[]; // defaults based on pre-mint calculation\n\n // Migration configuration\n migration: MigrationConfig;\n\n // Other parameters\n integrator?: Address;\n useGovernance?: boolean; // default: true\n}\n\n// Build configuration for dynamic auctions (V4-style)\nexport interface DynamicAuctionBuildConfig {\n // Token details\n name: string;\n symbol: string;\n totalSupply: bigint;\n numTokensToSell: bigint;\n tokenURI: string;\n\n // Time parameters\n startTimeOffset?: number; // Optional - seconds to add to block timestamp (default: 30)\n blockTimestamp?: number; // Optional - specific block timestamp to use (default: fetch latest)\n duration?: number; // in seconds (default: 604800 = 7 days)\n epochLength?: number; // in seconds (default: 3600)\n\n // Price parameters - must provide either priceRange or tickRange\n numeraire?: Address; // defaults to zero address\n tickRange?: TickRange;\n priceRange?: PriceRange;\n tickSpacing: number;\n gamma?: number; // auto-calculated if not provided\n fee: number; // In basis points\n\n // Sale parameters\n minProceeds: bigint;\n maxProceeds: bigint;\n numPdSlugs?: number; // default: 5\n\n // Vesting parameters\n yearlyMintRate?: bigint; // default: 2%\n vestingDuration: bigint;\n recipients: Address[];\n amounts: bigint[];\n\n // Migration configuration\n migration: MigrationConfig;\n\n // Other parameters\n integrator?: Address;\n useGovernance?: boolean; // default: true\n}\n\n// SDK initialization configuration\nexport interface DopplerSDKConfig {\n publicClient: SupportedPublicClient;\n walletClient?: WalletClient;\n chainId: number;\n}\n\n// Pool information types\nexport interface PoolInfo {\n address: Address;\n tokenAddress: Address;\n numeraireAddress: Address;\n fee: number;\n liquidity: bigint;\n sqrtPriceX96: bigint;\n}\n\nexport interface HookInfo {\n hookAddress: Address;\n tokenAddress: Address;\n numeraireAddress: Address;\n poolId: string;\n currentEpoch: number;\n totalProceeds: bigint;\n totalTokensSold: bigint;\n earlyExit: boolean;\n insufficientProceeds: boolean;\n startingTime: bigint;\n endingTime: bigint;\n epochLength: bigint;\n minimumProceeds: bigint;\n maximumProceeds: bigint;\n}\n\n// Quote result type\nexport interface QuoteResult {\n amountOut: bigint;\n priceImpact: number;\n fee: bigint;\n route: string[];\n}\n\n// Lockable Uniswap V3 Initializer encode params\nexport interface LockableV3InitializerParams {\n fee: number;\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n maxShareToBeSold: bigint;\n beneficiaries: BeneficiaryData[];\n}\n\n// Multicurve curve configuration (mirrors solidity struct)\nexport interface MulticurveCurve {\n tickLower: number; // int24\n tickUpper: number; // int24\n numPositions: number; // uint16\n shares: bigint; // uint256 (WAD)\n}\n\nexport type MulticurveMarketCapPreset = 'low' | 'medium' | 'high';\n\nexport interface V4PoolKey {\n currency0: Address;\n currency1: Address;\n fee: number;\n tickSpacing: number;\n hooks: Address;\n}\n\nexport interface MulticurveBundleExactOutResult {\n asset: Address;\n poolKey: V4PoolKey;\n amountIn: bigint;\n gasEstimate: bigint;\n}\n\nexport interface MulticurveBundleExactInResult {\n asset: Address;\n poolKey: V4PoolKey;\n amountOut: bigint;\n gasEstimate: bigint;\n}\n\n// RehypeDopplerHook configuration for fee distribution and buyback\nexport interface RehypeDopplerHookConfig {\n // The hook contract address (must be whitelisted in the initializer)\n hookAddress: Address;\n // Destination address for buyback tokens\n buybackDestination: Address;\n // Custom swap fee in basis points (e.g., 3000 = 0.3%)\n customFee: number;\n // Fee distribution percentages (must sum to 100% / WAD)\n // Percentage of fees used for asset buyback (in WAD, e.g., 0.2e18 = 20%)\n assetBuybackPercentWad: bigint;\n // Percentage of fees used for numeraire buyback (in WAD, e.g., 0.2e18 = 20%)\n numeraireBuybackPercentWad: bigint;\n // Percentage of fees distributed to beneficiaries (in WAD, e.g., 0.3e18 = 30%)\n beneficiaryPercentWad: bigint;\n // Percentage of fees distributed to LPs (in WAD, e.g., 0.3e18 = 30%)\n lpPercentWad: bigint;\n // Optional graduation calldata (called when pool graduates)\n graduationCalldata?: `0x${string}`;\n\n // Graduation threshold configuration (rehype-only)\n // Market cap in USD at which pool can graduate. Requires numerairePrice (from withCurves() or explicit).\n graduationMarketCap?: number;\n // Price of numeraire in USD. Optional if using withCurves() (reuses that value). Required with poolConfig().\n numerairePrice?: number;\n // Direct tick value for graduation threshold. Use graduationMarketCap for USD-based config.\n farTick?: number;\n}\n\n// Decay fee schedule state for multicurve pools using a dynamic-fee hook\nexport interface MulticurveDecayFeeSchedule {\n startingTime: number;\n startFee: number;\n endFee: number;\n lastFee: number;\n durationSeconds: number;\n}\n\nexport type MulticurveInitializerConfig =\n | { type: 'standard' }\n | { type: 'scheduled'; startTime: number }\n | {\n type: 'decay';\n startTime: number;\n startFee: number;\n durationSeconds: number;\n }\n | { type: 'rehype'; config: RehypeDopplerHookConfig };\n\n// Create Multicurve initializer parameters\nexport interface CreateMulticurveParams<\n C extends SupportedChainId = SupportedChainId,\n> {\n // Token configuration\n token: TokenConfig;\n\n // Sale configuration\n sale: SaleConfig;\n\n // Pool configuration for multicurve initializer\n pool: {\n // For decay initializer mode, this is the terminal fee (endFee).\n fee: number;\n tickSpacing: number;\n curves: MulticurveCurve[];\n // Optional beneficiaries to lock the pool (fee collection only, no migration)\n beneficiaries?: BeneficiaryData[];\n };\n\n // Preferred initializer configuration. Defaults to { type: 'standard' }.\n initializer?: MulticurveInitializerConfig;\n\n /**\n * @deprecated Use initializer: { type: 'scheduled', startTime } instead.\n * Retained for backwards compatibility.\n */\n // Optional scheduled launch configuration\n schedule?: {\n startTime: number;\n };\n\n /**\n * @deprecated Use initializer: { type: 'rehype', config } instead.\n * Retained for backwards compatibility.\n */\n dopplerHook?: RehypeDopplerHookConfig;\n\n // Vesting configuration (optional)\n vesting?: VestingConfig;\n\n // Governance configuration\n governance: GovernanceOption<C>;\n\n // Migration configuration (can be any supported migrator: V2, V3, or V4)\n migration: MigrationConfig;\n\n // Integrator details\n integrator?: Address;\n userAddress: Address;\n\n // Optional address overrides for on-chain modules used during encoding/creation\n modules?: ModuleAddressOverrides;\n\n // Optional transaction gas limit override for the create() transaction\n gas?: bigint;\n}\n\n// Final Params object that gets passed as arg to create\nexport interface CreateParams {\n initialSupply: bigint;\n numTokensToSell: bigint;\n numeraire: Address;\n tokenFactory: Address;\n tokenFactoryData: `0x${string}`;\n governanceFactory: Address;\n governanceFactoryData: `0x${string}`;\n poolInitializer: Address;\n poolInitializerData: `0x${string}`;\n liquidityMigrator: Address;\n liquidityMigratorData: `0x${string}`;\n integrator: Address;\n salt: `0x${string}`;\n}\n\n// Optional per-call module address overrides. When provided, these take precedence\n// over chain defaults resolved via getAddresses(chainId).\nexport interface ModuleAddressOverrides {\n // Core deployment & routing\n airlock?: Address;\n tokenFactory?: Address;\n\n // Initializers\n v3Initializer?: Address;\n lockableV3Initializer?: Address;\n v4Initializer?: Address;\n v4MulticurveInitializer?: Address;\n v4ScheduledMulticurveInitializer?: Address;\n v4DecayMulticurveInitializer?: Address;\n dopplerHookInitializer?: Address;\n\n // DopplerHooks\n rehypeDopplerHook?: Address;\n\n // Governance\n governanceFactory?: Address;\n\n // Dynamic auction infra\n poolManager?: Address;\n dopplerDeployer?: Address;\n\n // Migrators\n v2Migrator?: Address;\n v4Migrator?: Address;\n noOpMigrator?: Address;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/builders/MulticurveBuilder.ts"],"names":[],"mappings":"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","file":"chunk-CS6FVODR.mjs","sourcesContent":["import type { Address } from 'viem';\nimport {\n DEFAULT_V3_YEARLY_MINT_RATE,\n DECAY_MAX_START_FEE,\n FEE_TIERS,\n TICK_SPACINGS,\n V4_MAX_FEE,\n WAD,\n ZERO_ADDRESS,\n} from '../constants';\n\nimport {\n marketCapToTicksForMulticurve,\n marketCapToTickForMulticurve,\n validateMarketCapParameters,\n} from '../utils';\nimport {\n isNoOpEnabledChain,\n isLaunchpadEnabledChain,\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 type RehypeDopplerHookConfig,\n type MulticurveInitializerConfig,\n} from '../types';\nimport { type SupportedChainId } from '../addresses';\nimport {\n type BaseAuctionBuilder,\n type MarketCapPresetOverrides,\n buildCurvesFromPresets,\n} from './shared';\n\nexport class MulticurveBuilder<\n 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 initializer?: CreateMulticurveParams<C>['initializer'];\n private schedule?: CreateMulticurveParams<C>['schedule'];\n private dopplerHook?: RehypeDopplerHookConfig;\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 // Stored from withCurves() for graduationMarketCap conversion in build()\n private numerairePrice?: number;\n private tokenDecimals?: number;\n private numeraireDecimals?: number;\n // Deferred curves config - converted to pool in build()\n private curvesConfig?: {\n numerairePrice: number;\n curves: Array<{\n marketCap: { start: number; end: number | 'max' };\n numPositions: number;\n shares: bigint;\n }>;\n tokenSupply?: bigint;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n fee?: number;\n tickSpacing?: number;\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n };\n public chainId: C;\n\n constructor(chainId: C) {\n this.chainId = chainId;\n }\n\n static forChain<C extends SupportedChainId>(\n chainId: C,\n ): MulticurveBuilder<C> {\n return new MulticurveBuilder(chainId);\n }\n\n tokenConfig(\n params:\n | {\n type?: 'standard';\n name: string;\n symbol: string;\n tokenURI: string;\n yearlyMintRate?: bigint;\n }\n | {\n type: 'doppler404';\n name: string;\n symbol: string;\n baseURI: string;\n unit?: bigint;\n },\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: {\n initialSupply: bigint;\n numTokensToSell: bigint;\n numeraire: Address;\n }): this {\n this.sale = {\n initialSupply: params.initialSupply,\n numTokensToSell: params.numTokensToSell,\n numeraire: params.numeraire,\n };\n return this;\n }\n\n poolConfig(params: {\n fee: number;\n tickSpacing: number;\n curves: {\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n shares: bigint;\n }[];\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n }): this {\n // Mutual exclusion: cannot use poolConfig() after withCurves()\n if (this.curvesConfig) {\n throw new Error(\n 'Cannot use poolConfig() after withCurves(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or poolConfig() for manual tick configuration.',\n );\n }\n\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 = {\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n curves: params.curves,\n beneficiaries: sortedBeneficiaries,\n };\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 // Mutual exclusion: cannot use withMarketCapPresets() after withCurves()\n if (this.curvesConfig) {\n throw new Error(\n 'Cannot use withMarketCapPresets() after withCurves(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or withMarketCapPresets() for preset-based configuration.',\n );\n }\n\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 * V4 pools support custom fees (0-100,000). Standard fee tiers auto-derive\n * tickSpacing; custom fees require explicit tickSpacing parameter.\n *\n * @param params - Market cap configuration with curves defined by market cap ranges\n * @returns Builder instance for chaining\n *\n * @example Standard fee tier\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000,\n * curves: [...],\n * fee: 500, // Standard tier, tickSpacing auto-derived\n * })\n * ```\n *\n * @example Custom fee\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000,\n * curves: [...],\n * fee: 2500, // Custom 0.25% fee\n * tickSpacing: 10, // Required for custom fees\n * })\n * ```\n */\n withCurves(params: MulticurveMarketCapCurvesConfig): this {\n // Mutual exclusion: cannot use withCurves() after poolConfig()/withMarketCapPresets()\n if (this.pool) {\n throw new Error(\n 'Cannot use withCurves() after poolConfig()/withMarketCapPresets(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or poolConfig() for manual tick configuration.',\n );\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 (basic validation that doesn't require saleConfig)\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 // Validate fee if provided\n if (params.fee !== undefined && params.fee > V4_MAX_FEE) {\n throw new Error(\n `Fee ${params.fee} exceeds maximum allowed for V4 pools (${V4_MAX_FEE} = 10%). ` +\n `Use a fee between 0 and ${V4_MAX_FEE}.`,\n );\n }\n\n // Store for later use in build() (graduationMarketCap conversion)\n this.numerairePrice = params.numerairePrice;\n this.tokenDecimals = params.tokenDecimals;\n this.numeraireDecimals = params.numeraireDecimals;\n\n // Store config for deferred conversion in build()\n this.curvesConfig = {\n numerairePrice: params.numerairePrice,\n curves: sortedCurves,\n tokenSupply: params.tokenSupply,\n tokenDecimals: params.tokenDecimals,\n numeraireDecimals: params.numeraireDecimals,\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n beneficiaries: params.beneficiaries,\n };\n\n return this;\n }\n\n /**\n * Sort curves by market cap (start, then end) for deterministic ordering\n */\n private sortCurvesByMarketCap<\n T extends { marketCap: { start: number; end: number | 'max' } },\n >(curves: T[]): T[] {\n return [...curves].sort((a, b) => {\n const startDiff = a.marketCap.start - b.marketCap.start;\n if (startDiff !== 0) return startDiff;\n const aEnd = a.marketCap.end === 'max' ? Infinity : a.marketCap.end;\n const bEnd = b.marketCap.end === 'max' ? Infinity : b.marketCap.end;\n return aEnd - bEnd;\n });\n }\n\n private validateCurveRange(\n startMarketCap: number,\n endMarketCap: number | 'max',\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 !== 'max' && endMarketCap <= 0) {\n throw new Error(`${label}: marketCap.end must be greater than 0`);\n }\n if (endMarketCap !== 'max' && 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 private validateCurveContiguity(\n sortedCurves: { marketCap: { start: number; end: number | 'max' } }[],\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 const prevEnd =\n prevCurve.marketCap.end === 'max'\n ? Infinity\n : prevCurve.marketCap.end;\n const prevEndLabel =\n prevCurve.marketCap.end === 'max'\n ? 'max'\n : `$${prevCurve.marketCap.end.toLocaleString()}`;\n const currEndLabel =\n currCurve.marketCap.end === 'max'\n ? 'max'\n : `$${currCurve.marketCap.end.toLocaleString()}`;\n\n if (currCurve.marketCap.start > prevEnd) {\n throw new Error(\n `Gap detected between market cap ranges: ` +\n `$${prevCurve.marketCap.start.toLocaleString()}-${prevEndLabel} ` +\n `and $${currCurve.marketCap.start.toLocaleString()}-${currEndLabel}. ` +\n `Curves must be contiguous or overlapping.`,\n );\n }\n }\n }\n\n /**\n * Configure a RehypeDopplerHook for the pool.\n *\n * When configured, the hook will be initialized with the pool and will handle:\n * - Custom swap fees\n * - Fee distribution to beneficiaries, LPs, and buyback destinations\n *\n * IMPORTANT:\n * - The hook address must be whitelisted in the DopplerHookInitializer\n * - Fee distribution percentages must sum to exactly WAD (1e18 = 100%)\n *\n * @example\n * ```typescript\n * builder.withRehypeDopplerHook({\n * hookAddress: '0x...',\n * buybackDestination: '0x...',\n * customFee: 3000, // 0.3%\n * assetBuybackPercentWad: parseEther('0.2'), // 20%\n * numeraireBuybackPercentWad: parseEther('0.2'), // 20%\n * beneficiaryPercentWad: parseEther('0.3'), // 30%\n * lpPercentWad: parseEther('0.3'), // 30%\n * })\n * ```\n */\n withRehypeDopplerHook(params: RehypeDopplerHookConfig): this {\n this.assertCanSetInitializer('rehype');\n\n const totalDistribution =\n params.assetBuybackPercentWad +\n params.numeraireBuybackPercentWad +\n params.beneficiaryPercentWad +\n params.lpPercentWad;\n if (totalDistribution !== WAD) {\n throw new Error(\n `DopplerHook fee distribution must sum to ${WAD} (100%), but got ${totalDistribution}`,\n );\n }\n\n // Validate mutual exclusivity of graduation threshold options\n if (params.graduationMarketCap !== undefined && params.farTick !== undefined) {\n throw new Error(\n 'Cannot specify both graduationMarketCap and farTick. Use one or the other.',\n );\n }\n\n this.dopplerHook = params;\n this.initializer = { type: 'rehype', config: params };\n return this;\n }\n\n withVesting(params?: {\n duration?: bigint;\n cliffDuration?: number;\n recipients?: Address[];\n amounts?: bigint[];\n }): 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 private parseStartTimeSeconds(\n value: number | bigint | Date,\n label: string,\n ): number {\n let startTimeSeconds: number;\n if (value instanceof Date) {\n startTimeSeconds = Math.floor(value.getTime() / 1000);\n } else if (typeof value === 'bigint') {\n startTimeSeconds = Number(value);\n } else {\n startTimeSeconds = Number(value);\n }\n\n if (\n !Number.isFinite(startTimeSeconds) ||\n !Number.isInteger(startTimeSeconds)\n ) {\n throw new Error(\n `${label} must be an integer number of seconds since Unix epoch`,\n );\n }\n\n if (startTimeSeconds < 0) {\n throw new Error(`${label} cannot be negative`);\n }\n\n const UINT32_MAX = 0xffffffff;\n if (startTimeSeconds > UINT32_MAX) {\n throw new Error(\n `${label} must fit within uint32 (seconds since Unix epoch up to year 2106)`,\n );\n }\n\n return startTimeSeconds;\n }\n\n private assertCanSetInitializer(\n nextType: MulticurveInitializerConfig['type'],\n ): void {\n const currentType = this.initializer?.type;\n if (\n currentType === undefined ||\n currentType === 'standard' ||\n currentType === nextType\n ) {\n return;\n }\n throw new Error(\n `Cannot set multicurve initializer to '${nextType}' because it is already configured as '${currentType}'`,\n );\n }\n\n /**\n * Configure decay multicurve initializer settings.\n *\n * The pool's terminal fee is always taken from `poolConfig().fee`.\n * `startFee` must be greater than or equal to that terminal fee.\n * `startTime` is optional and defaults to `0` when omitted.\n */\n withDecay(params?: {\n startTime?: number | bigint | Date;\n startFee: number;\n durationSeconds: number | bigint;\n }): this {\n if (!params) {\n if (this.initializer?.type === 'decay') {\n this.initializer = { type: 'standard' };\n }\n return this;\n }\n\n this.assertCanSetInitializer('decay');\n\n const startTime =\n params.startTime === undefined\n ? 0\n : this.parseStartTimeSeconds(params.startTime, 'Decay startTime');\n const startFee = Number(params.startFee);\n const durationSeconds = Number(params.durationSeconds);\n\n if (!Number.isFinite(startFee) || !Number.isInteger(startFee)) {\n throw new Error('Decay startFee must be an integer');\n }\n if (startFee < 0 || startFee > DECAY_MAX_START_FEE) {\n throw new Error(\n `Decay startFee must be between 0 and ${DECAY_MAX_START_FEE} (80%)`,\n );\n }\n if (!Number.isFinite(durationSeconds) || !Number.isInteger(durationSeconds)) {\n throw new Error('Decay durationSeconds must be an integer');\n }\n if (durationSeconds < 0) {\n throw new Error('Decay durationSeconds cannot be negative');\n }\n const UINT32_MAX = 0xffffffff;\n if (durationSeconds > UINT32_MAX) {\n throw new Error('Decay durationSeconds must fit within uint32');\n }\n\n this.schedule = undefined;\n this.initializer = {\n type: 'decay',\n startTime,\n startFee,\n durationSeconds,\n };\n return this;\n }\n\n withSchedule(params?: { startTime: number | bigint | Date }): this {\n if (!params) {\n if (this.initializer?.type === 'scheduled') {\n this.initializer = { type: 'standard' };\n }\n this.schedule = undefined;\n return this;\n }\n\n this.assertCanSetInitializer('scheduled');\n const startTimeSeconds = this.parseStartTimeSeconds(\n params.startTime,\n 'Schedule startTime',\n );\n this.schedule = { startTime: startTimeSeconds };\n this.initializer = { type: 'scheduled', 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>(\n key: K,\n address: NonNullable<ModuleAddressOverrides[K]>,\n ): 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 withAirlock(address: Address): this {\n return this.overrideModule('airlock', address);\n }\n withV4MulticurveInitializer(address: Address): this {\n return this.overrideModule('v4MulticurveInitializer', address);\n }\n withV4ScheduledMulticurveInitializer(address: Address): this {\n return this.overrideModule('v4ScheduledMulticurveInitializer', address);\n }\n withV4DecayMulticurveInitializer(address: Address): this {\n return this.overrideModule('v4DecayMulticurveInitializer', address);\n }\n withGovernanceFactory(address: Address): this {\n return this.overrideModule('governanceFactory', address);\n }\n withV2Migrator(address: Address): this {\n return this.overrideModule('v2Migrator', address);\n }\n\n withV4Migrator(address: Address): this {\n return this.overrideModule('v4Migrator', address);\n }\n withNoOpMigrator(address: Address): this {\n return this.overrideModule('noOpMigrator', address);\n }\n withDopplerHookInitializer(address: Address): this {\n return this.overrideModule('dopplerHookInitializer', address);\n }\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.migration) throw new Error('migration configuration is required');\n if (!this.userAddress) throw new Error('userAddress is required');\n\n // Convert deferred curves config to pool if set\n if (this.curvesConfig && !this.pool) {\n const config = this.curvesConfig;\n\n // Get token supply from config or saleConfig\n const tokenSupply = config.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 = config.fee ?? FEE_TIERS.MEDIUM;\n const tickSpacing =\n config.tickSpacing ?? (TICK_SPACINGS as Record<number, number>)[fee];\n\n if (tickSpacing === undefined) {\n throw new Error(\n `Custom fee ${fee} requires explicit tickSpacing. ` +\n `Standard fees (100, 500, 3000, 10000) auto-derive tickSpacing.`,\n );\n }\n\n // Validate first curve market caps (the launch price)\n const firstCurve = config.curves[0];\n const startValidation = validateMarketCapParameters(\n firstCurve.marketCap.start,\n tokenSupply,\n config.tokenDecimals,\n );\n const endValidation =\n firstCurve.marketCap.end === 'max'\n ? { valid: true, warnings: [] }\n : validateMarketCapParameters(\n firstCurve.marketCap.end,\n tokenSupply,\n config.tokenDecimals,\n );\n const allWarnings = [\n ...startValidation.warnings,\n ...endValidation.warnings,\n ];\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: {\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n shares: bigint;\n }[] = [];\n\n for (const curve of config.curves) {\n const curveTicks = marketCapToTicksForMulticurve({\n marketCapLower: curve.marketCap.start,\n marketCapUpper: curve.marketCap.end,\n tokenSupply,\n numerairePriceUSD: config.numerairePrice,\n tickSpacing,\n tokenDecimals: config.tokenDecimals ?? 18,\n numeraireDecimals: config.numeraireDecimals ?? 18,\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 // Sort beneficiaries by address if provided\n const sortedBeneficiaries = config.beneficiaries\n ? [...config.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 // Set pool config\n this.pool = {\n fee,\n tickSpacing,\n curves,\n beneficiaries: sortedBeneficiaries,\n };\n }\n\n if (!this.pool) throw new Error('poolConfig is required');\n\n // Validate noOp migration requires beneficiaries\n // NoOpMigrator is designed for locked pools with beneficiaries. Without beneficiaries,\n // the pool status is \"Initialized\" (not \"Locked\"), meaning exitLiquidity() can be called.\n // But NoOpMigrator.migrate() always reverts, so the entire graduation transaction fails\n // and liquidity becomes trapped.\n if (this.migration.type === 'noOp') {\n const hasBeneficiaries =\n this.pool.beneficiaries && this.pool.beneficiaries.length > 0;\n if (!hasBeneficiaries) {\n throw new Error(\n 'noOp migration requires beneficiaries. Without beneficiaries, the pool would be stuck after reaching ' +\n 'graduation - exitLiquidity() succeeds but NoOpMigrator.migrate() always reverts, causing the entire ' +\n 'transaction to fail. Either add beneficiaries or use a different migration type (uniswapV2, uniswapV4).',\n );\n }\n }\n\n // Convert graduationMarketCap to farTick if using rehype\n let dopplerHook = this.dopplerHook;\n if (dopplerHook?.graduationMarketCap !== undefined) {\n // Use numerairePrice from: 1) explicit in dopplerHook, 2) stored from withCurves()\n const numerairePrice = dopplerHook.numerairePrice ?? this.numerairePrice;\n\n if (!numerairePrice) {\n throw new Error(\n 'graduationMarketCap requires numerairePrice. ' +\n 'Either use withCurves() (which provides numerairePrice), ' +\n 'or pass numerairePrice explicitly in withRehypeDopplerHook().',\n );\n }\n\n if (dopplerHook.graduationMarketCap <= 0) {\n throw new Error('graduationMarketCap must be greater than 0');\n }\n\n const farTick = marketCapToTickForMulticurve({\n marketCapUSD: dopplerHook.graduationMarketCap,\n tokenSupply: this.sale.initialSupply,\n numerairePriceUSD: numerairePrice,\n tickSpacing: this.pool.tickSpacing,\n tokenDecimals: this.tokenDecimals ?? 18,\n numeraireDecimals: this.numeraireDecimals ?? 18,\n });\n\n // Validate farTick is within curve boundaries\n const allTickUppers = this.pool.curves.map((c) => c.tickUpper);\n const allTickLowers = this.pool.curves.map((c) => c.tickLower);\n const maxTickUpper = Math.max(...allTickUppers);\n const minTickLower = Math.min(...allTickLowers);\n\n if (farTick < minTickLower) {\n throw new Error(\n `graduationMarketCap converts to tick ${farTick}, which is below the lowest curve tick (${minTickLower})`,\n );\n }\n if (farTick > maxTickUpper) {\n throw new Error(\n `graduationMarketCap converts to tick ${farTick}, which is above the highest curve tick (${maxTickUpper})`,\n );\n }\n\n // Store computed farTick on dopplerHook for encoding\n dopplerHook = { ...dopplerHook, farTick };\n }\n\n const initializer =\n this.initializer ??\n (dopplerHook\n ? { type: 'rehype', config: dopplerHook }\n : this.schedule\n ? { type: 'scheduled', startTime: this.schedule.startTime }\n : { type: 'standard' });\n\n if (initializer.type === 'scheduled' && dopplerHook) {\n throw new Error(\n \"Cannot combine scheduled multicurve with rehype initializer. Use exactly one initializer mode.\",\n );\n }\n if (initializer.type === 'decay' && dopplerHook) {\n throw new Error(\n \"Cannot combine decay multicurve with rehype initializer. Use exactly one initializer mode.\",\n );\n }\n if (initializer.type === 'decay') {\n const startFee = Number(initializer.startFee);\n const terminalFee = Number(this.pool.fee);\n\n if (startFee < terminalFee) {\n throw new Error(\n `Decay startFee (${startFee}) must be greater than or equal to terminal pool fee (${terminalFee})`,\n );\n }\n\n if (startFee > terminalFee && initializer.durationSeconds <= 0) {\n throw new Error(\n 'Decay durationSeconds must be greater than 0 when startFee is greater than pool.fee',\n );\n }\n }\n\n const schedule =\n initializer.type === 'scheduled'\n ? { startTime: initializer.startTime }\n : undefined;\n dopplerHook =\n initializer.type === 'rehype' ? initializer.config : undefined;\n\n // Default governance: noOp on supported chains, default on others (e.g., Ink)\n const governance =\n this.governance ??\n (isNoOpEnabledChain(this.chainId)\n ? { type: 'noOp' as const }\n : { type: 'default' as const });\n\n if (\n governance.type === 'launchpad' &&\n !isLaunchpadEnabledChain(this.chainId)\n ) {\n throw new Error(\n `Launchpad governance is not supported on chain ${this.chainId}. Use a supported chain or a different governance type.`,\n );\n }\n\n return {\n token: this.token,\n sale: this.sale,\n pool: this.pool,\n initializer,\n schedule,\n dopplerHook,\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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/builders/DynamicAuctionBuilder.ts"],"names":["DEFAULT_V4_YEARLY_MINT_RATE","ZERO_ADDRESS","DOPPLER_MAX_TICK_SPACING","DEFAULT_AUCTION_DURATION","DEFAULT_EPOCH_LENGTH","computeOptimalGamma","computeTicks","V4_MAX_FEE","FEE_TIERS","validateMarketCapParameters","marketCapToTicksForDynamicAuction","gamma","isNoOpEnabledChain","isLaunchpadEnabledChain"],"mappings":"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","file":"chunk-CUB4F546.js","sourcesContent":["import type { Address } from 'viem';\nimport {\n DEFAULT_AUCTION_DURATION,\n DEFAULT_EPOCH_LENGTH,\n DEFAULT_V4_YEARLY_MINT_RATE,\n DOPPLER_MAX_TICK_SPACING,\n FEE_TIERS,\n V4_MAX_FEE,\n ZERO_ADDRESS,\n} from '../constants';\nimport {\n computeOptimalGamma,\n marketCapToTicksForDynamicAuction,\n validateMarketCapParameters,\n} from '../utils';\nimport {\n isNoOpEnabledChain,\n isLaunchpadEnabledChain,\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<\n 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 // Deferred market cap config - converted to pool and auction in build()\n private marketCapConfig?: {\n marketCap: { start: number; min: number };\n numerairePrice: number;\n tokenSupply?: bigint;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n fee?: number;\n tickSpacing?: number;\n minProceeds: bigint;\n maxProceeds: bigint;\n duration?: number;\n epochLength?: number;\n gamma?: number;\n numPdSlugs?: number;\n };\n public chainId: C;\n\n constructor(chainId: C) {\n this.chainId = chainId;\n }\n\n static forChain<C extends SupportedChainId>(\n chainId: C,\n ): DynamicAuctionBuilder<C> {\n return new DynamicAuctionBuilder(chainId);\n }\n\n tokenConfig(\n params:\n | {\n type?: 'standard';\n name: string;\n symbol: string;\n tokenURI: string;\n yearlyMintRate?: bigint;\n }\n | {\n type: 'doppler404';\n name: string;\n symbol: string;\n baseURI: string;\n unit?: bigint;\n },\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 // Mutual exclusion: cannot use poolConfig() after withMarketCapRange()\n if (this.marketCapConfig) {\n throw new Error(\n 'Cannot use poolConfig() after withMarketCapRange(). ' +\n 'Use withMarketCapRange() for market cap-based configuration, ' +\n 'or poolConfig() + auctionByTicks() for manual tick configuration.',\n );\n }\n\n // Validate tick spacing against Doppler contract constraint\n if (params.tickSpacing > DOPPLER_MAX_TICK_SPACING) {\n throw new Error(\n `Dynamic auctions require tickSpacing <= ${DOPPLER_MAX_TICK_SPACING} (Doppler.sol MAX_TICK_SPACING). ` +\n `Got tickSpacing=${params.tickSpacing}. ` +\n `Use a smaller tickSpacing, or use withMarketCapRange() which handles this automatically.`,\n );\n }\n\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 ??\n (this.pool\n ? computeOptimalGamma(\n params.startTick,\n params.endTick,\n duration,\n epochLength,\n this.pool.tickSpacing,\n )\n : 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(\n 'tickSpacing is required (set poolConfig first or pass tickSpacing)',\n );\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 * V4 pools support custom fees (0-100,000). Standard fee tiers auto-derive\n * tickSpacing; custom fees require explicit tickSpacing (max: 30).\n *\n * @param params - Market cap configuration with auction parameters\n * @returns Builder instance for chaining\n *\n * @example Standard fee tier (auto tickSpacing)\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withMarketCapRange({\n * marketCap: { start: 500_000, min: 50_000 },\n * numerairePrice: 3000,\n * minProceeds: parseEther('10'),\n * maxProceeds: parseEther('1000'),\n * fee: 10000, // Standard tier, tickSpacing auto = 30\n * })\n * ```\n *\n * @example Custom fee (requires explicit tickSpacing)\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withMarketCapRange({\n * marketCap: { start: 500_000, min: 50_000 },\n * numerairePrice: 3000,\n * minProceeds: parseEther('10'),\n * maxProceeds: parseEther('1000'),\n * fee: 2500, // Custom 0.25% fee\n * tickSpacing: 10, // Required for custom fees\n * })\n * ```\n */\n withMarketCapRange(params: DynamicAuctionMarketCapConfig): this {\n // Mutual exclusion: cannot use withMarketCapRange() after poolConfig()\n if (this.pool) {\n throw new Error(\n 'Cannot use withMarketCapRange() after poolConfig(). ' +\n 'Use withMarketCapRange() for market cap-based configuration, ' +\n 'or poolConfig() + auctionByTicks() for manual tick configuration.',\n );\n }\n\n // Basic validation that doesn't require saleConfig\n if (params.numerairePrice <= 0) {\n throw new Error('numerairePrice must be greater than 0');\n }\n if (params.marketCap.start <= 0 || params.marketCap.min <= 0) {\n throw new Error('marketCap values must be greater than 0');\n }\n if (params.marketCap.min >= params.marketCap.start) {\n throw new Error('marketCap.min must be less than marketCap.start');\n }\n\n // Validate fee if provided\n if (params.fee !== undefined && params.fee > V4_MAX_FEE) {\n throw new Error(\n `Fee ${params.fee} exceeds maximum allowed for V4 pools (${V4_MAX_FEE} = 10%). ` +\n `Use a fee between 0 and ${V4_MAX_FEE}.`,\n );\n }\n\n // Validate tickSpacing if provided\n if (\n params.tickSpacing !== undefined &&\n params.tickSpacing > DOPPLER_MAX_TICK_SPACING\n ) {\n throw new Error(\n `tickSpacing ${params.tickSpacing} exceeds maximum allowed for Doppler pools (${DOPPLER_MAX_TICK_SPACING}). ` +\n `Use tickSpacing <= ${DOPPLER_MAX_TICK_SPACING}.`,\n );\n }\n\n // Store config for deferred conversion in build()\n this.marketCapConfig = {\n marketCap: params.marketCap,\n numerairePrice: params.numerairePrice,\n tokenSupply: params.tokenSupply,\n tokenDecimals: params.tokenDecimals,\n numeraireDecimals: params.numeraireDecimals,\n fee: params.fee,\n tickSpacing: params.tickSpacing,\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 return this;\n }\n\n withVesting(params?: {\n duration?: bigint;\n cliffDuration?: number;\n recipients?: Address[];\n amounts?: bigint[];\n }): 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?: {\n startTimeOffset?: number;\n blockTimestamp?: number;\n }): 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>(\n key: K,\n address: NonNullable<ModuleAddressOverrides[K]>,\n ): 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 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.migration) throw new Error('migration configuration is required');\n if (!this.userAddress) throw new Error('userAddress is required');\n\n // Convert deferred market cap config to pool and auction if set\n if (this.marketCapConfig && !this.pool) {\n const config = this.marketCapConfig;\n\n // Get token supply from config or saleConfig\n const tokenSupply = config.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 // Derive fee and tickSpacing\n const fee = config.fee ?? FEE_TIERS.HIGH;\n const tickSpacing = config.tickSpacing ?? DOPPLER_MAX_TICK_SPACING;\n\n // Set pool config\n this.pool = { fee, tickSpacing };\n\n // Validate market cap parameters\n const startValidation = validateMarketCapParameters(\n config.marketCap.start,\n tokenSupply,\n config.tokenDecimals,\n );\n const minValidation = validateMarketCapParameters(\n config.marketCap.min,\n tokenSupply,\n config.tokenDecimals,\n );\n\n const allWarnings = [\n ...startValidation.warnings,\n ...minValidation.warnings,\n ];\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 for V4 Dynamic auction\n const { startTick, endTick } = marketCapToTicksForDynamicAuction({\n marketCapRange: {\n start: config.marketCap.min,\n end: config.marketCap.start,\n },\n tokenSupply,\n numerairePriceUSD: config.numerairePrice,\n numeraire: this.sale.numeraire,\n tickSpacing,\n tokenDecimals: config.tokenDecimals ?? 18,\n numeraireDecimals: config.numeraireDecimals ?? 18,\n });\n\n // Set auction config\n const duration = config.duration ?? DEFAULT_AUCTION_DURATION;\n const epochLength = config.epochLength ?? DEFAULT_EPOCH_LENGTH;\n const gamma =\n config.gamma ??\n computeOptimalGamma(startTick, endTick, duration, epochLength, tickSpacing);\n\n this.auction = {\n duration,\n epochLength,\n startTick,\n endTick,\n gamma,\n minProceeds: config.minProceeds,\n maxProceeds: config.maxProceeds,\n numPdSlugs: config.numPdSlugs,\n };\n }\n\n if (!this.pool) throw new Error('poolConfig is required');\n if (!this.auction) throw new Error('auction configuration is required');\n\n // Validate noOp migration is not supported for dynamic auctions\n if (this.migration.type === 'noOp') {\n throw new Error(\n 'noOp migration is not supported for dynamic auctions. ' +\n 'Use uniswapV2 or uniswapV4 migration instead.',\n );\n }\n\n // Default governance: noOp on supported chains, default on others (e.g., Ink)\n const governance =\n this.governance ??\n (isNoOpEnabledChain(this.chainId)\n ? { type: 'noOp' as const }\n : { type: 'default' as const });\n\n if (\n governance.type === 'launchpad' &&\n !isLaunchpadEnabledChain(this.chainId)\n ) {\n throw new Error(\n `Launchpad governance is not supported on chain ${this.chainId}. Use a supported chain or a different governance type.`,\n );\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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/builders/DynamicAuctionBuilder.ts"],"names":["gamma"],"mappings":"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","file":"chunk-FVTTG72Z.mjs","sourcesContent":["import type { Address } from 'viem';\nimport {\n DEFAULT_AUCTION_DURATION,\n DEFAULT_EPOCH_LENGTH,\n DEFAULT_V4_YEARLY_MINT_RATE,\n DOPPLER_MAX_TICK_SPACING,\n FEE_TIERS,\n V4_MAX_FEE,\n ZERO_ADDRESS,\n} from '../constants';\nimport {\n computeOptimalGamma,\n marketCapToTicksForDynamicAuction,\n validateMarketCapParameters,\n} from '../utils';\nimport {\n isNoOpEnabledChain,\n isLaunchpadEnabledChain,\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<\n 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 // Deferred market cap config - converted to pool and auction in build()\n private marketCapConfig?: {\n marketCap: { start: number; min: number };\n numerairePrice: number;\n tokenSupply?: bigint;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n fee?: number;\n tickSpacing?: number;\n minProceeds: bigint;\n maxProceeds: bigint;\n duration?: number;\n epochLength?: number;\n gamma?: number;\n numPdSlugs?: number;\n };\n public chainId: C;\n\n constructor(chainId: C) {\n this.chainId = chainId;\n }\n\n static forChain<C extends SupportedChainId>(\n chainId: C,\n ): DynamicAuctionBuilder<C> {\n return new DynamicAuctionBuilder(chainId);\n }\n\n tokenConfig(\n params:\n | {\n type?: 'standard';\n name: string;\n symbol: string;\n tokenURI: string;\n yearlyMintRate?: bigint;\n }\n | {\n type: 'doppler404';\n name: string;\n symbol: string;\n baseURI: string;\n unit?: bigint;\n },\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 // Mutual exclusion: cannot use poolConfig() after withMarketCapRange()\n if (this.marketCapConfig) {\n throw new Error(\n 'Cannot use poolConfig() after withMarketCapRange(). ' +\n 'Use withMarketCapRange() for market cap-based configuration, ' +\n 'or poolConfig() + auctionByTicks() for manual tick configuration.',\n );\n }\n\n // Validate tick spacing against Doppler contract constraint\n if (params.tickSpacing > DOPPLER_MAX_TICK_SPACING) {\n throw new Error(\n `Dynamic auctions require tickSpacing <= ${DOPPLER_MAX_TICK_SPACING} (Doppler.sol MAX_TICK_SPACING). ` +\n `Got tickSpacing=${params.tickSpacing}. ` +\n `Use a smaller tickSpacing, or use withMarketCapRange() which handles this automatically.`,\n );\n }\n\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 ??\n (this.pool\n ? computeOptimalGamma(\n params.startTick,\n params.endTick,\n duration,\n epochLength,\n this.pool.tickSpacing,\n )\n : 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(\n 'tickSpacing is required (set poolConfig first or pass tickSpacing)',\n );\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 * V4 pools support custom fees (0-100,000). Standard fee tiers auto-derive\n * tickSpacing; custom fees require explicit tickSpacing (max: 30).\n *\n * @param params - Market cap configuration with auction parameters\n * @returns Builder instance for chaining\n *\n * @example Standard fee tier (auto tickSpacing)\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withMarketCapRange({\n * marketCap: { start: 500_000, min: 50_000 },\n * numerairePrice: 3000,\n * minProceeds: parseEther('10'),\n * maxProceeds: parseEther('1000'),\n * fee: 10000, // Standard tier, tickSpacing auto = 30\n * })\n * ```\n *\n * @example Custom fee (requires explicit tickSpacing)\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withMarketCapRange({\n * marketCap: { start: 500_000, min: 50_000 },\n * numerairePrice: 3000,\n * minProceeds: parseEther('10'),\n * maxProceeds: parseEther('1000'),\n * fee: 2500, // Custom 0.25% fee\n * tickSpacing: 10, // Required for custom fees\n * })\n * ```\n */\n withMarketCapRange(params: DynamicAuctionMarketCapConfig): this {\n // Mutual exclusion: cannot use withMarketCapRange() after poolConfig()\n if (this.pool) {\n throw new Error(\n 'Cannot use withMarketCapRange() after poolConfig(). ' +\n 'Use withMarketCapRange() for market cap-based configuration, ' +\n 'or poolConfig() + auctionByTicks() for manual tick configuration.',\n );\n }\n\n // Basic validation that doesn't require saleConfig\n if (params.numerairePrice <= 0) {\n throw new Error('numerairePrice must be greater than 0');\n }\n if (params.marketCap.start <= 0 || params.marketCap.min <= 0) {\n throw new Error('marketCap values must be greater than 0');\n }\n if (params.marketCap.min >= params.marketCap.start) {\n throw new Error('marketCap.min must be less than marketCap.start');\n }\n\n // Validate fee if provided\n if (params.fee !== undefined && params.fee > V4_MAX_FEE) {\n throw new Error(\n `Fee ${params.fee} exceeds maximum allowed for V4 pools (${V4_MAX_FEE} = 10%). ` +\n `Use a fee between 0 and ${V4_MAX_FEE}.`,\n );\n }\n\n // Validate tickSpacing if provided\n if (\n params.tickSpacing !== undefined &&\n params.tickSpacing > DOPPLER_MAX_TICK_SPACING\n ) {\n throw new Error(\n `tickSpacing ${params.tickSpacing} exceeds maximum allowed for Doppler pools (${DOPPLER_MAX_TICK_SPACING}). ` +\n `Use tickSpacing <= ${DOPPLER_MAX_TICK_SPACING}.`,\n );\n }\n\n // Store config for deferred conversion in build()\n this.marketCapConfig = {\n marketCap: params.marketCap,\n numerairePrice: params.numerairePrice,\n tokenSupply: params.tokenSupply,\n tokenDecimals: params.tokenDecimals,\n numeraireDecimals: params.numeraireDecimals,\n fee: params.fee,\n tickSpacing: params.tickSpacing,\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 return this;\n }\n\n withVesting(params?: {\n duration?: bigint;\n cliffDuration?: number;\n recipients?: Address[];\n amounts?: bigint[];\n }): 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?: {\n startTimeOffset?: number;\n blockTimestamp?: number;\n }): 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>(\n key: K,\n address: NonNullable<ModuleAddressOverrides[K]>,\n ): 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 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.migration) throw new Error('migration configuration is required');\n if (!this.userAddress) throw new Error('userAddress is required');\n\n // Convert deferred market cap config to pool and auction if set\n if (this.marketCapConfig && !this.pool) {\n const config = this.marketCapConfig;\n\n // Get token supply from config or saleConfig\n const tokenSupply = config.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 // Derive fee and tickSpacing\n const fee = config.fee ?? FEE_TIERS.HIGH;\n const tickSpacing = config.tickSpacing ?? DOPPLER_MAX_TICK_SPACING;\n\n // Set pool config\n this.pool = { fee, tickSpacing };\n\n // Validate market cap parameters\n const startValidation = validateMarketCapParameters(\n config.marketCap.start,\n tokenSupply,\n config.tokenDecimals,\n );\n const minValidation = validateMarketCapParameters(\n config.marketCap.min,\n tokenSupply,\n config.tokenDecimals,\n );\n\n const allWarnings = [\n ...startValidation.warnings,\n ...minValidation.warnings,\n ];\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 for V4 Dynamic auction\n const { startTick, endTick } = marketCapToTicksForDynamicAuction({\n marketCapRange: {\n start: config.marketCap.min,\n end: config.marketCap.start,\n },\n tokenSupply,\n numerairePriceUSD: config.numerairePrice,\n numeraire: this.sale.numeraire,\n tickSpacing,\n tokenDecimals: config.tokenDecimals ?? 18,\n numeraireDecimals: config.numeraireDecimals ?? 18,\n });\n\n // Set auction config\n const duration = config.duration ?? DEFAULT_AUCTION_DURATION;\n const epochLength = config.epochLength ?? DEFAULT_EPOCH_LENGTH;\n const gamma =\n config.gamma ??\n computeOptimalGamma(startTick, endTick, duration, epochLength, tickSpacing);\n\n this.auction = {\n duration,\n epochLength,\n startTick,\n endTick,\n gamma,\n minProceeds: config.minProceeds,\n maxProceeds: config.maxProceeds,\n numPdSlugs: config.numPdSlugs,\n };\n }\n\n if (!this.pool) throw new Error('poolConfig is required');\n if (!this.auction) throw new Error('auction configuration is required');\n\n // Validate noOp migration is not supported for dynamic auctions\n if (this.migration.type === 'noOp') {\n throw new Error(\n 'noOp migration is not supported for dynamic auctions. ' +\n 'Use uniswapV2 or uniswapV4 migration instead.',\n );\n }\n\n // Default governance: noOp on supported chains, default on others (e.g., Ink)\n const governance =\n this.governance ??\n (isNoOpEnabledChain(this.chainId)\n ? { type: 'noOp' as const }\n : { type: 'default' as const });\n\n if (\n governance.type === 'launchpad' &&\n !isLaunchpadEnabledChain(this.chainId)\n ) {\n throw new Error(\n `Launchpad governance is not supported on chain ${this.chainId}. Use a supported chain or a different governance type.`,\n );\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"]}