@bananapus/nana-sdk-core 1.3.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/cjs/utils/index.d.ts +1 -0
  2. package/dist/cjs/utils/index.d.ts.map +1 -1
  3. package/dist/cjs/utils/index.js +1 -0
  4. package/dist/cjs/utils/index.js.map +1 -1
  5. package/dist/cjs/utils/ipfs.d.ts +33 -1
  6. package/dist/cjs/utils/ipfs.d.ts.map +1 -1
  7. package/dist/cjs/utils/ipfs.js +212 -8
  8. package/dist/cjs/utils/ipfs.js.map +1 -1
  9. package/dist/cjs/utils/token.d.ts +2 -2
  10. package/dist/cjs/utils/token.d.ts.map +1 -1
  11. package/dist/cjs/utils/token.js +30 -9
  12. package/dist/cjs/utils/token.js.map +1 -1
  13. package/dist/cjs/v6/index.d.ts +2 -0
  14. package/dist/cjs/v6/index.d.ts.map +1 -1
  15. package/dist/cjs/v6/index.js +2 -0
  16. package/dist/cjs/v6/index.js.map +1 -1
  17. package/dist/cjs/v6/launch.d.ts +23 -2
  18. package/dist/cjs/v6/launch.d.ts.map +1 -1
  19. package/dist/cjs/v6/launch.js +40 -1
  20. package/dist/cjs/v6/launch.js.map +1 -1
  21. package/dist/cjs/v6/nft.d.ts +67 -0
  22. package/dist/cjs/v6/nft.d.ts.map +1 -1
  23. package/dist/cjs/v6/nft.js +192 -2
  24. package/dist/cjs/v6/nft.js.map +1 -1
  25. package/dist/cjs/v6/permissions.d.ts +21 -0
  26. package/dist/cjs/v6/permissions.d.ts.map +1 -1
  27. package/dist/cjs/v6/permissions.js +44 -1
  28. package/dist/cjs/v6/permissions.js.map +1 -1
  29. package/dist/cjs/v6/projectPayers.d.ts +178 -0
  30. package/dist/cjs/v6/projectPayers.d.ts.map +1 -0
  31. package/dist/cjs/v6/projectPayers.js +108 -0
  32. package/dist/cjs/v6/projectPayers.js.map +1 -0
  33. package/dist/cjs/v6/revnets.d.ts +3 -2
  34. package/dist/cjs/v6/revnets.d.ts.map +1 -1
  35. package/dist/cjs/v6/revnets.js +3 -2
  36. package/dist/cjs/v6/revnets.js.map +1 -1
  37. package/dist/cjs/v6/rulesets.d.ts +42 -0
  38. package/dist/cjs/v6/rulesets.d.ts.map +1 -1
  39. package/dist/cjs/v6/rulesets.js +87 -0
  40. package/dist/cjs/v6/rulesets.js.map +1 -1
  41. package/dist/cjs/v6/suckers.d.ts +740 -2
  42. package/dist/cjs/v6/suckers.d.ts.map +1 -1
  43. package/dist/cjs/v6/suckers.js +647 -8
  44. package/dist/cjs/v6/suckers.js.map +1 -1
  45. package/dist/cjs/v6/uniswapV4.d.ts +82 -0
  46. package/dist/cjs/v6/uniswapV4.d.ts.map +1 -0
  47. package/dist/cjs/v6/uniswapV4.js +336 -0
  48. package/dist/cjs/v6/uniswapV4.js.map +1 -0
  49. package/dist/esm/utils/index.d.ts +1 -0
  50. package/dist/esm/utils/index.d.ts.map +1 -1
  51. package/dist/esm/utils/index.js +1 -0
  52. package/dist/esm/utils/index.js.map +1 -1
  53. package/dist/esm/utils/ipfs.d.ts +33 -1
  54. package/dist/esm/utils/ipfs.d.ts.map +1 -1
  55. package/dist/esm/utils/ipfs.js +204 -8
  56. package/dist/esm/utils/ipfs.js.map +1 -1
  57. package/dist/esm/utils/token.d.ts +2 -2
  58. package/dist/esm/utils/token.d.ts.map +1 -1
  59. package/dist/esm/utils/token.js +30 -9
  60. package/dist/esm/utils/token.js.map +1 -1
  61. package/dist/esm/v6/index.d.ts +2 -0
  62. package/dist/esm/v6/index.d.ts.map +1 -1
  63. package/dist/esm/v6/index.js +2 -0
  64. package/dist/esm/v6/index.js.map +1 -1
  65. package/dist/esm/v6/launch.d.ts +23 -2
  66. package/dist/esm/v6/launch.d.ts.map +1 -1
  67. package/dist/esm/v6/launch.js +39 -2
  68. package/dist/esm/v6/launch.js.map +1 -1
  69. package/dist/esm/v6/nft.d.ts +67 -0
  70. package/dist/esm/v6/nft.d.ts.map +1 -1
  71. package/dist/esm/v6/nft.js +183 -1
  72. package/dist/esm/v6/nft.js.map +1 -1
  73. package/dist/esm/v6/permissions.d.ts +21 -0
  74. package/dist/esm/v6/permissions.d.ts.map +1 -1
  75. package/dist/esm/v6/permissions.js +40 -0
  76. package/dist/esm/v6/permissions.js.map +1 -1
  77. package/dist/esm/v6/projectPayers.d.ts +178 -0
  78. package/dist/esm/v6/projectPayers.d.ts.map +1 -0
  79. package/dist/esm/v6/projectPayers.js +101 -0
  80. package/dist/esm/v6/projectPayers.js.map +1 -0
  81. package/dist/esm/v6/revnets.d.ts +3 -2
  82. package/dist/esm/v6/revnets.d.ts.map +1 -1
  83. package/dist/esm/v6/revnets.js +3 -2
  84. package/dist/esm/v6/revnets.js.map +1 -1
  85. package/dist/esm/v6/rulesets.d.ts +42 -0
  86. package/dist/esm/v6/rulesets.d.ts.map +1 -1
  87. package/dist/esm/v6/rulesets.js +83 -0
  88. package/dist/esm/v6/rulesets.js.map +1 -1
  89. package/dist/esm/v6/suckers.d.ts +740 -2
  90. package/dist/esm/v6/suckers.d.ts.map +1 -1
  91. package/dist/esm/v6/suckers.js +630 -8
  92. package/dist/esm/v6/suckers.js.map +1 -1
  93. package/dist/esm/v6/uniswapV4.d.ts +82 -0
  94. package/dist/esm/v6/uniswapV4.d.ts.map +1 -0
  95. package/dist/esm/v6/uniswapV4.js +318 -0
  96. package/dist/esm/v6/uniswapV4.js.map +1 -0
  97. package/package.json +17 -10
  98. package/dist/cjs/utils/data.test.d.ts +0 -2
  99. package/dist/cjs/utils/data.test.d.ts.map +0 -1
  100. package/dist/cjs/utils/data.test.js +0 -27
  101. package/dist/cjs/utils/data.test.js.map +0 -1
  102. package/dist/cjs/utils/deploy.test.d.ts +0 -2
  103. package/dist/cjs/utils/deploy.test.d.ts.map +0 -1
  104. package/dist/cjs/utils/deploy.test.js +0 -65
  105. package/dist/cjs/utils/deploy.test.js.map +0 -1
  106. package/dist/cjs/utils/fee.test.d.ts +0 -2
  107. package/dist/cjs/utils/fee.test.d.ts.map +0 -1
  108. package/dist/cjs/utils/fee.test.js +0 -11
  109. package/dist/cjs/utils/fee.test.js.map +0 -1
  110. package/dist/cjs/utils/format.test.d.ts +0 -2
  111. package/dist/cjs/utils/format.test.d.ts.map +0 -1
  112. package/dist/cjs/utils/format.test.js +0 -27
  113. package/dist/cjs/utils/format.test.js.map +0 -1
  114. package/dist/cjs/utils/ipfs.test.d.ts +0 -2
  115. package/dist/cjs/utils/ipfs.test.d.ts.map +0 -1
  116. package/dist/cjs/utils/ipfs.test.js +0 -33
  117. package/dist/cjs/utils/ipfs.test.js.map +0 -1
  118. package/dist/cjs/utils/revnet.test.d.ts +0 -2
  119. package/dist/cjs/utils/revnet.test.d.ts.map +0 -1
  120. package/dist/cjs/utils/revnet.test.js +0 -12
  121. package/dist/cjs/utils/revnet.test.js.map +0 -1
  122. package/dist/cjs/utils/ruleset.test.d.ts +0 -2
  123. package/dist/cjs/utils/ruleset.test.d.ts.map +0 -1
  124. package/dist/cjs/utils/ruleset.test.js +0 -23
  125. package/dist/cjs/utils/ruleset.test.js.map +0 -1
  126. package/dist/cjs/utils/token.test.d.ts +0 -2
  127. package/dist/cjs/utils/token.test.d.ts.map +0 -1
  128. package/dist/cjs/utils/token.test.js +0 -40
  129. package/dist/cjs/utils/token.test.js.map +0 -1
  130. package/dist/cjs/utils/urn.test.d.ts +0 -2
  131. package/dist/cjs/utils/urn.test.d.ts.map +0 -1
  132. package/dist/cjs/utils/urn.test.js +0 -114
  133. package/dist/cjs/utils/urn.test.js.map +0 -1
  134. package/dist/cjs/v6/cashOut.test.d.ts +0 -2
  135. package/dist/cjs/v6/cashOut.test.d.ts.map +0 -1
  136. package/dist/cjs/v6/cashOut.test.js +0 -122
  137. package/dist/cjs/v6/cashOut.test.js.map +0 -1
  138. package/dist/cjs/v6/currency.test.d.ts +0 -2
  139. package/dist/cjs/v6/currency.test.d.ts.map +0 -1
  140. package/dist/cjs/v6/currency.test.js +0 -26
  141. package/dist/cjs/v6/currency.test.js.map +0 -1
  142. package/dist/cjs/v6/fees.test.d.ts +0 -2
  143. package/dist/cjs/v6/fees.test.d.ts.map +0 -1
  144. package/dist/cjs/v6/fees.test.js +0 -40
  145. package/dist/cjs/v6/fees.test.js.map +0 -1
  146. package/dist/cjs/v6/launch.test.d.ts +0 -2
  147. package/dist/cjs/v6/launch.test.d.ts.map +0 -1
  148. package/dist/cjs/v6/launch.test.js +0 -137
  149. package/dist/cjs/v6/launch.test.js.map +0 -1
  150. package/dist/cjs/v6/loans.test.d.ts +0 -2
  151. package/dist/cjs/v6/loans.test.d.ts.map +0 -1
  152. package/dist/cjs/v6/loans.test.js +0 -129
  153. package/dist/cjs/v6/loans.test.js.map +0 -1
  154. package/dist/cjs/v6/nft.test.d.ts +0 -2
  155. package/dist/cjs/v6/nft.test.d.ts.map +0 -1
  156. package/dist/cjs/v6/nft.test.js +0 -206
  157. package/dist/cjs/v6/nft.test.js.map +0 -1
  158. package/dist/cjs/v6/omnichain.test.d.ts +0 -2
  159. package/dist/cjs/v6/omnichain.test.d.ts.map +0 -1
  160. package/dist/cjs/v6/omnichain.test.js +0 -145
  161. package/dist/cjs/v6/omnichain.test.js.map +0 -1
  162. package/dist/cjs/v6/pay.test.d.ts +0 -2
  163. package/dist/cjs/v6/pay.test.d.ts.map +0 -1
  164. package/dist/cjs/v6/pay.test.js +0 -137
  165. package/dist/cjs/v6/pay.test.js.map +0 -1
  166. package/dist/cjs/v6/permissions.test.d.ts +0 -2
  167. package/dist/cjs/v6/permissions.test.d.ts.map +0 -1
  168. package/dist/cjs/v6/permissions.test.js +0 -117
  169. package/dist/cjs/v6/permissions.test.js.map +0 -1
  170. package/dist/cjs/v6/revnets.test.d.ts +0 -2
  171. package/dist/cjs/v6/revnets.test.d.ts.map +0 -1
  172. package/dist/cjs/v6/revnets.test.js +0 -233
  173. package/dist/cjs/v6/revnets.test.js.map +0 -1
  174. package/dist/cjs/v6/rulesets.test.d.ts +0 -2
  175. package/dist/cjs/v6/rulesets.test.d.ts.map +0 -1
  176. package/dist/cjs/v6/rulesets.test.js +0 -106
  177. package/dist/cjs/v6/rulesets.test.js.map +0 -1
  178. package/dist/cjs/v6/splits.test.d.ts +0 -2
  179. package/dist/cjs/v6/splits.test.d.ts.map +0 -1
  180. package/dist/cjs/v6/splits.test.js +0 -135
  181. package/dist/cjs/v6/splits.test.js.map +0 -1
  182. package/dist/cjs/v6/suckers.test.d.ts +0 -2
  183. package/dist/cjs/v6/suckers.test.d.ts.map +0 -1
  184. package/dist/cjs/v6/suckers.test.js +0 -134
  185. package/dist/cjs/v6/suckers.test.js.map +0 -1
  186. package/dist/cjs/v6/terminals.test.d.ts +0 -2
  187. package/dist/cjs/v6/terminals.test.d.ts.map +0 -1
  188. package/dist/cjs/v6/terminals.test.js +0 -59
  189. package/dist/cjs/v6/terminals.test.js.map +0 -1
  190. package/dist/cjs/v6/tokens.test.d.ts +0 -2
  191. package/dist/cjs/v6/tokens.test.d.ts.map +0 -1
  192. package/dist/cjs/v6/tokens.test.js +0 -141
  193. package/dist/cjs/v6/tokens.test.js.map +0 -1
  194. package/dist/esm/utils/data.test.d.ts +0 -2
  195. package/dist/esm/utils/data.test.d.ts.map +0 -1
  196. package/dist/esm/utils/data.test.js +0 -25
  197. package/dist/esm/utils/data.test.js.map +0 -1
  198. package/dist/esm/utils/deploy.test.d.ts +0 -2
  199. package/dist/esm/utils/deploy.test.d.ts.map +0 -1
  200. package/dist/esm/utils/deploy.test.js +0 -63
  201. package/dist/esm/utils/deploy.test.js.map +0 -1
  202. package/dist/esm/utils/fee.test.d.ts +0 -2
  203. package/dist/esm/utils/fee.test.d.ts.map +0 -1
  204. package/dist/esm/utils/fee.test.js +0 -9
  205. package/dist/esm/utils/fee.test.js.map +0 -1
  206. package/dist/esm/utils/format.test.d.ts +0 -2
  207. package/dist/esm/utils/format.test.d.ts.map +0 -1
  208. package/dist/esm/utils/format.test.js +0 -25
  209. package/dist/esm/utils/format.test.js.map +0 -1
  210. package/dist/esm/utils/ipfs.test.d.ts +0 -2
  211. package/dist/esm/utils/ipfs.test.d.ts.map +0 -1
  212. package/dist/esm/utils/ipfs.test.js +0 -28
  213. package/dist/esm/utils/ipfs.test.js.map +0 -1
  214. package/dist/esm/utils/revnet.test.d.ts +0 -2
  215. package/dist/esm/utils/revnet.test.d.ts.map +0 -1
  216. package/dist/esm/utils/revnet.test.js +0 -10
  217. package/dist/esm/utils/revnet.test.js.map +0 -1
  218. package/dist/esm/utils/ruleset.test.d.ts +0 -2
  219. package/dist/esm/utils/ruleset.test.d.ts.map +0 -1
  220. package/dist/esm/utils/ruleset.test.js +0 -21
  221. package/dist/esm/utils/ruleset.test.js.map +0 -1
  222. package/dist/esm/utils/token.test.d.ts +0 -2
  223. package/dist/esm/utils/token.test.d.ts.map +0 -1
  224. package/dist/esm/utils/token.test.js +0 -38
  225. package/dist/esm/utils/token.test.js.map +0 -1
  226. package/dist/esm/utils/urn.test.d.ts +0 -2
  227. package/dist/esm/utils/urn.test.d.ts.map +0 -1
  228. package/dist/esm/utils/urn.test.js +0 -112
  229. package/dist/esm/utils/urn.test.js.map +0 -1
  230. package/dist/esm/v6/cashOut.test.d.ts +0 -2
  231. package/dist/esm/v6/cashOut.test.d.ts.map +0 -1
  232. package/dist/esm/v6/cashOut.test.js +0 -120
  233. package/dist/esm/v6/cashOut.test.js.map +0 -1
  234. package/dist/esm/v6/currency.test.d.ts +0 -2
  235. package/dist/esm/v6/currency.test.d.ts.map +0 -1
  236. package/dist/esm/v6/currency.test.js +0 -24
  237. package/dist/esm/v6/currency.test.js.map +0 -1
  238. package/dist/esm/v6/fees.test.d.ts +0 -2
  239. package/dist/esm/v6/fees.test.d.ts.map +0 -1
  240. package/dist/esm/v6/fees.test.js +0 -38
  241. package/dist/esm/v6/fees.test.js.map +0 -1
  242. package/dist/esm/v6/launch.test.d.ts +0 -2
  243. package/dist/esm/v6/launch.test.d.ts.map +0 -1
  244. package/dist/esm/v6/launch.test.js +0 -135
  245. package/dist/esm/v6/launch.test.js.map +0 -1
  246. package/dist/esm/v6/loans.test.d.ts +0 -2
  247. package/dist/esm/v6/loans.test.d.ts.map +0 -1
  248. package/dist/esm/v6/loans.test.js +0 -127
  249. package/dist/esm/v6/loans.test.js.map +0 -1
  250. package/dist/esm/v6/nft.test.d.ts +0 -2
  251. package/dist/esm/v6/nft.test.d.ts.map +0 -1
  252. package/dist/esm/v6/nft.test.js +0 -204
  253. package/dist/esm/v6/nft.test.js.map +0 -1
  254. package/dist/esm/v6/omnichain.test.d.ts +0 -2
  255. package/dist/esm/v6/omnichain.test.d.ts.map +0 -1
  256. package/dist/esm/v6/omnichain.test.js +0 -143
  257. package/dist/esm/v6/omnichain.test.js.map +0 -1
  258. package/dist/esm/v6/pay.test.d.ts +0 -2
  259. package/dist/esm/v6/pay.test.d.ts.map +0 -1
  260. package/dist/esm/v6/pay.test.js +0 -135
  261. package/dist/esm/v6/pay.test.js.map +0 -1
  262. package/dist/esm/v6/permissions.test.d.ts +0 -2
  263. package/dist/esm/v6/permissions.test.d.ts.map +0 -1
  264. package/dist/esm/v6/permissions.test.js +0 -115
  265. package/dist/esm/v6/permissions.test.js.map +0 -1
  266. package/dist/esm/v6/revnets.test.d.ts +0 -2
  267. package/dist/esm/v6/revnets.test.d.ts.map +0 -1
  268. package/dist/esm/v6/revnets.test.js +0 -231
  269. package/dist/esm/v6/revnets.test.js.map +0 -1
  270. package/dist/esm/v6/rulesets.test.d.ts +0 -2
  271. package/dist/esm/v6/rulesets.test.d.ts.map +0 -1
  272. package/dist/esm/v6/rulesets.test.js +0 -104
  273. package/dist/esm/v6/rulesets.test.js.map +0 -1
  274. package/dist/esm/v6/splits.test.d.ts +0 -2
  275. package/dist/esm/v6/splits.test.d.ts.map +0 -1
  276. package/dist/esm/v6/splits.test.js +0 -133
  277. package/dist/esm/v6/splits.test.js.map +0 -1
  278. package/dist/esm/v6/suckers.test.d.ts +0 -2
  279. package/dist/esm/v6/suckers.test.d.ts.map +0 -1
  280. package/dist/esm/v6/suckers.test.js +0 -132
  281. package/dist/esm/v6/suckers.test.js.map +0 -1
  282. package/dist/esm/v6/terminals.test.d.ts +0 -2
  283. package/dist/esm/v6/terminals.test.d.ts.map +0 -1
  284. package/dist/esm/v6/terminals.test.js +0 -57
  285. package/dist/esm/v6/terminals.test.js.map +0 -1
  286. package/dist/esm/v6/tokens.test.d.ts +0 -2
  287. package/dist/esm/v6/tokens.test.d.ts.map +0 -1
  288. package/dist/esm/v6/tokens.test.js +0 -139
  289. package/dist/esm/v6/tokens.test.js.map +0 -1
  290. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  291. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -5,6 +5,7 @@ export * from "./deploy.js";
