@whetstone-research/doppler-sdk 0.0.21 → 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 +94 -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 +3 -0
  19. package/dist/addresses.d.ts +3 -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-GFOBDFVW.js → chunk-6UHDSD42.js} +206 -28
  41. package/dist/chunk-6UHDSD42.js.map +1 -0
  42. package/dist/{chunk-JHPDKSC4.js → chunk-7CAAI5DL.js} +115 -84
  43. package/dist/chunk-7CAAI5DL.js.map +1 -0
  44. package/dist/{chunk-U7CHPFU6.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-SQRQYDB3.mjs → chunk-C6MH7HYT.mjs} +11 -11
  49. package/dist/{chunk-SQRQYDB3.mjs.map → chunk-C6MH7HYT.mjs.map} +1 -1
  50. package/dist/{chunk-RJE6LWWF.mjs → chunk-CATH4QRQ.mjs} +3 -3
  51. package/dist/{chunk-RJE6LWWF.mjs.map → chunk-CATH4QRQ.mjs.map} +1 -1
  52. package/dist/{chunk-5JQDXMDN.js → chunk-CMNJZKTM.js} +24 -24
  53. package/dist/{chunk-5JQDXMDN.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-GLMPU7VL.js → chunk-EH3V2BJF.js} +12 -12
  59. package/dist/chunk-EH3V2BJF.js.map +1 -0
  60. package/dist/{chunk-36Y3N257.mjs → chunk-EIXUJANI.mjs} +5 -5
  61. package/dist/chunk-EIXUJANI.mjs.map +1 -0
  62. package/dist/{chunk-HX3A6ALC.mjs → chunk-FFV6DMPA.mjs} +3 -3
  63. package/dist/{chunk-HX3A6ALC.mjs.map → chunk-FFV6DMPA.mjs.map} +1 -1
  64. package/dist/{chunk-NJYBKWCD.mjs → chunk-FLFYAWSS.mjs} +3 -3
  65. package/dist/{chunk-NJYBKWCD.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-COUZYFEE.js → chunk-FTRCBE3J.js} +11 -11
  69. package/dist/{chunk-COUZYFEE.js.map → chunk-FTRCBE3J.js.map} +1 -1
  70. package/dist/{chunk-HHHCRTC7.js → chunk-FZ4FIWCR.js} +5 -5
  71. package/dist/{chunk-HHHCRTC7.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-RKPAL3SU.mjs → chunk-GSTY3GO7.mjs} +3 -3
  77. package/dist/{chunk-RKPAL3SU.mjs.map → chunk-GSTY3GO7.mjs.map} +1 -1
  78. package/dist/{chunk-4CJS5XLY.js → chunk-H7WPK5CR.js} +4 -4
  79. package/dist/{chunk-4CJS5XLY.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-CXE33IZN.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-TYJZL2XZ.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-AS5UUJRI.js → chunk-OX5CESVM.js} +13 -11
  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-XEWKLVOD.mjs → chunk-RI6SDMER.mjs} +3 -3
  97. package/dist/{chunk-XEWKLVOD.mjs.map → chunk-RI6SDMER.mjs.map} +1 -1
  98. package/dist/{chunk-NWZGO2CH.mjs → chunk-RIIVW6TQ.mjs} +43 -12
  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-Y5RAENN5.js → chunk-TIGHBA37.js} +5 -5
  103. package/dist/{chunk-Y5RAENN5.js.map → chunk-TIGHBA37.js.map} +1 -1
  104. package/dist/{chunk-BFJGY436.mjs → chunk-TLEVIIUE.mjs} +5 -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-V7YRKFYK.mjs → chunk-VCX6FG3E.mjs} +5 -5
  109. package/dist/{chunk-V7YRKFYK.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-K27G7LLT.js → chunk-XT3BAM4H.js} +5 -5
  121. package/dist/{chunk-K27G7LLT.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-545TB6TH.js → chunk-YFEPTSI2.js} +11 -11
  125. package/dist/{chunk-545TB6TH.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 +33 -5
  159. package/dist/types.d.ts +33 -5
  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-36Y3N257.mjs.map +0 -1
  181. package/dist/chunk-5TL5V6UX.mjs +0 -3
  182. package/dist/chunk-64ZQRKG3.mjs.map +0 -1
  183. package/dist/chunk-AS5UUJRI.js.map +0 -1
  184. package/dist/chunk-AZOBEWP3.mjs.map +0 -1
  185. package/dist/chunk-BFJGY436.mjs.map +0 -1
  186. package/dist/chunk-CXE33IZN.mjs.map +0 -1
  187. package/dist/chunk-GFOBDFVW.js.map +0 -1
  188. package/dist/chunk-GLMPU7VL.js.map +0 -1
  189. package/dist/chunk-JHPDKSC4.js.map +0 -1
  190. package/dist/chunk-LPA32BIK.mjs.map +0 -1
  191. package/dist/chunk-NWZGO2CH.mjs.map +0 -1
  192. package/dist/chunk-OF7BIKXV.js.map +0 -1
  193. package/dist/chunk-OGYWNJGI.js.map +0 -1
  194. package/dist/chunk-OROTK4OT.js.map +0 -1
  195. package/dist/chunk-QFQXHDC7.mjs +0 -247
  196. package/dist/chunk-QFQXHDC7.mjs.map +0 -1
  197. package/dist/chunk-RLUMYHPI.js +0 -249
  198. package/dist/chunk-RLUMYHPI.js.map +0 -1
  199. package/dist/chunk-SMTHFPBA.js.map +0 -1
  200. package/dist/chunk-TYJZL2XZ.js.map +0 -1
  201. package/dist/chunk-U7CHPFU6.mjs.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,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
- var chunkK27G7LLT_js = require('../chunk-K27G7LLT.js');
4
- require('../chunk-JHPDKSC4.js');
5
- require('../chunk-RLUMYHPI.js');
3
+ var chunkXT3BAM4H_js = require('../chunk-XT3BAM4H.js');
4
+ require('../chunk-7CAAI5DL.js');
5
+ require('../chunk-DNB3T5P2.js');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "DEFAULT_AIRLOCK_BENEFICIARY_SHARES", {
10
10
  enumerable: true,
11
- get: function () { return chunkK27G7LLT_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
11
+ get: function () { return chunkXT3BAM4H_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
12
12
  });
13
13
  Object.defineProperty(exports, "createAirlockBeneficiary", {
14
14
  enumerable: true,
15
- get: function () { return chunkK27G7LLT_js.createAirlockBeneficiary; }
15
+ get: function () { return chunkXT3BAM4H_js.createAirlockBeneficiary; }
16
16
  });
17
17
  Object.defineProperty(exports, "getAirlockBeneficiary", {
18
18
  enumerable: true,
19
- get: function () { return chunkK27G7LLT_js.getAirlockBeneficiary; }
19
+ get: function () { return chunkXT3BAM4H_js.getAirlockBeneficiary; }
20
20
  });
21
21
  Object.defineProperty(exports, "getAirlockOwner", {
22
22
  enumerable: true,
23
- get: function () { return chunkK27G7LLT_js.getAirlockOwner; }
23
+ get: function () { return chunkXT3BAM4H_js.getAirlockOwner; }
24
24
  });
25
25
  //# sourceMappingURL=airlock.js.map
26
26
  //# sourceMappingURL=airlock.js.map
@@ -1,5 +1,5 @@
1
- export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-RKPAL3SU.mjs';
2
- import '../chunk-NWZGO2CH.mjs';
3
- import '../chunk-QFQXHDC7.mjs';
1
+ export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-GSTY3GO7.mjs';
2
+ import '../chunk-RIIVW6TQ.mjs';
3
+ import '../chunk-XRYLHTVV.mjs';
4
4
  //# sourceMappingURL=airlock.mjs.map
5
5
  //# sourceMappingURL=airlock.mjs.map
@@ -0,0 +1,11 @@
1
+ import { Address, Hex } from 'viem';
2
+ import { RehypeDopplerHookMigratorConfig } from '../types.mjs';
3
+ import 'viem/chains';
4
+ import '../addresses.mjs';
5
+
6
+ declare function encodeRehypeDopplerHookMigratorCalldata(params: {
7
+ numeraire: Address;
8
+ config: RehypeDopplerHookMigratorConfig;
9
+ }): Hex;
10
+
11
+ export { encodeRehypeDopplerHookMigratorCalldata };
@@ -0,0 +1,11 @@
1
+ import { Address, Hex } from 'viem';
2
+ import { RehypeDopplerHookMigratorConfig } from '../types.js';
3
+ import 'viem/chains';
4
+ import '../addresses.js';
5
+
6
+ declare function encodeRehypeDopplerHookMigratorCalldata(params: {
7
+ numeraire: Address;
8
+ config: RehypeDopplerHookMigratorConfig;
9
+ }): Hex;
10
+
11
+ export { encodeRehypeDopplerHookMigratorCalldata };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkWJBJARLJ_js = require('../chunk-WJBJARLJ.js');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "encodeRehypeDopplerHookMigratorCalldata", {
8
+ enumerable: true,
9
+ get: function () { return chunkWJBJARLJ_js.encodeRehypeDopplerHookMigratorCalldata; }
10
+ });
11
+ //# sourceMappingURL=dopplerHookMigrator.js.map
12
+ //# sourceMappingURL=dopplerHookMigrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"dopplerHookMigrator.js"}
@@ -0,0 +1,3 @@
1
+ export { encodeRehypeDopplerHookMigratorCalldata } from '../chunk-GDODJJ7D.mjs';
2
+ //# sourceMappingURL=dopplerHookMigrator.mjs.map
3
+ //# sourceMappingURL=dopplerHookMigrator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"dopplerHookMigrator.mjs"}
@@ -6,6 +6,7 @@ export { decodeBalanceDelta } from './balanceDelta.mjs';
6
6
  export { computePoolId } from './poolKey.mjs';
7
7
  export { computeOptimalGamma } from './computeOptimalGamma.mjs';
8
8
  export { isToken0Expected } from './isToken0Expected.mjs';
9
+ export { encodeRehypeDopplerHookMigratorCalldata } from './dopplerHookMigrator.mjs';
9
10
  export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from './marketCapHelpers.mjs';
10
11
  export { MarketCapRange, MarketCapValidationResult } from '../types.mjs';
11
12
  import 'viem';
@@ -6,6 +6,7 @@ export { decodeBalanceDelta } from './balanceDelta.js';
6
6
  export { computePoolId } from './poolKey.js';
7
7
  export { computeOptimalGamma } from './computeOptimalGamma.js';
8
8
  export { isToken0Expected } from './isToken0Expected.js';
9
+ export { encodeRehypeDopplerHookMigratorCalldata } from './dopplerHookMigrator.js';
9
10
  export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from './marketCapHelpers.js';
10
11
  export { MarketCapRange, MarketCapValidationResult } from '../types.js';
11
12
  import 'viem';
@@ -1,78 +1,87 @@
1
1
  'use strict';
2
2
 
3
- require('../chunk-WTS75RUC.js');
3
+ require('../chunk-DSYPZETD.js');
4
+ var chunkWNUB3UTT_js = require('../chunk-WNUB3UTT.js');
4
5
  var chunkUPVKABAV_js = require('../chunk-UPVKABAV.js');
5
- var chunkN33R22A2_js = require('../chunk-N33R22A2.js');
6
+ var chunkWJBJARLJ_js = require('../chunk-WJBJARLJ.js');
7
+ var chunkFNUBKONK_js = require('../chunk-FNUBKONK.js');
6
8
  var chunk6H6X3VTZ_js = require('../chunk-6H6X3VTZ.js');
7
9
  var chunk7M57PU6V_js = require('../chunk-7M57PU6V.js');
8
10
  var chunkKHUE77HC_js = require('../chunk-KHUE77HC.js');
9
11
  var chunk4VWQNNNW_js = require('../chunk-4VWQNNNW.js');
10
- var chunkOROTK4OT_js = require('../chunk-OROTK4OT.js');
11
- var chunkK27G7LLT_js = require('../chunk-K27G7LLT.js');
12
+ var chunkXT3BAM4H_js = require('../chunk-XT3BAM4H.js');
12
13
  var chunkXSJTASPK_js = require('../chunk-XSJTASPK.js');
13
- require('../chunk-JHPDKSC4.js');
14
- require('../chunk-RLUMYHPI.js');
14
+ require('../chunk-7CAAI5DL.js');
15
+ require('../chunk-DNB3T5P2.js');
15
16
  require('../chunk-3MVW6UIW.js');
16
17
  require('../chunk-4XN6DQBW.js');
17
- require('../chunk-OF7BIKXV.js');
18
- require('../chunk-2ZM4JVFC.js');
19
- require('../chunk-SMTHFPBA.js');
20
- require('../chunk-VGOEXLQ2.js');
21
- require('../chunk-OGYWNJGI.js');
18
+ require('../chunk-QRTABC4Z.js');
19
+ require('../chunk-J62YDWIK.js');
20
+ require('../chunk-XMFOZYNI.js');
21
+ require('../chunk-QAPQGDWK.js');
22
+ require('../chunk-5TQOT6CW.js');
22
23
 
23
24
 
24
25
 
26
+ Object.defineProperty(exports, "mineTokenAddress", {
27
+ enumerable: true,
28
+ get: function () { return chunkWNUB3UTT_js.mineTokenAddress; }
29
+ });
25
30
  Object.defineProperty(exports, "computeOptimalGamma", {
26
31
  enumerable: true,
27
32
  get: function () { return chunkUPVKABAV_js.computeOptimalGamma; }
28
33
  });
34
+ Object.defineProperty(exports, "encodeRehypeDopplerHookMigratorCalldata", {
35
+ enumerable: true,
36
+ get: function () { return chunkWJBJARLJ_js.encodeRehypeDopplerHookMigratorCalldata; }
37
+ });
29
38
  Object.defineProperty(exports, "applyTickOffsets", {
30
39
  enumerable: true,
31
- get: function () { return chunkN33R22A2_js.applyTickOffsets; }
40
+ get: function () { return chunkFNUBKONK_js.applyTickOffsets; }
32
41
  });
33
42
  Object.defineProperty(exports, "getMaxTickRounded", {
34
43
  enumerable: true,
35
- get: function () { return chunkN33R22A2_js.getMaxTickRounded; }
44
+ get: function () { return chunkFNUBKONK_js.getMaxTickRounded; }
36
45
  });
37
46
  Object.defineProperty(exports, "isToken1", {
38
47
  enumerable: true,
39
- get: function () { return chunkN33R22A2_js.isToken1; }
48
+ get: function () { return chunkFNUBKONK_js.isToken1; }
40
49
  });
41
50
  Object.defineProperty(exports, "marketCapToTickForMulticurve", {
42
51
  enumerable: true,
43
- get: function () { return chunkN33R22A2_js.marketCapToTickForMulticurve; }
52
+ get: function () { return chunkFNUBKONK_js.marketCapToTickForMulticurve; }
44
53
  });
45
54
  Object.defineProperty(exports, "marketCapToTicksForDynamicAuction", {
46
55
  enumerable: true,
47
- get: function () { return chunkN33R22A2_js.marketCapToTicksForDynamicAuction; }
56
+ get: function () { return chunkFNUBKONK_js.marketCapToTicksForDynamicAuction; }
48
57
  });
49
58
  Object.defineProperty(exports, "marketCapToTicksForMulticurve", {
50
59
  enumerable: true,
51
- get: function () { return chunkN33R22A2_js.marketCapToTicksForMulticurve; }
60
+ get: function () { return chunkFNUBKONK_js.marketCapToTicksForMulticurve; }
52
61
  });
53
62
  Object.defineProperty(exports, "marketCapToTicksForStaticAuction", {
54
63
  enumerable: true,
55
- get: function () { return chunkN33R22A2_js.marketCapToTicksForStaticAuction; }
64
+ get: function () { return chunkFNUBKONK_js.marketCapToTicksForStaticAuction; }
56
65
  });
57
66
  Object.defineProperty(exports, "marketCapToTokenPrice", {
58
67
  enumerable: true,
59
- get: function () { return chunkN33R22A2_js.marketCapToTokenPrice; }
68
+ get: function () { return chunkFNUBKONK_js.marketCapToTokenPrice; }
60
69
  });
61
70
  Object.defineProperty(exports, "ratioToTick", {
62
71
  enumerable: true,
63
- get: function () { return chunkN33R22A2_js.ratioToTick; }
72
+ get: function () { return chunkFNUBKONK_js.ratioToTick; }
64
73
  });
65
74
  Object.defineProperty(exports, "tickToMarketCap", {
66
75
  enumerable: true,
67
- get: function () { return chunkN33R22A2_js.tickToMarketCap; }
76
+ get: function () { return chunkFNUBKONK_js.tickToMarketCap; }
68
77
  });
69
78
  Object.defineProperty(exports, "tokenPriceToRatio", {
70
79
  enumerable: true,
71
- get: function () { return chunkN33R22A2_js.tokenPriceToRatio; }
80
+ get: function () { return chunkFNUBKONK_js.tokenPriceToRatio; }
72
81
  });
73
82
  Object.defineProperty(exports, "validateMarketCapParameters", {
74
83
  enumerable: true,
75
- get: function () { return chunkN33R22A2_js.validateMarketCapParameters; }
84
+ get: function () { return chunkFNUBKONK_js.validateMarketCapParameters; }
76
85
  });
77
86
  Object.defineProperty(exports, "isToken0Expected", {
78
87
  enumerable: true,
@@ -162,25 +171,21 @@ Object.defineProperty(exports, "tickToPrice", {
162
171
  enumerable: true,
163
172
  get: function () { return chunk4VWQNNNW_js.tickToPrice; }
164
173
  });
165
- Object.defineProperty(exports, "mineTokenAddress", {
166
- enumerable: true,
167
- get: function () { return chunkOROTK4OT_js.mineTokenAddress; }
168
- });
169
174
  Object.defineProperty(exports, "DEFAULT_AIRLOCK_BENEFICIARY_SHARES", {
170
175
  enumerable: true,
171
- get: function () { return chunkK27G7LLT_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
176
+ get: function () { return chunkXT3BAM4H_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
172
177
  });
173
178
  Object.defineProperty(exports, "createAirlockBeneficiary", {
174
179
  enumerable: true,
175
- get: function () { return chunkK27G7LLT_js.createAirlockBeneficiary; }
180
+ get: function () { return chunkXT3BAM4H_js.createAirlockBeneficiary; }
176
181
  });
177
182
  Object.defineProperty(exports, "getAirlockBeneficiary", {
178
183
  enumerable: true,
179
- get: function () { return chunkK27G7LLT_js.getAirlockBeneficiary; }
184
+ get: function () { return chunkXT3BAM4H_js.getAirlockBeneficiary; }
180
185
  });
181
186
  Object.defineProperty(exports, "getAirlockOwner", {
182
187
  enumerable: true,
183
- get: function () { return chunkK27G7LLT_js.getAirlockOwner; }
188
+ get: function () { return chunkXT3BAM4H_js.getAirlockOwner; }
184
189
  });
185
190
  Object.defineProperty(exports, "decodeBalanceDelta", {
186
191
  enumerable: true,
@@ -1,21 +1,22 @@
1
- import '../chunk-5TL5V6UX.mjs';
1
+ import '../chunk-7ZUV6WPX.mjs';
2
+ export { mineTokenAddress } from '../chunk-YBK6EBA5.mjs';
2
3
  export { computeOptimalGamma } from '../chunk-H3B54PFV.mjs';
3
- export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from '../chunk-MQNSJCAW.mjs';
4
+ export { encodeRehypeDopplerHookMigratorCalldata } from '../chunk-GDODJJ7D.mjs';
5
+ export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from '../chunk-GSBQIVME.mjs';
4
6
  export { isToken0Expected } from '../chunk-ABT6AT7C.mjs';
5
7
  export { computePoolId } from '../chunk-CFAAYL5M.mjs';
6
8
  export { calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, estimatePriceAtEpoch, estimateSlippage, formatTickAsPrice } from '../chunk-CWTGQAOG.mjs';
7
9
  export { MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, Q96, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, priceToSqrtPriceX96, priceToTick, sqrtPriceX96ToPrice, tickToPrice } from '../chunk-25GEBO3B.mjs';
8
- export { mineTokenAddress } from '../chunk-VGCXJRUV.mjs';
9
- export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-RKPAL3SU.mjs';
10
+ export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-GSTY3GO7.mjs';
10
11
  export { decodeBalanceDelta } from '../chunk-KOAC3BBP.mjs';
11
- import '../chunk-NWZGO2CH.mjs';
12
- import '../chunk-QFQXHDC7.mjs';
12
+ import '../chunk-RIIVW6TQ.mjs';
13
+ import '../chunk-XRYLHTVV.mjs';
13
14
  import '../chunk-E2NF4AQB.mjs';
14
15
  import '../chunk-DOUF6NON.mjs';
15
- import '../chunk-64ZQRKG3.mjs';
16
- import '../chunk-LPA32BIK.mjs';
17
- import '../chunk-VK5HAWX6.mjs';
18
- import '../chunk-WDSV4O6T.mjs';
19
- import '../chunk-AZOBEWP3.mjs';
16
+ import '../chunk-VYSOAGRU.mjs';
17
+ import '../chunk-U3GOWK6J.mjs';
18
+ import '../chunk-SWWLOD7Q.mjs';
19
+ import '../chunk-OHA5KJ2M.mjs';
20
+ import '../chunk-3NMGCQJ4.mjs';
20
21
  //# sourceMappingURL=index.mjs.map
21
22
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkN33R22A2_js = require('../chunk-N33R22A2.js');
3
+ var chunkFNUBKONK_js = require('../chunk-FNUBKONK.js');
4
4
  require('../chunk-6H6X3VTZ.js');
5
5
  require('../chunk-4VWQNNNW.js');
6
6
 
@@ -8,51 +8,51 @@ require('../chunk-4VWQNNNW.js');
8
8
 
9
9
  Object.defineProperty(exports, "applyTickOffsets", {
10
10
  enumerable: true,
11
- get: function () { return chunkN33R22A2_js.applyTickOffsets; }
11
+ get: function () { return chunkFNUBKONK_js.applyTickOffsets; }
12
12
  });
13
13
  Object.defineProperty(exports, "getMaxTickRounded", {
14
14
  enumerable: true,
15
- get: function () { return chunkN33R22A2_js.getMaxTickRounded; }
15
+ get: function () { return chunkFNUBKONK_js.getMaxTickRounded; }
16
16
  });
17
17
  Object.defineProperty(exports, "isToken1", {
18
18
  enumerable: true,
19
- get: function () { return chunkN33R22A2_js.isToken1; }
19
+ get: function () { return chunkFNUBKONK_js.isToken1; }
20
20
  });
21
21
  Object.defineProperty(exports, "marketCapToTickForMulticurve", {
22
22
  enumerable: true,
23
- get: function () { return chunkN33R22A2_js.marketCapToTickForMulticurve; }
23
+ get: function () { return chunkFNUBKONK_js.marketCapToTickForMulticurve; }
24
24
  });
25
25
  Object.defineProperty(exports, "marketCapToTicksForDynamicAuction", {
26
26
  enumerable: true,
27
- get: function () { return chunkN33R22A2_js.marketCapToTicksForDynamicAuction; }
27
+ get: function () { return chunkFNUBKONK_js.marketCapToTicksForDynamicAuction; }
28
28
  });
29
29
  Object.defineProperty(exports, "marketCapToTicksForMulticurve", {
30
30
  enumerable: true,
31
- get: function () { return chunkN33R22A2_js.marketCapToTicksForMulticurve; }
31
+ get: function () { return chunkFNUBKONK_js.marketCapToTicksForMulticurve; }
32
32
  });
33
33
  Object.defineProperty(exports, "marketCapToTicksForStaticAuction", {
34
34
  enumerable: true,
35
- get: function () { return chunkN33R22A2_js.marketCapToTicksForStaticAuction; }
35
+ get: function () { return chunkFNUBKONK_js.marketCapToTicksForStaticAuction; }
36
36
  });
37
37
  Object.defineProperty(exports, "marketCapToTokenPrice", {
38
38
  enumerable: true,
39
- get: function () { return chunkN33R22A2_js.marketCapToTokenPrice; }
39
+ get: function () { return chunkFNUBKONK_js.marketCapToTokenPrice; }
40
40
  });
41
41
  Object.defineProperty(exports, "ratioToTick", {
42
42
  enumerable: true,
43
- get: function () { return chunkN33R22A2_js.ratioToTick; }
43
+ get: function () { return chunkFNUBKONK_js.ratioToTick; }
44
44
  });
45
45
  Object.defineProperty(exports, "tickToMarketCap", {
46
46
  enumerable: true,
47
- get: function () { return chunkN33R22A2_js.tickToMarketCap; }
47
+ get: function () { return chunkFNUBKONK_js.tickToMarketCap; }
48
48
  });
49
49
  Object.defineProperty(exports, "tokenPriceToRatio", {
50
50
  enumerable: true,
51
- get: function () { return chunkN33R22A2_js.tokenPriceToRatio; }
51
+ get: function () { return chunkFNUBKONK_js.tokenPriceToRatio; }
52
52
  });
53
53
  Object.defineProperty(exports, "validateMarketCapParameters", {
54
54
  enumerable: true,
55
- get: function () { return chunkN33R22A2_js.validateMarketCapParameters; }
55
+ get: function () { return chunkFNUBKONK_js.validateMarketCapParameters; }
56
56
  });
57
57
  //# sourceMappingURL=marketCapHelpers.js.map
58
58
  //# sourceMappingURL=marketCapHelpers.js.map
@@ -1,4 +1,4 @@
1
- export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from '../chunk-MQNSJCAW.mjs';
1
+ export { applyTickOffsets, getMaxTickRounded, isToken1, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, ratioToTick, tickToMarketCap, tokenPriceToRatio, validateMarketCapParameters } from '../chunk-GSBQIVME.mjs';
2
2
  import '../chunk-ABT6AT7C.mjs';
3
3
  import '../chunk-25GEBO3B.mjs';
4
4
  //# sourceMappingURL=marketCapHelpers.mjs.map
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var chunkOROTK4OT_js = require('../chunk-OROTK4OT.js');
3
+ var chunkWNUB3UTT_js = require('../chunk-WNUB3UTT.js');
4
4
  require('../chunk-3MVW6UIW.js');
5
5
  require('../chunk-4XN6DQBW.js');
6
- require('../chunk-OF7BIKXV.js');
7
- require('../chunk-2ZM4JVFC.js');
8
- require('../chunk-SMTHFPBA.js');
9
- require('../chunk-VGOEXLQ2.js');
10
- require('../chunk-OGYWNJGI.js');
6
+ require('../chunk-QRTABC4Z.js');
7
+ require('../chunk-J62YDWIK.js');
8
+ require('../chunk-XMFOZYNI.js');
9
+ require('../chunk-QAPQGDWK.js');
10
+ require('../chunk-5TQOT6CW.js');
11
11
 
12
12
 
13
13
 
14
14
  Object.defineProperty(exports, "mineTokenAddress", {
15
15
  enumerable: true,
16
- get: function () { return chunkOROTK4OT_js.mineTokenAddress; }
16
+ get: function () { return chunkWNUB3UTT_js.mineTokenAddress; }
17
17
  });
18
18
  //# sourceMappingURL=tokenAddressMiner.js.map
19
19
  //# sourceMappingURL=tokenAddressMiner.js.map
@@ -1,10 +1,10 @@
1
- export { mineTokenAddress } from '../chunk-VGCXJRUV.mjs';
1
+ export { mineTokenAddress } from '../chunk-YBK6EBA5.mjs';
2
2
  import '../chunk-E2NF4AQB.mjs';
3
3
  import '../chunk-DOUF6NON.mjs';
4
- import '../chunk-64ZQRKG3.mjs';
5
- import '../chunk-LPA32BIK.mjs';
6
- import '../chunk-VK5HAWX6.mjs';
7
- import '../chunk-WDSV4O6T.mjs';
8
- import '../chunk-AZOBEWP3.mjs';
4
+ import '../chunk-VYSOAGRU.mjs';
5
+ import '../chunk-U3GOWK6J.mjs';
6
+ import '../chunk-SWWLOD7Q.mjs';
7
+ import '../chunk-OHA5KJ2M.mjs';
8
+ import '../chunk-3NMGCQJ4.mjs';
9
9
  //# sourceMappingURL=tokenAddressMiner.mjs.map
10
10
  //# sourceMappingURL=tokenAddressMiner.mjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@whetstone-research/doppler-sdk",
3
3
  "author": "Whetstone Research",
4
- "version": "0.0.21",
4
+ "version": "0.0.23",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/abis/bytecodes/derc2080.ts"],"names":[],"mappings":";;;AAAA,IAAO,gBAAA,GACL","file":"chunk-2ZM4JVFC.js","sourcesContent":["export default\n '0x6101c0604052346100ab5761002761001561023e565b9897909796919695929594939461070b565b60405161279f90816112d5823960805181611a67015260a05181611b24015260c05181611a31015260e05181611ab601526101005181611adc01526101205181610b8701526101405181610bb001526101605181818161065201528181610c7e01526115820152610180518181816104a501526115a401526101a051816114350152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176100e657604052565b6100af565b604051906100fa6040836100c3565b565b81601f820112156100ab578051906001600160401b0382116100e65760405192610130601f8401601f1916602001856100c3565b828452602083830101116100ab57815f9260208093018386015e8301015290565b51906001600160a01b03821682036100ab57565b6001600160401b0381116100e65760051b60200190565b9080601f830112156100ab57815161019381610165565b926101a160405194856100c3565b81845260208085019260051b8201019283116100ab57602001905b8282106101c95750505090565b602080916101d684610151565b8152019101906101bc565b9080601f830112156100ab5781516101f881610165565b9261020660405194856100c3565b81845260208085019260051b8201019283116100ab57602001905b82821061022e5750505090565b8151815260209182019101610221565b613ab490813803806040519361025482866100c3565b8439820191610140818403126100ab5780516001600160401b0381116100ab57836102809183016100fc565b60208201519093906001600160401b0381116100ab57816102a29184016100fc565b936040830151936102b560608501610151565b936102c260808201610151565b9360a08201519360c08301519360e084015160018060401b0381116100ab57836102ed91860161017c565b6101008501519094906001600160401b0381116100ab57846103109183016101e1565b6101208201519094906001600160401b0381116100ab5761033192016100fc565b9199989796959493929190565b156103465750565b630ca514df60e01b5f5260045266470de4df82000060245260445ffd5b90600182811c92168015610391575b602083101461037d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610372565b601f81116103a7575050565b60035f5260205f20906020601f840160051c830193106103e1575b601f0160051c01905b8181106103d6575050565b5f81556001016103cb565b90915081906103c2565b601f82116103f857505050565b5f5260205f20906020601f840160051c83019310610430575b601f0160051c01905b818110610425575050565b5f815560010161041a565b9091508190610411565b8160011b915f199060031b1c19161790565b80519091906001600160401b0381116100e6576104758161046e601054610363565b60106103eb565b602092601f82116001146104a857610498929382915f9261049d575b505061043a565b601055565b015190505f80610491565b60105f52601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672915f5b86811061050c57508360019596106104f4575b505050811b01601055565b01515f1960f88460031b161c191690555f80806104e9565b919260206001819286850151815501940192016104d6565b80519091906001600160401b0381116100e65761054d81610546600454610363565b60046103eb565b602092601f82116001146105745761056f929382915f9261049d57505061043a565b600455565b60045f52601f198216937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b8681106105d857508360019596106105c0575b505050811b01600455565b01515f1960f88460031b161c191690555f80806105b5565b919260206001819286850151815501940192016105a2565b156105f757565b631dc0052360e11b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b90670b1a2bc2ec500000820291808304670b1a2bc2ec500000149015171561063e57565b610606565b634e487b7160e01b5f52603260045260245ffd5b805182101561066b5760209160051b010190565b610643565b6001600160a01b03165f90815260096020526040902090565b9190820180921161063e57565b1561069f575050565b630443fb3960e11b5f5260045260245260445ffd5b156106bd575050565b6323f3f88b60e01b5f5260045260245260445ffd5b156106db575050565b6305767d1760e01b5f5260045260245260445ffd5b5f1981019190821161063e57565b9190820391821161063e57565b61074b9591816107249261073d959a9b99969c97610873565b6107388166470de4df82000081111561033e565b600d55565b42610160526101805261044c565b8251610759825182146105f0565b5f936107756107678561061a565b670de0b6b3a7640000900490565b5f935b8385106107d75750505050506100fa9291816107a661079c6107676107c29561061a565b83818111156106b4565b6107b381838181106106d2565b816101a052816107c8576106fe565b906109d9565b6107d282306109d9565b6106fe565b909192939561086884600192610863868b61085c61082a61081d8461085261082a61081d878f8161080791610657565b519c8d61084b61084361082a61081d8686610657565b516001600160a01b031690565b6001600160a01b03165f90815260116020526040902090565b918254610689565b9055610657565b541115938d610657565b5490610696565b610689565b960193929190610778565b9290604051916108846040846100c3565b60018352603160f81b60208401908152845190946001600160401b0382116100e6576108ba826108b5600354610363565b61039b565b602090601f83116001146109525791806108e0926108e895945f9261049d57505061043a565b600355610524565b6108f181610b0f565b610120526108fe82610bf7565b610140526020815191012060e052519020610100524660a05261091f610cdc565b6080523060c0526001600160a01b0381161561093e576100fa90610ac7565b631e4fbdf760e01b5f90815260045260245ffd5b60035f52601f19831691907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b925f5b8181106109c157509160019391856108e8979694106109a9575b505050811b01600355610524565b01515f1960f88460031b161c191690555f808061099b565b92936020600181928786015181550195019301610981565b91906001600160a01b0383168015610ab457600c546001600160a01b03811682149081610aa5575b50610a9657610a1a610a1583600254610689565b600255565b6001600160a01b0384165f90815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254926001600160d01b03808511610a7f57506100fa929350610da5565b630e58ae9360e11b5f52600485905260245260445ffd5b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f610a01565b63ec442f0560e01b5f525f60045260245ffd5b600b80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908151602081105f14610b2a575090610b2790610d3a565b90565b6001600160401b0381116100e657610b4e81610b47600554610363565b60056103eb565b602092601f8211600114610b7857610b70929382915f9261049d57505061043a565b60055560ff90565b60055f52601f198216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b868110610bdf5750836001959610610bc7575b505050811b0160055560ff90565b01515f1960f88460031b161c191690555f8080610bb9565b91926020600181928685015181550194019201610ba6565b908151602081105f14610c0f575090610b2790610d3a565b6001600160401b0381116100e657610c3381610c2c600654610363565b60066103eb565b602092601f8211600114610c5d57610c55929382915f9261049d57505061043a565b60065560ff90565b60065f52601f198216937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b868110610cc45750836001959610610cac575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080610c9e565b91926020600181928685015181550194019201610c8b565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152610d3460c0826100c3565b51902090565b601f815111610d65576020815191015160208210610d56571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b90610daf81610ea4565b9165ffffffffffff4311610e8c57600a5480610e565750610de9610dd96100fa945f5b6001611278565b65ffffffffffff4316600a611159565b50506001600160a01b03168015610e3e575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f9182526040909120546001600160a01b039081169116610fd3565b610e4f610e4a83610ea4565b610ed5565b5050610dfb565b92835f1981011161063e57600a5f525f80516020613a74833981519152909301546100fa93610de991610dd9919060301c610dd2565b6306dfcc6560e41b5f5260306004524360245260445ffd5b6001600160d01b038111610ebe576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b65ffffffffffff4311610e8c57600a5480610eff5750610dd9610efb915f5b6002611278565b9091565b805f1981011161063e57600a5f525f80516020613a748339815191520154610efb91610dd99160301c610ef4565b65ffffffffffff4311610e8c57805480610f615750610f51610efb925f6002611278565b9065ffffffffffff431690611159565b805f1981011161063e575f82815260209020015f190154610efb92610f519160301c610ef4565b65ffffffffffff4311610e8c57805480610fac5750610f51610efb925f6001611278565b805f1981011161063e575f82815260209020015f190154610efb92610f519160301c610dd2565b6001600160a01b038083169392919081169081851415806110a8575b610ffb575b5050505050565b8161105d575b505082611010575b8080610ff4565b5f80516020613a948339815191529161103461102e61103a93610670565b91610ea4565b90610f88565b604080516001600160d01b039384168152919092166020820152a25f8080611009565b6110866110775f80516020613a9483398151915292610670565b61108086610ea4565b90610f2d565b604080516001600160d01b039384168152919092166020820152a25f80611001565b50831515610fef565b9065ffffffffffff82549181199060301b169116179055565b908154680100000000000000008110156100e6576001810180845581101561066b576100fa925f5260205f20019065ffffffffffff81511665ffffffffffff19835416178255602060018060d01b0391015116906110b1565b604080519192919081016001600160401b038111828210176100e657604052915465ffffffffffff8116835260301c6020830152565b80549293929190821561124f57611185611180611175856106f0565b835f5260205f200190565b611123565b9065ffffffffffff61119d835165ffffffffffff1690565b8185169182911611611240576112049460209488926111d06111c5875165ffffffffffff1690565b65ffffffffffff1690565b0361120857506111f6926111e66111f1926106f0565b905f5260205f200190565b6110b1565b01516001600160d01b031690565b9190565b91505061123b9161122861121a6100eb565b65ffffffffffff9093168352565b6001600160d01b038816828601526110ca565b6111f6565b632520601d60e01b5f5260045ffd5b611273925061125f61121a6100eb565b6001600160d01b03851660208301526110ca565b5f9190565b919091806001146112ba5760021461129e57634e487b7160e01b5f52605160045260245ffd5b6001600160d01b039081169181169190910390811161063e5790565b506001600160d01b039182169082160190811161063e579056fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146102d4578063095ea7b3146102cf57806310aa0ebb146102ca57806313cff13d146102c55780631514617e146102c057806316f0115b146102bb57806318160ddd146102b657806320720df7146102b1578063207d0636146102ac57806323b872dd146102a7578063254800d4146102a2578063313ce5671461029d5780633644e515146102985780633a46b1a8146102935780633c130d901461028e57806342966c68146102895780634bf5d7e9146102845780634c8697951461027f578063587cde1e1461027a5780635c19a95c146102755780636fcfff451461027057806370a082311461026b578063715018a6146102665780637ecebe001461026157806384b0196e1461025c57806386d1a69f1461025757806389026538146102525780638da5cb5b1461024d5780638e539e8c146102485780638e80ff5d1461024357806391ddadf41461023e57806395d89b411461023957806398cd6153146102345780639ab24eb01461022f5780639ccb51751461022a578063a9059cbb14610225578063c3cda52014610220578063c551a2f91461021b578063d505accf14610216578063dd62ed3e14610211578063f1127ed81461020c578063f2fde38b14610207578063f68d90d8146102025763f6939d34146101fd575f80fd5b6114b0565b61141e565b6113ab565b611314565b6112e8565b6111dd565b6111c5565b6110cd565b611087565b61100a565b610fc3565b610f52565b610e81565b610e56565b610e39565b610d45565b610d1d565b610ce7565b610c6c565b610b6f565b610b37565b610aef565b610acc565b610a6a565b610a48565b610a08565b6109e5565b610955565b610868565b6107d6565b6106b2565b610690565b610675565b61063b565b61056d565b61052a565b61050d565b6104f0565b6104c8565b61048e565b610471565b61044c565b61041b565b610311565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061030e9281815201906102d9565b90565b346103eb575f3660031901126103eb576040515f60035461033181610747565b80845290600181169081156103c75750600114610369575b61036583610359818503826107b3565b604051918291826102fd565b0390f35b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106103ad57509091508101602001610359610349565b919260018160209254838588010152019101909291610395565b60ff191660208086019190915291151560051b840190910191506103599050610349565b5f80fd5b600435906001600160a01b03821682036103eb57565b602435906001600160a01b03821682036103eb57565b346103eb5760403660031901126103eb576104416104376103ef565b6024359033611da8565b602060405160018152f35b346103eb575f3660031901126103eb57602060ff600c5460a01c166040519015158152f35b346103eb575f3660031901126103eb576020600e54604051908152f35b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103eb575f3660031901126103eb57600c546040516001600160a01b039091168152602090f35b346103eb575f3660031901126103eb576020600254604051908152f35b346103eb575f3660031901126103eb576020600d54604051908152f35b346103eb5760203660031901126103eb576105436103ef565b61054b611929565b600c80546001600160a81b0319166001600160a01b0392909216919091179055005b346103eb5760603660031901126103eb576105866103ef565b61058e610405565b6044359061059c33846118ca565b92600184016105bc575b6105b09350611967565b60405160018152602090f35b828410610620576001600160a01b038116801561060d5733156105fa576105b09484915f526001602052036105f43360405f2061148a565b556105a6565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103eb575f3660031901126103eb57602060405160128152f35b346103eb575f3660031901126103eb5760206106aa611a2e565b604051908152f35b346103eb5760403660031901126103eb576106cb6103ef565b60243565ffffffffffff6106de43611b4a565b169182821015610731576001600160a01b03165f90815260096020526040902061036592506001600160d01b0391610720919061071a90611b4a565b90611b79565b604051911681529081906020820190565b50637669fc0f60e11b5f5260045260245260445ffd5b90600182811c92168015610775575b602083101461076157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610756565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176107ae57604052565b61077f565b601f909101601f19168101906001600160401b038211908210176107ae57604052565b346103eb575f3660031901126103eb576040515f6010546107f681610747565b80845290600181169081156103c7575060011461081d5761036583610359818503826107b3565b60105f9081525f80516020612753833981519152939250905b80821061084e57509091508101602001610359610349565b919260018160209254838588010152019101909291610836565b346103eb5760203660031901126103eb57600435610884611929565b600b546001600160a01b031690811561094257600c546001600160a01b038116159081610933575b50610924576108ba82611458565b5481811061090e5761090c92825f92036108d382611458565b556108e18360025403600255565b81815f805160206127338339815191526040518061090488829190602083019252565b0390a36124c2565b005b63391434e360e21b5f5261092192611950565b5ffd5b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f6108ac565b634b637e8f60e11b5f525f60045260245ffd5b346103eb575f3660031901126103eb5761096e43611b4a565b65ffffffffffff8061097f43611b4a565b169116036109d6576103656040516109986040826107b3565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c7400000060208201526040519182916020835260208301906102d9565b6301bfc1c560e61b5f5260045ffd5b346103eb5760203660031901126103eb5760206106aa610a036103ef565b611580565b346103eb5760203660031901126103eb576001600160a01b03610a296103ef565b165f526008602052602060018060a01b0360405f205416604051908152f35b346103eb5760203660031901126103eb5761090c610a646103ef565b33611c0a565b346103eb5760203660031901126103eb576001600160a01b03610a8b6103ef565b165f52600960205260405f205463ffffffff8111610ab55760405163ffffffff9091168152602090f35b6306dfcc6560e41b5f52602060045260245260445ffd5b346103eb5760203660031901126103eb5760206106aa610aea6103ef565b61165c565b346103eb575f3660031901126103eb57610b07611929565b600b80546001600160a01b031981169091555f906001600160a01b03165f805160206127138339815191528280a3005b346103eb5760203660031901126103eb576001600160a01b03610b586103ef565b165f526007602052602060405f2054604051908152f35b346103eb575f3660031901126103eb57610c13610bab7f00000000000000000000000000000000000000000000000000000000000000006120cc565b610bd47f0000000000000000000000000000000000000000000000000000000000000000612191565b6020604051610be382826107b3565b5f815281610c2181830194601f198301368737604051978897600f60f81b895260e0858a015260e08901906102d9565b9087820360408901526102d9565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b828110610c5557505050500390f35b835185528695509381019392810192600101610c46565b346103eb575f3660031901126103eb577f000000000000000000000000000000000000000000000000000000000000000015610cd857610cab33611580565b335f526011602052600160405f2001908154818101809111610cd35761090c92553330611967565b6114f4565b63641c0b2160e11b5f5260045ffd5b346103eb575f3660031901126103eb57610cff611929565b600c805460ff60a01b1916600160a01b17905542600f819055600e55005b346103eb575f3660031901126103eb57600b546040516001600160a01b039091168152602090f35b346103eb5760203660031901126103eb5760043565ffffffffffff610d6943611b4a565b169081811015610e2457610d7c90611b4a565b600a54905f829160058411610dd0575b610d989350600a611f80565b80610db4575060205f5b6040516001600160d01b039091168152f35b610dbf602091611534565b600a5f52815f20015460301c610da2565b9192610ddb81611e0d565b8103908111610cd357610d9893600a5f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14610e12575091610d8c565b929150610e1e90611519565b90610d8c565b637669fc0f60e11b5f5260045260245260445ffd5b346103eb575f3660031901126103eb576020600f54604051908152f35b346103eb575f3660031901126103eb576020610e7143611b4a565b65ffffffffffff60405191168152f35b346103eb575f3660031901126103eb576040515f600454610ea181610747565b80845290600181169081156103c75750600114610ec85761036583610359818503826107b3565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610f0c57509091508101602001610359610349565b919260018160209254838588010152019101909291610ef4565b60405190610f356040836107b3565b565b6001600160401b0381116107ae57601f01601f191660200190565b346103eb5760203660031901126103eb576004356001600160401b0381116103eb57366023820112156103eb578060040135610f8d81610f37565b90610f9b60405192836107b3565b80825236602482850101116103eb576020815f92602461090c96018386013783010152611676565b346103eb5760203660031901126103eb576001600160a01b03610fe46103ef565b165f526009602052602060018060d01b0361100160405f20611c76565b16604051908152f35b346103eb5760203660031901126103eb57600435611026611929565b66470de4df820000811161106a57600e54151580611055575b61104857600d55005b6110506117c8565b600d55005b50600f544281420311610cd35742141561103f565b630ca514df60e01b5f5260045266470de4df82000060245260445ffd5b346103eb5760403660031901126103eb576104416110a36103ef565b6024359033611967565b6064359060ff821682036103eb57565b6084359060ff821682036103eb57565b346103eb5760c03660031901126103eb576110e66103ef565b602435906044356110f56110ad565b6084359060a435928042116111b3579161117a939161116c6111719460405160208101917fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf835260018060a01b038a1660408301528a606083015260808201526080815261116460a0826107b3565b519020611ca0565b612236565b909291926122d7565b61118381611d86565b8093036111945761090c9250611c0a565b90506301d4b62360e61b5f5260018060a01b031660045260245260445ffd5b632341d78760e11b5f5260045260245ffd5b346103eb575f3660031901126103eb5761090c6117c8565b346103eb5760e03660031901126103eb576111f66103ef565b6111fe610405565b604435906064359261120e6110bd565b60a43560c435908642116112d55761129a9261129561122c86611d86565b9860405160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835260018060a01b0389169b8c604084015260018060a01b038b1660608401528b608084015260a083015260c082015260c0815261116460e0826107b3565b611cc6565b936001600160a01b038516036112b45761090c9350611da8565b6325c0072360e11b5f526001600160a01b038085166004521660245260445ffd5b8663313c898160e11b5f5260045260245ffd5b346103eb5760403660031901126103eb5760206106aa6113066103ef565b61130e610405565b906118ca565b346103eb5760403660031901126103eb5761132d6103ef565b6024359063ffffffff821682036103eb576113829161137c9161134e611911565b50611357611911565b506001600160a01b03165f908152600960205260409020611376611911565b50612353565b5061237c565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925290f35b346103eb5760203660031901126103eb576113c46103ef565b6113cc611929565b6001600160a01b0316801561140b57600b80546001600160a01b0319811683179091556001600160a01b03165f805160206127138339815191525f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b346103eb575f3660031901126103eb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b6001600160a01b03165f90815260208190526040902090565b6001600160a01b03165f90815260096020526040902090565b9060018060a01b03165f5260205260405f2090565b908152602081019190915260400190565b346103eb5760203660031901126103eb576001600160a01b036114d16103ef565b165f52601160205260405f2060018154910154906103656040519283928361149f565b634e487b7160e01b5f52601160045260245ffd5b906301e133808201809211610cd357565b9060018201809211610cd357565b91908201809211610cd357565b5f19810191908211610cd357565b91908203918211610cd357565b81810292918115918404141715610cd357565b811561156c570490565b634e487b7160e01b5f52601260045260245ffd5b7f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000808301808411610cd357421015611635576001600160a01b0382165f9081526011602052604090205442938403938411610cd35761161260019261160d61030e9661162d9461154f565b611562565b6001600160a01b039093165f90815260116020526040902090565b015490611542565b506001600160a01b03165f908152601160205260409020805461030e92509060019061162d565b6001600160a01b03165f9081526020819052604090205490565b9061167f611929565b81516001600160401b0381116107ae576116a38161169e601054610747565b61174c565b602092601f82116001146116e3576116d3929382915f926116d8575b50508160011b915f199060031b1c19161790565b601055565b015190505f806116bf565b60105f52601f198216935f80516020612753833981519152915f5b868110611734575083600195961061171c575b505050811b01601055565b01515f1960f88460031b161c191690555f8080611711565b919260206001819286850151815501940192016116fe565b601f8111611758575050565b60105f5260205f20906020601f840160051c83019310611792575b601f0160051c01905b818110611787575050565b5f815560010161177c565b9091508190611773565b156117a357565b633601f27d60e11b5f5260045ffd5b156117b957565b63bbb80c2b60e01b5f5260045ffd5b600e546117d681151561179c565b5f90600254600f5490600d54915b6117ed84611508565b421115611851576118499161183d611836611825611816611843956118118a611508565b611542565b611820888661154f565b61154f565b6a1a1601fc4ea7109e000000900490565b8092611527565b95611527565b92611508565b9192826117e4565b9091610f35949392824211611892575b505050611878906118738315156117b2565b600e55565b61188142600f55565b600b546001600160a01b0316611cd5565b6118256118c1936118b56118ae6118789798956118bb9561154f565b9142611542565b9061154f565b90611527565b91905f80611861565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba31461190a576119069160018060a01b03165f52600160205260405f2061148a565b5490565b50505f1990565b6040519061191e82610793565b5f6020838281520152565b600b546001600160a01b0316330361193d57565b63118cdaa760e01b5f523360045260245ffd5b6001600160a01b0316600452602452604452606490565b6001600160a01b038116939291908415610942576001600160a01b0382168015611a1b57600c546001600160a01b03811682149081611a0c575b50610924576119af82611458565b54958487106119f75784610f359697036119c884611458565b556119d284611458565b8054860190556040518581525f80516020612733833981519152908060208101610904565b63391434e360e21b5f52610921858885611950565b60ff915060a01c16155f6119a1565b63ec442f0560e01b5f525f60045260245ffd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611b21575b15611a89577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611b1b60c0826107b3565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611a60565b65ffffffffffff8111611b625765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b908154905f829160058411611bb7575b611b94935084611f80565b80611b9f5750505f90565b611ba890611534565b905f5260205f20015460301c90565b9192611bc281611e0d565b8103908111610cd357611b9493855f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14611bf8575091611b89565b929150611c0490611519565b90611b89565b6001600160a01b038181165f81815260086020526040812080548685166001600160a01b031982168117909255610f3596941694611c709390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a461165c565b91611fe4565b80549081611c845750505f90565b815f19810111610cd3575f525f199060205f2001015460301c90565b604290611cab611a2e565b906040519161190160f01b8352600283015260228201522090565b9161030e939161117193612236565b91906001600160a01b0383168015611a1b57600c546001600160a01b03811682149081611d77575b5061092457611d16611d1183600254611527565b600255565b611d1f84611458565b8054830190556040518281525f905f8051602061273383398151915290602090a3600254926001600160d01b03808511611d605750610f359293505f6124c2565b630e58ae9360e11b5f52600485905260245260445ffd5b60ff915060a01c16155f611cfd565b6001600160a01b03165f90815260076020526040902080546001810190915590565b6001600160a01b031690811561060d576001600160a01b0381169283156105fa5780611e007f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593855f52600160205260405f2061148a565b55604051908152602090a3565b8015611f7b5761030e90611f11611f0a611f00611ef6611eec611ee2611ed8611ece6001611ebc5f8b608081901c80611f6d575b5080611e50611eb29260401c90565b80611f60575b50611e618160201c90565b80611f53575b50611e728160101c90565b80611f46575b50611e838160081c90565b80611f39575b50611e948160041c90565b80611f2c575b50611ea58160021c90565b80611f1f575b5060011c90565b611f175760011c90565b1b611ec7818b611562565b0160011c90565b611ec7818a611562565b611ec78189611562565b611ec78188611562565b611ec78187611562565b611ec78186611562565b611ec78185611562565b8092611562565b906123a0565b820160011c90565b600291509201915f611eab565b600491509201915f611e9a565b600891509201915f611e89565b601091509201915f611e78565b602091509201915f611e67565b604091509201915f611e56565b608092509050611eb2611e41565b505f90565b91905b838210611f905750505090565b9091928083169080841860011c8201809211610cd357845f5265ffffffffffff8260205f2001541665ffffffffffff8416105f14611fd25750925b9190611f83565b939250611fde90611519565b91611fcb565b6001600160a01b038083169392919081169081851415806120c3575b61200c575b5050505050565b81612073575b505082612021575b8080612005565b5f805160206127738339815191529161204561203f61204b93611471565b916123b2565b9061241b565b604051918291612068916001600160d01b0391821691168361149f565b0390a25f808061201a565b61209c61208d5f8051602061277383398151915292611471565b612096866123b2565b906123e3565b6040519182916120b9916001600160d01b0391821691168361149f565b0390a25f80612012565b50831515612000565b60ff81146120dd5761030e90612484565b50604051600554815f6120ef83610747565b80835292600181169081156121725750600114612113575b61030e925003826107b3565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b81831061215657505090602061030e92820101612107565b602091935080600191548385880101520191019091839261213e565b6020925061030e94915060ff191682840152151560051b820101612107565b60ff81146121a25761030e90612484565b50604051600654815f6121b483610747565b808352926001811690811561217257506001146121d75761030e925003826107b3565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b81831061221a57505090602061030e92820101612107565b6020919350806001915483858801015201910190918392612202565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384116122ae579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156122a3575f516001600160a01b0381161561229957905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600411156122c357565b634e487b7160e01b5f52602160045260245ffd5b6122e0816122b9565b806122e9575050565b6122f2816122b9565b600181036123095763f645eedf60e01b5f5260045ffd5b612312816122b9565b6002810361232d575063fce698f760e01b5f5260045260245ffd5b806123396003926122b9565b146123415750565b6335e2f38360e21b5f5260045260245ffd5b8054821015612368575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9060405161238981610793565b915465ffffffffffff8116835260301c6020830152565b90808210156123ad575090565b905090565b6001600160d01b0381116123cc576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b906123ed43611b4a565b906123f783611c76565b6001600160d01b039182169082160391908211610cd357612417926125f3565b9091565b9061242543611b4a565b9061242f83611c76565b6001600160d01b039182169082160191908211610cd357612417926125f3565b61245843611b4a565b90612463600a611c76565b6001600160d01b0391821690821603908111610cd35761241791600a6125f3565b60ff811690601f82116124b357604051916124a06040846107b3565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b9091906001600160a01b03168015612529575b610f35926001600160a01b0316908115612511575b5f90815260086020526040808220549282529020546001600160a01b039081169116611fe4565b61252261251d846123b2565b61244f565b50506124ea565b612532826123b2565b9261253c43611b4a565b93612547600a611c76565b6001600160d01b039182169082160194908511610cd357610f359461256d91600a6125f3565b90505092506124d5565b9065ffffffffffff82549181199060301b169116179055565b8054600160401b8110156107ae576125ad91600182018155612353565b6125e0578165ffffffffffff610f3593511665ffffffffffff19835416178255602060018060d01b039101511690612577565b634e487b7160e01b5f525f60045260245ffd5b8054929392919082156126e95761261f61261a61260f85611534565b835f5260205f200190565b61237c565b9065ffffffffffff612637835165ffffffffffff1690565b81851691829116116126da5761269e94602094889261266a61265f875165ffffffffffff1690565b65ffffffffffff1690565b036126a257506126909261268061268b92611534565b905f5260205f200190565b612577565b01516001600160d01b031690565b9190565b9150506126d5916126c26126b4610f26565b65ffffffffffff9093168352565b6001600160d01b03881682860152612590565b612690565b632520601d60e01b5f5260045ffd5b61270d92506126f96126b4610f26565b6001600160d01b0385166020830152612590565b5f919056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724a164736f6c634300081a000ac65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724' as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/builders/MulticurveBuilder.ts"],"names":[],"mappings":"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","file":"chunk-36Y3N257.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,3 +0,0 @@
1
-
2
- //# sourceMappingURL=chunk-5TL5V6UX.mjs.map
3
- //# sourceMappingURL=chunk-5TL5V6UX.mjs.map