5
5
  export * from "./fee.js";
6
6
  export * from "./format.js";
7
7
  export * from "./hook.js";
8
+ export * from "./ipfs.js";
8
9
  export * from "./revnet.js";
9
10
  export * from "./ruleset.js";
10
11
  export * from "./token.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -21,6 +21,7 @@ __exportStar(require("./deploy.js"), exports);
21
21
  __exportStar(require("./fee.js"), exports);
22
22
  __exportStar(require("./format.js"), exports);
23
23
  __exportStar(require("./hook.js"), exports);
24
+ __exportStar(require("./ipfs.js"), exports);
24
25
  __exportStar(require("./revnet.js"), exports);
25
26
  __exportStar(require("./ruleset.js"), exports);
26
27
  __exportStar(require("./token.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,6CAA2B;AAC3B,0CAAwB;AACxB,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,6CAA2B;AAC3B,0CAAwB;AACxB,2CAAyB"}
@@ -1,12 +1,44 @@
1
1
  export declare function ipfsGatewayUrl(cid: string | undefined, gatewayHostname?: string): string;
2
+ /** Return an `ipfs://` URI for a CID and optional path. */
3
+ export declare function ipfsUri(cid: string, path?: string): string;
4
+ /** Whether a value uses the native `ipfs://` URI scheme. */
5
+ export declare function isIpfsUri(value: string): boolean;
6
+ /**
7
+ * Extract the immutable `<cid>[/path]` part of an IPFS URI or HTTP gateway URL.
8
+ *
9
+ * Both path gateways (`https://host/ipfs/<cid>`) and CID subdomain gateways
10
+ * (`https://<cid>.ipfs.host/path`) are recognized. Returns `null` for ordinary
11
+ * HTTP URLs and malformed values.
12
+ */
13
+ export declare function ipfsAssetPath(value: string): string | null;
14
+ /** Return the CID (without a path) from an IPFS URI or gateway URL. */
15
+ export declare function cidFromIpfsUri(value: string): string | null;
16
+ /** A lightweight CIDv0 / base32 CIDv1 shape check. */
17
+ export declare function isIpfsCid(value: string): boolean;
2
18
  /**
3
19
  * Return a hex-encoded CID to store on-chain.
4
20
  * Hex-encoded CIDs are used to store some CIDs on-chain because they are more gas-efficient.
5
21
  */
6
- export declare function encodeIpfsUri(cid: string): string;
22
+ export declare function encodeIpfsUri(cid: string): `0x${string}`;
7
23
  /**
8
24
  * Return the IPFS CID from a given hex-endoded string.
9
25
  * Hex-encoded CIDs are used to store some CIDs on-chain because they are more gas-efficient.
10
26
  */
11
27
  export declare function decodeEncodedIpfsUri(hex: string): string;
28
+ /** Strict alias describing the on-chain representation more explicitly. */
29
+ export declare const cidV0ToBytes32: typeof encodeIpfsUri;
30
+ /**
31
+ * Decode a bytes32 sha2-256 digest into a CIDv0, returning `null` for the zero
32
+ * value or malformed input instead of throwing.
33
+ */
34
+ export declare function bytes32ToCidV0(value: string): string | null;
35
+ /**
36
+ * Decode a stored tier metadata digest into equivalent immutable URI forms.
37
+ *
38
+ * The first candidate is the conventional DAG-PB CIDv0 used by Juicebox 721
39
+ * metadata. The second is a raw-codec CIDv1 over the same multihash, retained
40
+ * as a fallback for content that was pinned with a raw block codec. Legacy
41
+ * 33-byte values with a leading version marker are accepted as well.
42
+ */
43
+ export declare function decodeEncodedIpfsUriCandidates(value: string | undefined | null): readonly [string, string] | null;
12
44
  //# sourceMappingURL=ipfs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,UAExC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAQ/C"}
1
+ {"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAIR;AAED,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwB1D;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKhD;AA2GD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,iBAWxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAS/C;AAED,2EAA2E;AAC3E,eAAO,MAAM,cAAc,sBAAgB,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAgBlC"}
@@ -3,32 +3,236 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.cidV0ToBytes32 = void 0;
6
7
  exports.ipfsGatewayUrl = ipfsGatewayUrl;
8
+ exports.ipfsUri = ipfsUri;
9
+ exports.isIpfsUri = isIpfsUri;
10
+ exports.ipfsAssetPath = ipfsAssetPath;
11
+ exports.cidFromIpfsUri = cidFromIpfsUri;
12
+ exports.isIpfsCid = isIpfsCid;
7
13
  exports.encodeIpfsUri = encodeIpfsUri;
8
14
  exports.decodeEncodedIpfsUri = decodeEncodedIpfsUri;
15
+ exports.bytes32ToCidV0 = bytes32ToCidV0;
16
+ exports.decodeEncodedIpfsUriCandidates = decodeEncodedIpfsUriCandidates;
9
17
  const bs58_1 = __importDefault(require("bs58"));
10
18
  const PUBLIC_IPFS_GATEWAY_HOSTNAME = "ipfs.io";
19
+ const IPFS_URI_PREFIX = "ipfs://";
20
+ const SHA2_256_MULTIHASH_PREFIX = new Uint8Array([0x12, 0x20]);
21
+ const BASE32_ALPHABET = "abcdefghijklmnopqrstuvwxyz234567";
22
+ function validatedIpfsAssetPath(value) {
23
+ const cid = value.split("/")[0];
24
+ return cid && isIpfsCid(cid) ? value : null;
25
+ }
11
26
  function ipfsGatewayUrl(cid, gatewayHostname) {
12
27
  return `https://${gatewayHostname ?? PUBLIC_IPFS_GATEWAY_HOSTNAME}/ipfs/${cid}`;
13
28
  }
29
+ /** Return an `ipfs://` URI for a CID and optional path. */
30
+ function ipfsUri(cid, path) {
31
+ const suffix = path ? `/${path.replace(/^\/+/, "")}` : "";
32
+ return `${IPFS_URI_PREFIX}${cid}${suffix}`;
33
+ }
34
+ /** Whether a value uses the native `ipfs://` URI scheme. */
35
+ function isIpfsUri(value) {
36
+ return value.startsWith(IPFS_URI_PREFIX);
37
+ }
38
+ /**
39
+ * Extract the immutable `<cid>[/path]` part of an IPFS URI or HTTP gateway URL.
40
+ *
41
+ * Both path gateways (`https://host/ipfs/<cid>`) and CID subdomain gateways
42
+ * (`https://<cid>.ipfs.host/path`) are recognized. Returns `null` for ordinary
43
+ * HTTP URLs and malformed values.
44
+ */
45
+ function ipfsAssetPath(value) {
46
+ const trimmed = value.trim();
47
+ if (!trimmed)
48
+ return null;
49
+ if (trimmed.startsWith(IPFS_URI_PREFIX)) {
50
+ const path = trimmed.slice(IPFS_URI_PREFIX.length);
51
+ return validatedIpfsAssetPath(path);
52
+ }
53
+ try {
54
+ const url = new URL(trimmed);
55
+ const pathMatch = /^\/ipfs\/([^/]+)(\/.*)?$/i.exec(url.pathname);
56
+ if (pathMatch) {
57
+ return validatedIpfsAssetPath(`${pathMatch[1]}${pathMatch[2] ?? ""}`);
58
+ }
59
+ const [subdomain, marker] = url.hostname.split(".");
60
+ if (marker === "ipfs" && isIpfsCid(subdomain)) {
61
+ return `${subdomain}${url.pathname === "/" ? "" : url.pathname}`;
62
+ }
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ return null;
68
+ }
69
+ /** Return the CID (without a path) from an IPFS URI or gateway URL. */
70
+ function cidFromIpfsUri(value) {
71
+ const path = ipfsAssetPath(value);
72
+ return path?.split("/")[0] || null;
73
+ }
74
+ /** A lightweight CIDv0 / base32 CIDv1 shape check. */
75
+ function isIpfsCid(value) {
76
+ return (/^Qm[1-9A-HJ-NP-Za-km-z]{44}$/.test(value) ||
77
+ /^b[a-z2-7]{20,120}$/.test(value.toLowerCase()));
78
+ }
79
+ function bytesToHex(bytes) {
80
+ return `0x${Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
81
+ }
82
+ function hexToBytes(value) {
83
+ const hex = value.startsWith("0x") ? value.slice(2) : value;
84
+ if (!/^[0-9a-fA-F]*$/.test(hex) || hex.length % 2 !== 0) {
85
+ throw new Error("Expected an even-length hexadecimal value.");
86
+ }
87
+ return Uint8Array.from({ length: hex.length / 2 }, (_, index) => Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16));
88
+ }
89
+ function cidV0Digest(cid) {
90
+ const decoded = bs58_1.default.decode(cid);
91
+ if (decoded.length !== 34 ||
92
+ decoded[0] !== SHA2_256_MULTIHASH_PREFIX[0] ||
93
+ decoded[1] !== SHA2_256_MULTIHASH_PREFIX[1]) {
94
+ throw new Error("Expected a CIDv0 using a 32-byte sha2-256 multihash.");
95
+ }
96
+ return decoded.slice(2);
97
+ }
98
+ function base32Encode(bytes) {
99
+ let result = "";
100
+ let buffer = 0;
101
+ let bits = 0;
102
+ for (const byte of bytes) {
103
+ buffer = (buffer << 8) | byte;
104
+ bits += 8;
105
+ while (bits >= 5) {
106
+ result += BASE32_ALPHABET[(buffer >>> (bits - 5)) & 31];
107
+ bits -= 5;
108
+ buffer &= bits === 0 ? 0 : (1 << bits) - 1;
109
+ }
110
+ }
111
+ if (bits > 0)
112
+ result += BASE32_ALPHABET[(buffer << (5 - bits)) & 31];
113
+ return result;
114
+ }
115
+ function base32Decode(value) {
116
+ const input = value.trim().toLowerCase().replace(/^b/, "").replace(/=+$/, "");
117
+ const output = [];
118
+ let buffer = 0;
119
+ let bits = 0;
120
+ for (const character of input) {
121
+ const index = BASE32_ALPHABET.indexOf(character);
122
+ if (index < 0)
123
+ throw new Error(`Invalid base32 character: ${character}.`);
124
+ buffer = (buffer << 5) | index;
125
+ bits += 5;
126
+ if (bits >= 8) {
127
+ output.push((buffer >>> (bits - 8)) & 0xff);
128
+ bits -= 8;
129
+ buffer &= bits === 0 ? 0 : (1 << bits) - 1;
130
+ }
131
+ }
132
+ return Uint8Array.from(output);
133
+ }
134
+ function readVarint(bytes, offset) {
135
+ let value = 0;
136
+ let shift = 0;
137
+ for (let index = offset; index < bytes.length; index++) {
138
+ const byte = bytes[index];
139
+ value += (byte & 0x7f) * 2 ** shift;
140
+ if ((byte & 0x80) === 0)
141
+ return { value, offset: index + 1 };
142
+ shift += 7;
143
+ if (shift > 49)
144
+ throw new Error("The CID varint is too large.");
145
+ }
146
+ throw new Error("The CID varint is truncated.");
147
+ }
148
+ function cidV1Digest(cid) {
149
+ if (!cid.toLowerCase().startsWith("b")) {
150
+ throw new Error("Expected a base32 CIDv1.");
151
+ }
152
+ const bytes = base32Decode(cid);
153
+ const version = readVarint(bytes, 0);
154
+ const codec = readVarint(bytes, version.offset);
155
+ const hashCode = readVarint(bytes, codec.offset);
156
+ const hashLength = readVarint(bytes, hashCode.offset);
157
+ if (version.value !== 1)
158
+ throw new Error("Expected a CIDv1.");
159
+ if (codec.value !== 0x70) {
160
+ throw new Error("Only DAG-PB CIDv1 metadata can be stored in a bytes32 IPFS slot.");
161
+ }
162
+ if (hashCode.value !== 0x12 || hashLength.value !== 32) {
163
+ throw new Error("Expected a CID using a 32-byte sha2-256 multihash.");
164
+ }
165
+ const digest = bytes.slice(hashLength.offset);
166
+ if (digest.length !== hashLength.value) {
167
+ throw new Error("The CID multihash length is invalid.");
168
+ }
169
+ return digest;
170
+ }
14
171
  /**
15
172
  * Return a hex-encoded CID to store on-chain.
16
173
  * Hex-encoded CIDs are used to store some CIDs on-chain because they are more gas-efficient.
17
174
  */
18
175
  function encodeIpfsUri(cid) {
19
- return "0x" + Buffer.from(bs58_1.default.decode(cid).slice(2)).toString("hex");
176
+ const assetPath = ipfsAssetPath(cid);
177
+ if (assetPath?.includes("/")) {
178
+ throw new Error("A bytes32 IPFS digest cannot include a path.");
179
+ }
180
+ const candidate = assetPath ?? cid;
181
+ return bytesToHex(candidate.toLowerCase().startsWith("b")
182
+ ? cidV1Digest(candidate)
183
+ : cidV0Digest(candidate));
20
184
  }
21
185
  /**
22
186
  * Return the IPFS CID from a given hex-endoded string.
23
187
  * Hex-encoded CIDs are used to store some CIDs on-chain because they are more gas-efficient.
24
188
  */
25
189
  function decodeEncodedIpfsUri(hex) {
26
- // Add default ipfs values for first 2 bytes:
27
- // - function:0x12=sha2, size:0x20=256 bits
28
- // - also cut off leading "0x"
29
- const hashHex = "1220" + hex.slice(2);
30
- const hashBytes = Buffer.from(hashHex, "hex");
31
- const hashStr = bs58_1.default.encode(hashBytes);
32
- return hashStr;
190
+ const digest = hexToBytes(hex);
191
+ if (digest.length !== 32) {
192
+ throw new Error("Expected a bytes32 IPFS digest.");
193
+ }
194
+ if (digest.every((byte) => byte === 0)) {
195
+ throw new Error("The zero bytes32 value does not contain an IPFS CID.");
196
+ }
197
+ return bs58_1.default.encode(new Uint8Array([...SHA2_256_MULTIHASH_PREFIX, ...digest]));
198
+ }
199
+ /** Strict alias describing the on-chain representation more explicitly. */
200
+ exports.cidV0ToBytes32 = encodeIpfsUri;
201
+ /**
202
+ * Decode a bytes32 sha2-256 digest into a CIDv0, returning `null` for the zero
203
+ * value or malformed input instead of throwing.
204
+ */
205
+ function bytes32ToCidV0(value) {
206
+ try {
207
+ return decodeEncodedIpfsUri(value);
208
+ }
209
+ catch {
210
+ return null;
211
+ }
212
+ }
213
+ /**
214
+ * Decode a stored tier metadata digest into equivalent immutable URI forms.
215
+ *
216
+ * The first candidate is the conventional DAG-PB CIDv0 used by Juicebox 721
217
+ * metadata. The second is a raw-codec CIDv1 over the same multihash, retained
218
+ * as a fallback for content that was pinned with a raw block codec. Legacy
219
+ * 33-byte values with a leading version marker are accepted as well.
220
+ */
221
+ function decodeEncodedIpfsUriCandidates(value) {
222
+ if (!value)
223
+ return null;
224
+ let hex = value.startsWith("0x") ? value.slice(2) : value;
225
+ if (hex.length === 66)
226
+ hex = hex.slice(2);
227
+ const cidV0 = bytes32ToCidV0(hex);
228
+ if (!cidV0)
229
+ return null;
230
+ const multihash = new Uint8Array([
231
+ ...SHA2_256_MULTIHASH_PREFIX,
232
+ ...hexToBytes(hex),
233
+ ]);
234
+ // CIDv1 (0x01), raw codec (0x55), then the same sha2-256 multihash.
235
+ const rawCidV1 = `b${base32Encode(new Uint8Array([0x01, 0x55, ...multihash]))}`;
236
+ return [ipfsUri(cidV0), ipfsUri(rawCidV1)];
33
237
  }
34
238
  //# sourceMappingURL=ipfs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":";;;;;AAIA,wCAOC;AAMD,sCAEC;AAMD,oDAQC;AAjCD,gDAAwB;AAExB,MAAM,4BAA4B,GAAG,SAAS,CAAC;AAE/C,SAAgB,cAAc,CAC5B,GAAuB,EACvB,eAAwB;IAExB,OAAO,WACL,eAAe,IAAI,4BACrB,SAAS,GAAG,EAAE,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,GAAW;IACvC,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,6CAA6C;IAC7C,2CAA2C;IAC3C,8BAA8B;IAC9B,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,cAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,7 @@ tokenADecimals: number, cycleParams: {
59
59
  * - `r` = cashOutTaxRate
60
60
  *
61
61
  * @implements JBCashOuts.cashOutFrom
62
- * @see https://github.com/Bananapus/nana-core/blob/44ae030f910e4a40a9a70a1eccf67cb0cf0c80f9/src/libraries/JBCashOuts.sol
62
+ * @see https://github.com/Bananapus/nana-core-v6/blob/89ac631620588687b63b06d8cebe8499f7a60bdf/src/libraries/JBCashOuts.sol
63
63
  * @see https://www.desmos.com/calculator/sp9ru6zbpk
64
64
  * @returns amount in ETH
65
65
  */
@@ -68,5 +68,5 @@ export declare const getTokenCashOutQuoteEth: (tokensAmount: bigint, { overflowW
68
68
  totalSupply: bigint;
69
69
  cashOutTaxRate: number;
70
70
  tokensReserved: bigint;
71
- }) => bigint | 0;
71
+ }) => bigint;
72
72
  //# sourceMappingURL=token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO3D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE;;;;;CAoBzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAYzE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAOzE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,GAClC,cAAc,MAAM,EACpB,+DAKG;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,eAwDF,CAAC"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO3D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE;;;;;CAoBzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAYzE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAOzE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,GAClC,cAAc,MAAM,EACpB,+DAKG;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,WAiFF,CAAC"}
@@ -80,29 +80,50 @@ exports.getTokenBtoAQuote = getTokenBtoAQuote;
80
80
  * - `r` = cashOutTaxRate
81
81
  *
82
82
  * @implements JBCashOuts.cashOutFrom
83
- * @see https://github.com/Bananapus/nana-core/blob/44ae030f910e4a40a9a70a1eccf67cb0cf0c80f9/src/libraries/JBCashOuts.sol
83
+ * @see https://github.com/Bananapus/nana-core-v6/blob/89ac631620588687b63b06d8cebe8499f7a60bdf/src/libraries/JBCashOuts.sol
84
84
  * @see https://www.desmos.com/calculator/sp9ru6zbpk
85
85
  * @returns amount in ETH
86
86
  */
87
87
  const getTokenCashOutQuoteEth = (tokensAmount, { overflowWei, // surplus
88
88
  totalSupply, cashOutTaxRate, tokensReserved, }) => {
89
+ const maxUint256 = (1n << 256n) - 1n;
90
+ if (tokensAmount < 0n ||
91
+ tokensAmount > maxUint256 ||
92
+ overflowWei < 0n ||
93
+ overflowWei > maxUint256 ||
94
+ totalSupply < 0n ||
95
+ totalSupply > maxUint256 ||
96
+ tokensReserved < 0n ||
97
+ tokensReserved > maxUint256 ||
98
+ totalSupply > maxUint256 - tokensReserved ||
99
+ !Number.isSafeInteger(cashOutTaxRate) ||
100
+ cashOutTaxRate < 0 ||
101
+ cashOutTaxRate > constants_js_1.MAX_CASH_OUT_TAX_RATE) {
102
+ throw new RangeError("cash-out inputs are outside contract bounds");
103
+ }
89
104
  // alias names, to match the contract's implementation for easier manual comparison.
90
105
  const surplus = overflowWei;
91
106
  const cashOutCount = tokensAmount;
107
+ // `JBTerminalStore` supplies `JBCashOuts.cashOutFrom` with total outstanding
108
+ // tokens, which includes pending reserved tokens. Build that denominator
109
+ // before applying any of the library's edge conditions: a holder cashing out
110
+ // every minted token is not cashing out the full supply while reserved tokens
111
+ // are still pending.
112
+ const realTotalSupply = totalSupply + tokensReserved;
113
+ // Match JBCashOuts.cashOutFrom's first edge condition. This must precede the
114
+ // full-supply branch so a zero count against a zero supply cannot reclaim the
115
+ // surplus.
116
+ if (cashOutCount === 0n) {
117
+ return 0n;
118
+ }
92
119
  // If the cash out tax rate is the max, no surplus can be reclaimed.
93
120
  if (cashOutTaxRate === constants_js_1.MAX_CASH_OUT_TAX_RATE) {
94
- return 0;
121
+ return 0n;
95
122
  }
96
123
  // If the total supply is being cashed out, return the entire surplus.
97
- if (cashOutCount >= totalSupply) {
124
+ if (cashOutCount >= realTotalSupply) {
98
125
  return surplus;
99
126
  }
100
- //
101
- /**
102
- * totalOutstandingTokensOf in contract.
103
- * @note this deviates from the contract's `cashOutFrom` implementation.
104
- */
105
- const realTotalSupply = totalSupply + tokensReserved;
106
127
  /**
107
128
  * Get a reference to the linear proportion.
108
129
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,11 @@ export * from "./splits.js";
8
8
  export * from "./revnets.js";
9
9
  export * from "./terminals.js";
10
10
  export * from "./pay.js";
11
+ export * from "./projectPayers.js";
11
12
  export * from "./cashOut.js";
12
13
  export * from "./nft.js";
13
14
  export * from "./tokens.js";
15
+ export * from "./uniswapV4.js";
14
16
  export * from "./permissions.js";
15
17
  export * from "./suckers.js";
16
18
  export * from "./loans.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -24,9 +24,11 @@ __exportStar(require("./splits.js"), exports);
24
24
  __exportStar(require("./revnets.js"), exports);
25
25
  __exportStar(require("./terminals.js"), exports);
26
26
  __exportStar(require("./pay.js"), exports);
27
+ __exportStar(require("./projectPayers.js"), exports);
27
28
  __exportStar(require("./cashOut.js"), exports);
28
29
  __exportStar(require("./nft.js"), exports);
29
30
  __exportStar(require("./tokens.js"), exports);
31
+ __exportStar(require("./uniswapV4.js"), exports);
30
32
  __exportStar(require("./permissions.js"), exports);
31
33
  __exportStar(require("./suckers.js"), exports);
32
34
  __exportStar(require("./loans.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B"}
@@ -1,4 +1,4 @@
1
- import { Address, ContractFunctionArgs, PublicClient } from "viem";
1
+ import { Address, ContractFunctionArgs, Hex, PublicClient } from "viem";
2
2
  import { jbControllerAbi } from "../generated/juicebox.js";
3
3
  import { JBChainId } from "../types.js";
4
4
  import { JBRulesetConfig, JBRulesetMetadata } from "./rulesets.js";
@@ -75,7 +75,8 @@ export declare function buildRulesetMetadata(overrides?: Partial<JBRulesetMetada
75
75
  * shared timestamp so every chain's ruleset is byte-identical.
76
76
  * @param args.duration Seconds the ruleset is locked for. 0 = no duration.
77
77
  * @param args.weight Tokens issued per unit of `baseCurrency` paid, as an
78
- * 18-decimal fixed point (uint112).
78
+ * 18-decimal fixed point (uint112). Later configurations can use the exported
79
+ * `RULESET_WEIGHT_INHERIT` sentinel (1n); zero means genuine zero issuance.
79
80
  * @param args.weightCutPercent Issuance cut applied each cycle, out of 1e9.
80
81
  * @param args.approvalHook A deadline contract queued rulesets must clear.
81
82
  * @param args.metadata Ruleset metadata; see {@link buildRulesetMetadata}.
@@ -2750,5 +2751,25 @@ export declare function buildLaunchProjectTx(args: {
2750
2751
  }[], string];
2751
2752
  value: bigint;
2752
2753
  };
2754
+ /** Minimal log shape needed to decode a project launch. */
2755
+ export interface V6LaunchProjectLog {
2756
+ address: Address;
2757
+ data: Hex;
2758
+ topics: readonly Hex[];
2759
+ }
2760
+ /**
2761
+ * Decode a v6 `LaunchProject` log emitted by the canonical controller.
2762
+ *
2763
+ * Checking the emitter matters: unrelated contracts can emit an event with the
2764
+ * same signature, and ERC-721 `Transfer` logs in a complex receipt are not a
2765
+ * reliable way to identify which mint was the Juicebox project NFT.
2766
+ */
2767
+ export declare function decodeLaunchProjectId(log: V6LaunchProjectLog, { chainId }: {
2768
+ chainId: JBChainId;
2769
+ }): bigint | null;
2770
+ /** Return the first canonical v6 project id found in a transaction's logs. */
2771
+ export declare function projectIdFromLaunchLogs(logs: readonly V6LaunchProjectLog[], args: {
2772
+ chainId: JBChainId;
2773
+ }): bigint | null;
2753
2774
  export {};
2754
2775
  //# sourceMappingURL=launch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/v6/launch.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/v6/launch.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA;AAED,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,kBAAkB,EACvB,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GAClC,MAAM,GAAG,IAAI,CAmBf;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,kBAAkB,EAAE,EACnC,IAAI,EAAE;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GAC3B,MAAM,GAAG,IAAI,CAMf"}
@@ -6,6 +6,8 @@ exports.buildTerminalConfigurations = buildTerminalConfigurations;
6
6
  exports.buildRulesetMetadata = buildRulesetMetadata;
7
7
  exports.buildRulesetConfiguration = buildRulesetConfiguration;
8
8
  exports.buildLaunchProjectTx = buildLaunchProjectTx;
9
+ exports.decodeLaunchProjectId = decodeLaunchProjectId;
10
+ exports.projectIdFromLaunchLogs = projectIdFromLaunchLogs;
9
11
  const viem_1 = require("viem");
10
12
  const constants_js_1 = require("../constants.js");
11
13
  const juicebox_js_1 = require("../generated/juicebox.js");
@@ -128,7 +130,8 @@ function buildRulesetMetadata(overrides) {
128
130
  * shared timestamp so every chain's ruleset is byte-identical.
129
131
  * @param args.duration Seconds the ruleset is locked for. 0 = no duration.
130
132
  * @param args.weight Tokens issued per unit of `baseCurrency` paid, as an
131
- * 18-decimal fixed point (uint112).
133
+ * 18-decimal fixed point (uint112). Later configurations can use the exported
134
+ * `RULESET_WEIGHT_INHERIT` sentinel (1n); zero means genuine zero issuance.
132
135
  * @param args.weightCutPercent Issuance cut applied each cycle, out of 1e9.
133
136
  * @param args.approvalHook A deadline contract queued rulesets must clear.
134
137
  * @param args.metadata Ruleset metadata; see {@link buildRulesetMetadata}.
@@ -181,4 +184,40 @@ function buildLaunchProjectTx(args) {
181
184
  value: args.creationFee,
182
185
  };
183
186
  }
187
+ /**
188
+ * Decode a v6 `LaunchProject` log emitted by the canonical controller.
189
+ *
190
+ * Checking the emitter matters: unrelated contracts can emit an event with the
191
+ * same signature, and ERC-721 `Transfer` logs in a complex receipt are not a
192
+ * reliable way to identify which mint was the Juicebox project NFT.
193
+ */
194
+ function decodeLaunchProjectId(log, { chainId }) {
195
+ if (!(0, viem_1.isAddressEqual)(log.address, (0, types_js_1.v6Address)("JBController", chainId))) {
196
+ return null;
197
+ }
198
+ try {
199
+ const decoded = (0, viem_1.decodeEventLog)({
200
+ abi: juicebox_js_1.jbControllerAbi,
201
+ eventName: "LaunchProject",
202
+ data: log.data,
203
+ topics: log.topics,
204
+ strict: true,
205
+ });
206
+ return decoded.eventName === "LaunchProject"
207
+ ? decoded.args.projectId
208
+ : null;
209
+ }
210
+ catch {
211
+ return null;
212
+ }
213
+ }
214
+ /** Return the first canonical v6 project id found in a transaction's logs. */
215
+ function projectIdFromLaunchLogs(logs, args) {
216
+ for (const log of logs) {
217
+ const projectId = decodeLaunchProjectId(log, args);
218
+ if (projectId !== null)
219
+ return projectId;
220
+ }
221
+ return null;
222
+ }
184
223
  //# sourceMappingURL=launch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/v6/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/v6/launch.ts"],"names":[],"mappings":"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"}