@bananapus/nana-sdk-core 1.11.1 → 2.1.0

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 (223) hide show
  1. package/dist/cjs/actions/JBSuckerAbi.d.ts +12 -2
  2. package/dist/cjs/actions/JBSuckerAbi.d.ts.map +1 -1
  3. package/dist/cjs/actions/JBSuckerAbi.js +12 -2
  4. package/dist/cjs/actions/JBSuckerAbi.js.map +1 -1
  5. package/dist/cjs/actions/projectMetadata.d.ts.map +1 -1
  6. package/dist/cjs/actions/projectMetadata.js +15 -9
  7. package/dist/cjs/actions/projectMetadata.js.map +1 -1
  8. package/dist/cjs/actions/suckerPairs.d.ts +26 -0
  9. package/dist/cjs/actions/suckerPairs.d.ts.map +1 -1
  10. package/dist/cjs/actions/suckerPairs.js +73 -39
  11. package/dist/cjs/actions/suckerPairs.js.map +1 -1
  12. package/dist/cjs/constants.d.ts +17 -7
  13. package/dist/cjs/constants.d.ts.map +1 -1
  14. package/dist/cjs/constants.js +45 -31
  15. package/dist/cjs/constants.js.map +1 -1
  16. package/dist/cjs/contracts.d.ts +6 -1
  17. package/dist/cjs/contracts.d.ts.map +1 -1
  18. package/dist/cjs/contracts.js +7 -1
  19. package/dist/cjs/contracts.js.map +1 -1
  20. package/dist/cjs/generated/juicebox.d.ts +8779 -6436
  21. package/dist/cjs/generated/juicebox.d.ts.map +1 -1
  22. package/dist/cjs/generated/juicebox.js +3027 -1244
  23. package/dist/cjs/generated/juicebox.js.map +1 -1
  24. package/dist/cjs/index.d.ts +1 -0
  25. package/dist/cjs/index.d.ts.map +1 -1
  26. package/dist/cjs/index.js +1 -0
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/jbcenter.d.ts +126 -0
  29. package/dist/cjs/jbcenter.d.ts.map +1 -0
  30. package/dist/cjs/jbcenter.js +307 -0
  31. package/dist/cjs/jbcenter.js.map +1 -0
  32. package/dist/cjs/types.d.ts +13 -10
  33. package/dist/cjs/types.d.ts.map +1 -1
  34. package/dist/cjs/types.js +10 -6
  35. package/dist/cjs/types.js.map +1 -1
  36. package/dist/cjs/utils/bendystraw.d.ts +19 -3
  37. package/dist/cjs/utils/bendystraw.d.ts.map +1 -1
  38. package/dist/cjs/utils/bendystraw.js +38 -10
  39. package/dist/cjs/utils/bendystraw.js.map +1 -1
  40. package/dist/cjs/utils/errors.d.ts +19 -0
  41. package/dist/cjs/utils/errors.d.ts.map +1 -0
  42. package/dist/cjs/utils/errors.js +32 -0
  43. package/dist/cjs/utils/errors.js.map +1 -0
  44. package/dist/cjs/utils/fee.d.ts +12 -0
  45. package/dist/cjs/utils/fee.d.ts.map +1 -1
  46. package/dist/cjs/utils/fee.js +13 -2
  47. package/dist/cjs/utils/fee.js.map +1 -1
  48. package/dist/cjs/utils/hook.d.ts +17 -4
  49. package/dist/cjs/utils/hook.d.ts.map +1 -1
  50. package/dist/cjs/utils/hook.js +60 -31
  51. package/dist/cjs/utils/hook.js.map +1 -1
  52. package/dist/cjs/utils/index.d.ts +1 -0
  53. package/dist/cjs/utils/index.d.ts.map +1 -1
  54. package/dist/cjs/utils/index.js +1 -0
  55. package/dist/cjs/utils/index.js.map +1 -1
  56. package/dist/cjs/utils/ipfs.d.ts +9 -1
  57. package/dist/cjs/utils/ipfs.d.ts.map +1 -1
  58. package/dist/cjs/utils/ipfs.js +13 -1
  59. package/dist/cjs/utils/ipfs.js.map +1 -1
  60. package/dist/cjs/utils/revnet.d.ts +1 -1
  61. package/dist/cjs/utils/revnet.d.ts.map +1 -1
  62. package/dist/cjs/utils/revnet.js +2 -1
  63. package/dist/cjs/utils/revnet.js.map +1 -1
  64. package/dist/cjs/utils/ruleset.d.ts +14 -0
  65. package/dist/cjs/utils/ruleset.d.ts.map +1 -1
  66. package/dist/cjs/utils/ruleset.js +19 -0
  67. package/dist/cjs/utils/ruleset.js.map +1 -1
  68. package/dist/cjs/utils/tx.d.ts +9 -0
  69. package/dist/cjs/utils/tx.d.ts.map +1 -1
  70. package/dist/cjs/utils/tx.js +10 -3
  71. package/dist/cjs/utils/tx.js.map +1 -1
  72. package/dist/cjs/utils/urn.d.ts +20 -1
  73. package/dist/cjs/utils/urn.d.ts.map +1 -1
  74. package/dist/cjs/utils/urn.js +54 -32
  75. package/dist/cjs/utils/urn.js.map +1 -1
  76. package/dist/cjs/v6/cashOut.d.ts +40 -6
  77. package/dist/cjs/v6/cashOut.d.ts.map +1 -1
  78. package/dist/cjs/v6/cashOut.js +54 -4
  79. package/dist/cjs/v6/cashOut.js.map +1 -1
  80. package/dist/cjs/v6/fees.d.ts +11 -8
  81. package/dist/cjs/v6/fees.d.ts.map +1 -1
  82. package/dist/cjs/v6/fees.js +12 -9
  83. package/dist/cjs/v6/fees.js.map +1 -1
  84. package/dist/cjs/v6/index.d.ts +1 -0
  85. package/dist/cjs/v6/index.d.ts.map +1 -1
  86. package/dist/cjs/v6/index.js +1 -0
  87. package/dist/cjs/v6/index.js.map +1 -1
  88. package/dist/cjs/v6/loans.d.ts +13 -4
  89. package/dist/cjs/v6/loans.d.ts.map +1 -1
  90. package/dist/cjs/v6/loans.js +14 -5
  91. package/dist/cjs/v6/loans.js.map +1 -1
  92. package/dist/cjs/v6/nft.d.ts +11 -7
  93. package/dist/cjs/v6/nft.d.ts.map +1 -1
  94. package/dist/cjs/v6/nft.js +26 -11
  95. package/dist/cjs/v6/nft.js.map +1 -1
  96. package/dist/cjs/v6/priceFeeds.d.ts +78 -0
  97. package/dist/cjs/v6/priceFeeds.d.ts.map +1 -0
  98. package/dist/cjs/v6/priceFeeds.js +109 -0
  99. package/dist/cjs/v6/priceFeeds.js.map +1 -0
  100. package/dist/cjs/v6/revnets.d.ts +21 -2
  101. package/dist/cjs/v6/revnets.d.ts.map +1 -1
  102. package/dist/cjs/v6/revnets.js +35 -3
  103. package/dist/cjs/v6/revnets.js.map +1 -1
  104. package/dist/cjs/v6/suckers.d.ts +11 -0
  105. package/dist/cjs/v6/suckers.d.ts.map +1 -1
  106. package/dist/cjs/v6/suckers.js +22 -1
  107. package/dist/cjs/v6/suckers.js.map +1 -1
  108. package/dist/cjs/v6/terminals.d.ts +24 -4
  109. package/dist/cjs/v6/terminals.d.ts.map +1 -1
  110. package/dist/cjs/v6/terminals.js +13 -2
  111. package/dist/cjs/v6/terminals.js.map +1 -1
  112. package/dist/esm/actions/JBSuckerAbi.d.ts +12 -2
  113. package/dist/esm/actions/JBSuckerAbi.d.ts.map +1 -1
  114. package/dist/esm/actions/JBSuckerAbi.js +12 -2
  115. package/dist/esm/actions/JBSuckerAbi.js.map +1 -1
  116. package/dist/esm/actions/projectMetadata.d.ts.map +1 -1
  117. package/dist/esm/actions/projectMetadata.js +16 -10
  118. package/dist/esm/actions/projectMetadata.js.map +1 -1
  119. package/dist/esm/actions/suckerPairs.d.ts +26 -0
  120. package/dist/esm/actions/suckerPairs.d.ts.map +1 -1
  121. package/dist/esm/actions/suckerPairs.js +75 -41
  122. package/dist/esm/actions/suckerPairs.js.map +1 -1
  123. package/dist/esm/constants.d.ts +17 -7
  124. package/dist/esm/constants.d.ts.map +1 -1
  125. package/dist/esm/constants.js +44 -30
  126. package/dist/esm/constants.js.map +1 -1
  127. package/dist/esm/contracts.d.ts +6 -1
  128. package/dist/esm/contracts.d.ts.map +1 -1
  129. package/dist/esm/contracts.js +6 -0
  130. package/dist/esm/contracts.js.map +1 -1
  131. package/dist/esm/generated/juicebox.d.ts +8779 -6436
  132. package/dist/esm/generated/juicebox.d.ts.map +1 -1
  133. package/dist/esm/generated/juicebox.js +9644 -7861
  134. package/dist/esm/generated/juicebox.js.map +1 -1
  135. package/dist/esm/index.d.ts +1 -0
  136. package/dist/esm/index.d.ts.map +1 -1
  137. package/dist/esm/index.js +1 -0
  138. package/dist/esm/index.js.map +1 -1
  139. package/dist/esm/jbcenter.d.ts +126 -0
  140. package/dist/esm/jbcenter.d.ts.map +1 -0
  141. package/dist/esm/jbcenter.js +300 -0
  142. package/dist/esm/jbcenter.js.map +1 -0
  143. package/dist/esm/types.d.ts +13 -10
  144. package/dist/esm/types.d.ts.map +1 -1
  145. package/dist/esm/types.js +10 -6
  146. package/dist/esm/types.js.map +1 -1
  147. package/dist/esm/utils/bendystraw.d.ts +19 -3
  148. package/dist/esm/utils/bendystraw.d.ts.map +1 -1
  149. package/dist/esm/utils/bendystraw.js +36 -9
  150. package/dist/esm/utils/bendystraw.js.map +1 -1
  151. package/dist/esm/utils/errors.d.ts +19 -0
  152. package/dist/esm/utils/errors.d.ts.map +1 -0
  153. package/dist/esm/utils/errors.js +28 -0
  154. package/dist/esm/utils/errors.js.map +1 -0
  155. package/dist/esm/utils/fee.d.ts +12 -0
  156. package/dist/esm/utils/fee.d.ts.map +1 -1
  157. package/dist/esm/utils/fee.js +13 -2
  158. package/dist/esm/utils/fee.js.map +1 -1
  159. package/dist/esm/utils/hook.d.ts +17 -4
  160. package/dist/esm/utils/hook.d.ts.map +1 -1
  161. package/dist/esm/utils/hook.js +61 -32
  162. package/dist/esm/utils/hook.js.map +1 -1
  163. package/dist/esm/utils/index.d.ts +1 -0
  164. package/dist/esm/utils/index.d.ts.map +1 -1
  165. package/dist/esm/utils/index.js +1 -0
  166. package/dist/esm/utils/index.js.map +1 -1
  167. package/dist/esm/utils/ipfs.d.ts +9 -1
  168. package/dist/esm/utils/ipfs.d.ts.map +1 -1
  169. package/dist/esm/utils/ipfs.js +13 -1
  170. package/dist/esm/utils/ipfs.js.map +1 -1
  171. package/dist/esm/utils/revnet.d.ts +1 -1
  172. package/dist/esm/utils/revnet.d.ts.map +1 -1
  173. package/dist/esm/utils/revnet.js +2 -1
  174. package/dist/esm/utils/revnet.js.map +1 -1
  175. package/dist/esm/utils/ruleset.d.ts +14 -0
  176. package/dist/esm/utils/ruleset.d.ts.map +1 -1
  177. package/dist/esm/utils/ruleset.js +19 -0
  178. package/dist/esm/utils/ruleset.js.map +1 -1
  179. package/dist/esm/utils/tx.d.ts +9 -0
  180. package/dist/esm/utils/tx.d.ts.map +1 -1
  181. package/dist/esm/utils/tx.js +11 -4
  182. package/dist/esm/utils/tx.js.map +1 -1
  183. package/dist/esm/utils/urn.d.ts +20 -1
  184. package/dist/esm/utils/urn.d.ts.map +1 -1
  185. package/dist/esm/utils/urn.js +54 -32
  186. package/dist/esm/utils/urn.js.map +1 -1
  187. package/dist/esm/v6/cashOut.d.ts +40 -6
  188. package/dist/esm/v6/cashOut.d.ts.map +1 -1
  189. package/dist/esm/v6/cashOut.js +54 -4
  190. package/dist/esm/v6/cashOut.js.map +1 -1
  191. package/dist/esm/v6/fees.d.ts +11 -8
  192. package/dist/esm/v6/fees.d.ts.map +1 -1
  193. package/dist/esm/v6/fees.js +11 -8
  194. package/dist/esm/v6/fees.js.map +1 -1
  195. package/dist/esm/v6/index.d.ts +1 -0
  196. package/dist/esm/v6/index.d.ts.map +1 -1
  197. package/dist/esm/v6/index.js +1 -0
  198. package/dist/esm/v6/index.js.map +1 -1
  199. package/dist/esm/v6/loans.d.ts +13 -4
  200. package/dist/esm/v6/loans.d.ts.map +1 -1
  201. package/dist/esm/v6/loans.js +13 -4
  202. package/dist/esm/v6/loans.js.map +1 -1
  203. package/dist/esm/v6/nft.d.ts +11 -7
  204. package/dist/esm/v6/nft.d.ts.map +1 -1
  205. package/dist/esm/v6/nft.js +26 -11
  206. package/dist/esm/v6/nft.js.map +1 -1
  207. package/dist/esm/v6/priceFeeds.d.ts +78 -0
  208. package/dist/esm/v6/priceFeeds.d.ts.map +1 -0
  209. package/dist/esm/v6/priceFeeds.js +105 -0
  210. package/dist/esm/v6/priceFeeds.js.map +1 -0
  211. package/dist/esm/v6/revnets.d.ts +21 -2
  212. package/dist/esm/v6/revnets.d.ts.map +1 -1
  213. package/dist/esm/v6/revnets.js +34 -3
  214. package/dist/esm/v6/revnets.js.map +1 -1
  215. package/dist/esm/v6/suckers.d.ts +11 -0
  216. package/dist/esm/v6/suckers.d.ts.map +1 -1
  217. package/dist/esm/v6/suckers.js +21 -1
  218. package/dist/esm/v6/suckers.js.map +1 -1
  219. package/dist/esm/v6/terminals.d.ts +24 -4
  220. package/dist/esm/v6/terminals.d.ts.map +1 -1
  221. package/dist/esm/v6/terminals.js +13 -2
  222. package/dist/esm/v6/terminals.js.map +1 -1
  223. package/package.json +12 -1
@@ -4,10 +4,19 @@ import { JBChainId } from "../types.js";
4
4
  export * from "./loanMath.js";
5
5
  /**
6
6
  * The JBPermissions permission id apps grant to the REVLoans contract before borrowing
7
- * against a holder's tokens (v6 ROOT permission id 1). REVLoans needs it to manage the
8
- * holder's collateral tokens on their behalf.
7
+ * against a holder's tokens: `BURN_TOKENS` (11, per `JBPermissionIds`). REVLoans burns
8
+ * the holder's collateral via `JBController.burnTokensOf`, which is gated on this
9
+ * permission ONLY — never grant ROOT (1) to REVLoans; ROOT silently satisfies every
10
+ * permission check and hands the contract full operator power over the holder.
9
11
  */
10
- export declare const REVLOANS_PERMISSION_ID = 1;
12
+ export declare const REVLOANS_BURN_PERMISSION_ID = 11;
13
+ /**
14
+ * @deprecated Use {@link REVLOANS_BURN_PERMISSION_ID}. This constant previously held
15
+ * ROOT (1) — a grant that gives REVLoans unrestricted operator power over the holder.
16
+ * It now aliases `BURN_TOKENS` (11), the only permission REVLoans needs. Audit any
17
+ * grants made with the old value and revoke ROOT from REVLoans.
18
+ */
19
+ export declare const REVLOANS_PERMISSION_ID = 11;
11
20
  /**
12
21
  * A Permit2 single allowance, passed to `repayLoan` when repaying with an ERC-20 via a
13
22
  * signed permit. Pass {@link EMPTY_SINGLE_ALLOWANCE} (the default) when repaying with the
@@ -30,7 +39,7 @@ export declare const EMPTY_SINGLE_ALLOWANCE: JBSingleAllowance;
30
39
  * tokens.
31
40
  *
32
41
  * The caller must be the holder or have permission to act on their behalf, and the holder
33
- * must have granted permission id {@link REVLOANS_PERMISSION_ID} to REVLoans.
42
+ * must have granted permission id {@link REVLOANS_BURN_PERMISSION_ID} to REVLoans.
34
43
  *
35
44
  * @param args.chainId The chain to borrow on.
36
45
  * @param args.revnetId The revnet to borrow from.
@@ -1 +1 @@
1
- {"version":3,"file":"loans.d.ts","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loans.d.ts","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,19 @@ import { v6Address } from "./types.js";
3
3
  export * from "./loanMath.js";
4
4
  /**
5
5
  * The JBPermissions permission id apps grant to the REVLoans contract before borrowing
6
- * against a holder's tokens (v6 ROOT permission id 1). REVLoans needs it to manage the
7
- * holder's collateral tokens on their behalf.
6
+ * against a holder's tokens: `BURN_TOKENS` (11, per `JBPermissionIds`). REVLoans burns
7
+ * the holder's collateral via `JBController.burnTokensOf`, which is gated on this
8
+ * permission ONLY — never grant ROOT (1) to REVLoans; ROOT silently satisfies every
9
+ * permission check and hands the contract full operator power over the holder.
8
10
  */
9
- export const REVLOANS_PERMISSION_ID = 1;
11
+ export const REVLOANS_BURN_PERMISSION_ID = 11;
12
+ /**
13
+ * @deprecated Use {@link REVLOANS_BURN_PERMISSION_ID}. This constant previously held
14
+ * ROOT (1) — a grant that gives REVLoans unrestricted operator power over the holder.
15
+ * It now aliases `BURN_TOKENS` (11), the only permission REVLoans needs. Audit any
16
+ * grants made with the old value and revoke ROOT from REVLoans.
17
+ */
18
+ export const REVLOANS_PERMISSION_ID = REVLOANS_BURN_PERMISSION_ID;
10
19
  /**
11
20
  * An empty Permit2 allowance: use when no permit signature is needed (native-token
12
21
  * repayments, or ERC-20s already approved to REVLoans).
@@ -23,7 +32,7 @@ export const EMPTY_SINGLE_ALLOWANCE = {
23
32
  * tokens.
24
33
  *
25
34
  * The caller must be the holder or have permission to act on their behalf, and the holder
26
- * must have granted permission id {@link REVLOANS_PERMISSION_ID} to REVLoans.
35
+ * must have granted permission id {@link REVLOANS_BURN_PERMISSION_ID} to REVLoans.
27
36
  *
28
37
  * @param args.chainId The chain to borrow on.
29
38
  * @param args.revnetId The revnet to borrow from.
@@ -1 +1 @@
1
- {"version":3,"file":"loans.js","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,cAAc,eAAe,CAAC;AAE9B;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAexC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,WAAW,EAAE,EAAE;IACf,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,GAAG,EAAE,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,MAAM,GAUP;IAOC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,YAAY;QAC1B,IAAI,EAAE;YACJ,QAAQ;YACR,KAAK;YACL,eAAe;YACf,eAAe;YACf,WAAW;YACX,iBAAiB;YACjB,MAAM;SACP;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,SAAS,GAAG,sBAAsB,EAClC,KAAK,GAAG,EAAE,GASX;IAQC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE;YACJ,MAAM;YACN,oBAAoB;YACpB,uBAAuB;YACvB,WAAW;YACX,SAAS;SACV;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,OAAO,EACP,MAAM,EACN,yBAAyB,EACzB,KAAK,EACL,eAAe,GAAG,EAAE,EACpB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,GAUlB;IAOC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,8BAA8B;QAC5C,IAAI,EAAE;YACJ,MAAM;YACN,yBAAyB;YACzB,KAAK;YACL,eAAe;YACf,oBAAoB;YACpB,WAAW;YACX,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAoB,EACpB,EACE,OAAO,EACP,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,GAOT;IAED,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACpE,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,sBAAsB;QACpC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"loans.js","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,cAAc,eAAe,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAelE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,WAAW,EAAE,EAAE;IACf,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,GAAG,EAAE,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,MAAM,GAUP;IAOC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,YAAY;QAC1B,IAAI,EAAE;YACJ,QAAQ;YACR,KAAK;YACL,eAAe;YACf,eAAe;YACf,WAAW;YACX,iBAAiB;YACjB,MAAM;SACP;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,SAAS,GAAG,sBAAsB,EAClC,KAAK,GAAG,EAAE,GASX;IAQC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE;YACJ,MAAM;YACN,oBAAoB;YACpB,uBAAuB;YACvB,WAAW;YACX,SAAS;SACV;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,OAAO,EACP,MAAM,EACN,yBAAyB,EACzB,KAAK,EACL,eAAe,GAAG,EAAE,EACpB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,GAUlB;IAOC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,8BAA8B;QAC5C,IAAI,EAAE;YACJ,MAAM;YACN,yBAAyB;YACzB,KAAK;YACL,eAAe;YACf,oBAAoB;YACpB,WAAW;YACX,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAoB,EACpB,EACE,OAAO,EACP,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,GAOT;IAED,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACpE,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,WAAW;QAChB,YAAY,EAAE,sBAAsB;QACpC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAC/C,CAAC"}
@@ -156,8 +156,11 @@ export interface Project721Shop {
156
156
  /**
157
157
  * Read a JB721 hook's `METADATA_ID_TARGET` — the shared *implementation* address
158
158
  * that pay/cash-out metadata ids must key off (a delegatecall clone reports the
159
- * implementation, not itself). Falls back to `hook` if the read reverts (e.g. an
160
- * older hook without the getter), which is only correct for a non-clone hook.
159
+ * implementation, not itself). Falls back to `hook` ONLY when the contract
160
+ * itself answered that it has no such getter (a revert or empty return — an
161
+ * older, non-clone hook). Transport/RPC failures are rethrown: treating them as
162
+ * "old hook" would key pay metadata off the clone address, which the hook
163
+ * silently ignores — the payer pays and receives no NFT.
161
164
  *
162
165
  * @param client A viem public client on the given chain.
163
166
  * @param args.hook The project's 721 tiers hook (clone) address.
@@ -174,12 +177,13 @@ export declare function get721MetadataIdTarget(client: PublicClient, { hook }: {
174
177
  * `REVOwner.tiered721HookOf`; custom projects read the current ruleset's pay
175
178
  * data hook — either the omnichain deployer (the real hook lives in
176
179
  * `JBOmnichainDeployer.tiered721HookOf(projectId, rulesetId)`) or the 721 hook
177
- * itself, verified by probing `STORE()` (a revert means it is not a 721 hook, so
178
- * the project has no shop).
180
+ * itself, verified by probing `STORE()` (a proven revert or empty return means
181
+ * it is not a 721 hook, so the project has no shop).
179
182
  *
180
- * Returns `null` when the project authoritatively has no 721 shop. RPC failures
181
- * on authoritative reads throw, so a transient error surfaces as an error rather
182
- * than a false "no shop".
183
+ * Returns `null` only when the project authoritatively has no 721 shop. RPC and
184
+ * transport failures throw — on authoritative reads and on the `STORE()` probe
185
+ * alike — so a transient error surfaces as an error rather than a false
186
+ * "no shop".
183
187
  *
184
188
  * @param client A viem public client on the given chain.
185
189
  * @param args.projectId The project (or revnet) id.
@@ -1 +1 @@
1
- {"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../../src/v6/nft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../../src/v6/nft.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { zeroAddress } from "viem";
2
2
  import { JBOmnichainDeployerContracts } from "../contracts.js";
3
3
  import { jb721TiersHookAbi, jb721TiersHookStoreAbi, jbContractAddress, jbOmnichainDeployerAbi, } from "../generated/juicebox.js";
4
+ import { isMissingContractFunctionError } from "../utils/errors.js";
4
5
  import { ipfsAssetPath, isIpfsCid } from "../utils/ipfs.js";
5
6
  import { getRevnetTiered721Hook } from "./revnets.js";
6
7
  import { getCurrentRuleset } from "./rulesets.js";
@@ -246,8 +247,11 @@ export function effectiveTierPrice(price, discountPercent) {
246
247
  /**
247
248
  * Read a JB721 hook's `METADATA_ID_TARGET` — the shared *implementation* address
248
249
  * that pay/cash-out metadata ids must key off (a delegatecall clone reports the
249
- * implementation, not itself). Falls back to `hook` if the read reverts (e.g. an
250
- * older hook without the getter), which is only correct for a non-clone hook.
250
+ * implementation, not itself). Falls back to `hook` ONLY when the contract
251
+ * itself answered that it has no such getter (a revert or empty return — an
252
+ * older, non-clone hook). Transport/RPC failures are rethrown: treating them as
253
+ * "old hook" would key pay metadata off the clone address, which the hook
254
+ * silently ignores — the payer pays and receives no NFT.
251
255
  *
252
256
  * @param client A viem public client on the given chain.
253
257
  * @param args.hook The project's 721 tiers hook (clone) address.
@@ -259,7 +263,11 @@ export async function get721MetadataIdTarget(client, { hook }) {
259
263
  abi: jb721TiersHookAbi,
260
264
  functionName: "METADATA_ID_TARGET",
261
265
  })
262
- .catch(() => hook);
266
+ .catch((error) => {
267
+ if (isMissingContractFunctionError(error))
268
+ return hook;
269
+ throw error;
270
+ });
263
271
  }
264
272
  /**
265
273
  * Resolve a project's 721 tiers hook, its store, metadata id target, pricing
@@ -269,12 +277,13 @@ export async function get721MetadataIdTarget(client, { hook }) {
269
277
  * `REVOwner.tiered721HookOf`; custom projects read the current ruleset's pay
270
278
  * data hook — either the omnichain deployer (the real hook lives in
271
279
  * `JBOmnichainDeployer.tiered721HookOf(projectId, rulesetId)`) or the 721 hook
272
- * itself, verified by probing `STORE()` (a revert means it is not a 721 hook, so
273
- * the project has no shop).
280
+ * itself, verified by probing `STORE()` (a proven revert or empty return means
281
+ * it is not a 721 hook, so the project has no shop).
274
282
  *
275
- * Returns `null` when the project authoritatively has no 721 shop. RPC failures
276
- * on authoritative reads throw, so a transient error surfaces as an error rather
277
- * than a false "no shop".
283
+ * Returns `null` only when the project authoritatively has no 721 shop. RPC and
284
+ * transport failures throw — on authoritative reads and on the `STORE()` probe
285
+ * alike — so a transient error surfaces as an error rather than a false
286
+ * "no shop".
278
287
  *
279
288
  * @param client A viem public client on the given chain.
280
289
  * @param args.projectId The project (or revnet) id.
@@ -323,8 +332,10 @@ export async function getProject721Shop(client, { chainId, projectId, isRevnet,
323
332
  }
324
333
  if (!hook)
325
334
  return null;
326
- // 2. The hook's store. For a non-authoritative candidate a revert means "not a
327
- // 721 hook" (no shop); for an authoritative one, let failures throw.
335
+ // 2. The hook's store. For a non-authoritative candidate a PROVEN revert (or
336
+ // empty return) means "not a 721 hook" — no shop. Transport failures prove
337
+ // nothing and are rethrown; swallowing them would render "no shop" for a
338
+ // project that has one. For an authoritative hook, let every failure throw.
328
339
  const readStore = () => client.readContract({
329
340
  address: hook,
330
341
  abi: jb721TiersHookAbi,
@@ -332,7 +343,11 @@ export async function getProject721Shop(client, { chainId, projectId, isRevnet,
332
343
  });
333
344
  const store = authoritative
334
345
  ? await readStore()
335
- : await readStore().catch(() => null);
346
+ : await readStore().catch((error) => {
347
+ if (isMissingContractFunctionError(error))
348
+ return null;
349
+ throw error;
350
+ });
336
351
  if (!store)
337
352
  return null;
338
353
  // 3. Metadata id target + pricing context. Pricing is meaningless without the
@@ -1 +1 @@
1
- {"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/v6/nft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/v6/nft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { PublicClient } from "viem";
2
+ import { JBChainId } from "../types.js";
3
+ import { JBAccountingContext } from "./terminals.js";
4
+ /**
5
+ * One `JBPrices.pricePerUnitOf` lookup a project's configuration depends on at
6
+ * runtime. Pairs are unordered — JBPrices falls back to the inverse feed
7
+ * itself, so reachability is symmetric.
8
+ */
9
+ export interface JBFeedPair {
10
+ pricingCurrency: number;
11
+ unitCurrency: number;
12
+ /**
13
+ * The decimals the terminal itself passes: the context's decimals on the
14
+ * pay path, 18 (the store's max fixed-point fidelity) on the cross-context
15
+ * cash-out/surplus path.
16
+ */
17
+ decimals: number;
18
+ }
19
+ /**
20
+ * Every `JBPrices` pair the terminal will resolve at runtime for a project
21
+ * accepting the given accounting contexts (the exact structs
22
+ * `buildAccountingContext` emits) with the given ruleset `baseCurrency`:
23
+ *
24
+ * - each `context.currency` ↔ `baseCurrency` (the pay/issuance conversion;
25
+ * skipped when equal — the terminal short-circuits), and
26
+ * - each `context.currency` ↔ each other `context.currency` (cash-out and
27
+ * surplus views convert every OTHER context's balance into the reclaimed
28
+ * context's currency, NOT the base currency; skipped for single-context
29
+ * projects).
30
+ *
31
+ * Pairs are deduped without direction. Feeds resolve direct or inverse only —
32
+ * never transitively through an intermediate currency — so every returned pair
33
+ * must be individually served by a feed or the project's payments and/or cash
34
+ * outs revert on-chain. Accounting contexts are immutable once set, so an
35
+ * unreachable pair must be caught BEFORE launch (see
36
+ * {@link probeFeedReachability}).
37
+ */
38
+ export declare function requiredFeedPairs(accountingContexts: readonly JBAccountingContext[], baseCurrency: number): JBFeedPair[];
39
+ /**
40
+ * A feed-reachability verdict. Anything other than `ok` should block a launch:
41
+ * `missing` because the chain ANSWERED that a required pair has no feed, and
42
+ * `unavailable` because at least one probe could not be completed — an RPC
43
+ * failure is not proof of a missing feed, but it is not proof of a present one
44
+ * either, so it fails closed WITHOUT being reported as `missing`.
45
+ */
46
+ export type FeedReachability = {
47
+ status: "ok";
48
+ } | {
49
+ status: "missing";
50
+ missing: JBFeedPair[];
51
+ } | {
52
+ status: "unavailable";
53
+ };
54
+ /**
55
+ * Probe on-chain that every given `JBPrices` pair resolves, via the same
56
+ * `pricePerUnitOf` read the terminal performs at runtime. The default
57
+ * `projectId` 0 gives exactly the protocol-default-feed semantics a freshly
58
+ * launched project starts with — and, because the probe is on-chain, a later
59
+ * protocol-side default-feed registration unblocks the combination with no
60
+ * client release.
61
+ *
62
+ * A revert (as opposed to a transport failure) means the chain answered, so a
63
+ * pair is only ever reported `missing` on a proven
64
+ * `ContractFunctionRevertedError`; every other failure — timeouts, HTTP
65
+ * errors, a chain with no known `JBPrices` deployment — yields `unavailable`.
66
+ *
67
+ * @param client A viem public client on the given chain.
68
+ * @param args.chainId The chain to probe on.
69
+ * @param args.pairs The pairs to probe (see {@link requiredFeedPairs}).
70
+ * @param args.projectId The project id to resolve feeds for. Defaults to 0n
71
+ * (the protocol default feeds).
72
+ */
73
+ export declare function probeFeedReachability(client: PublicClient, { chainId, pairs, projectId, }: {
74
+ chainId: JBChainId;
75
+ pairs: readonly JBFeedPair[];
76
+ projectId?: bigint;
77
+ }): Promise<FeedReachability>;
78
+ //# sourceMappingURL=priceFeeds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceFeeds.d.ts","sourceRoot":"","sources":["../../../src/v6/priceFeeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,EAClD,YAAY,EAAE,MAAM,GACnB,UAAU,EAAE,CA0Bd;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAChB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,KAAK,EACL,SAAc,GACf,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,OAAO,CAAC,gBAAgB,CAAC,CAuC3B"}
@@ -0,0 +1,105 @@
1
+ import { jbPricesAbi } from "../generated/juicebox.js";
2
+ import { isContractRevertError } from "../utils/errors.js";
3
+ import { v6Address } from "./types.js";
4
+ /**
5
+ * Every `JBPrices` pair the terminal will resolve at runtime for a project
6
+ * accepting the given accounting contexts (the exact structs
7
+ * `buildAccountingContext` emits) with the given ruleset `baseCurrency`:
8
+ *
9
+ * - each `context.currency` ↔ `baseCurrency` (the pay/issuance conversion;
10
+ * skipped when equal — the terminal short-circuits), and
11
+ * - each `context.currency` ↔ each other `context.currency` (cash-out and
12
+ * surplus views convert every OTHER context's balance into the reclaimed
13
+ * context's currency, NOT the base currency; skipped for single-context
14
+ * projects).
15
+ *
16
+ * Pairs are deduped without direction. Feeds resolve direct or inverse only —
17
+ * never transitively through an intermediate currency — so every returned pair
18
+ * must be individually served by a feed or the project's payments and/or cash
19
+ * outs revert on-chain. Accounting contexts are immutable once set, so an
20
+ * unreachable pair must be caught BEFORE launch (see
21
+ * {@link probeFeedReachability}).
22
+ */
23
+ export function requiredFeedPairs(accountingContexts, baseCurrency) {
24
+ const pairs = [];
25
+ const seen = new Set();
26
+ const add = (pricingCurrency, unitCurrency, decimals) => {
27
+ if (pricingCurrency === unitCurrency)
28
+ return;
29
+ const key = `${Math.min(pricingCurrency, unitCurrency)}:${Math.max(pricingCurrency, unitCurrency)}`;
30
+ if (seen.has(key))
31
+ return;
32
+ seen.add(key);
33
+ pairs.push({ pricingCurrency, unitCurrency, decimals });
34
+ };
35
+ for (const context of accountingContexts) {
36
+ add(context.currency, baseCurrency, context.decimals);
37
+ }
38
+ for (let i = 0; i < accountingContexts.length; i++) {
39
+ for (let j = i + 1; j < accountingContexts.length; j++) {
40
+ add(accountingContexts[i].currency, accountingContexts[j].currency, 18);
41
+ }
42
+ }
43
+ return pairs;
44
+ }
45
+ /**
46
+ * Probe on-chain that every given `JBPrices` pair resolves, via the same
47
+ * `pricePerUnitOf` read the terminal performs at runtime. The default
48
+ * `projectId` 0 gives exactly the protocol-default-feed semantics a freshly
49
+ * launched project starts with — and, because the probe is on-chain, a later
50
+ * protocol-side default-feed registration unblocks the combination with no
51
+ * client release.
52
+ *
53
+ * A revert (as opposed to a transport failure) means the chain answered, so a
54
+ * pair is only ever reported `missing` on a proven
55
+ * `ContractFunctionRevertedError`; every other failure — timeouts, HTTP
56
+ * errors, a chain with no known `JBPrices` deployment — yields `unavailable`.
57
+ *
58
+ * @param client A viem public client on the given chain.
59
+ * @param args.chainId The chain to probe on.
60
+ * @param args.pairs The pairs to probe (see {@link requiredFeedPairs}).
61
+ * @param args.projectId The project id to resolve feeds for. Defaults to 0n
62
+ * (the protocol default feeds).
63
+ */
64
+ export async function probeFeedReachability(client, { chainId, pairs, projectId = 0n, }) {
65
+ if (pairs.length === 0)
66
+ return { status: "ok" };
67
+ let prices;
68
+ try {
69
+ prices = v6Address("JBPrices", chainId);
70
+ }
71
+ catch {
72
+ return { status: "unavailable" };
73
+ }
74
+ let unverified = false;
75
+ const missing = [];
76
+ await Promise.all(pairs.map(async (pair) => {
77
+ try {
78
+ await client.readContract({
79
+ address: prices,
80
+ abi: jbPricesAbi,
81
+ functionName: "pricePerUnitOf",
82
+ args: [
83
+ projectId,
84
+ BigInt(pair.pricingCurrency),
85
+ BigInt(pair.unitCurrency),
86
+ BigInt(pair.decimals),
87
+ ],
88
+ });
89
+ }
90
+ catch (error) {
91
+ if (isContractRevertError(error)) {
92
+ missing.push(pair);
93
+ }
94
+ else {
95
+ unverified = true;
96
+ }
97
+ }
98
+ }));
99
+ if (missing.length > 0)
100
+ return { status: "missing", missing };
101
+ if (unverified)
102
+ return { status: "unavailable" };
103
+ return { status: "ok" };
104
+ }
105
+ //# sourceMappingURL=priceFeeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceFeeds.js","sourceRoot":"","sources":["../../../src/v6/priceFeeds.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,14 @@ export type REVDeploy721TiersHookConfig = RevDeployArgs6[4];
36
36
  * may post to, and at what minimum price/supply.
37
37
  */
38
38
  export type REVCroptopAllowedPost = RevDeployArgs6[5][number];
39
+ /**
40
+ * Ruleset `extraMetadata` bit 2: allows `REVDeployer.deploySuckersFor` to extend
41
+ * the revnet to new chains while the stage is active (the deployer checks
42
+ * `(metadata >> 2) & 1`). `extraMetadata` is folded into the revnet's immutable
43
+ * encoded-configuration hash, so a stage without this bit can NEVER be extended —
44
+ * there is no later fix.
45
+ */
46
+ export declare const REV_METADATA_ALLOW_SUCKER_DEPLOYMENT: number;
39
47
  /**
40
48
  * Build a `REVStageConfig` (spec-exact encodings, documented per field).
41
49
  *
@@ -58,8 +66,13 @@ export type REVCroptopAllowedPost = RevDeployArgs6[5][number];
58
66
  * - `issuanceCutPercent`: how much issuance drops each period, out of 1e9
59
67
  * (`MAX_WEIGHT_CUT_PERCENT`; e.g. 20% = 200,000,000).
60
68
  * - `cashOutTaxRate`: out of 10,000 (`MAX_CASH_OUT_TAX_RATE`). Any non-zero
61
- * rate makes EVERY cash out incur the 2.5% protocol fee.
62
- * - `extraMetadata`: extra metadata bits forwarded to hooks; 0 by default.
69
+ * rate makes EVERY cash out incur the 2.5% protocol fee; zero-tax cash outs
70
+ * still pay it on `min(reclaimAmount, feeFreeSurplusOf)`, which is often
71
+ * but not always zero.
72
+ * - `extraMetadata`: extra metadata bits forwarded to hooks.
73
+ * {@link REV_METADATA_ALLOW_SUCKER_DEPLOYMENT} (bit 2) is ORed in by default
74
+ * so the revnet stays extendable to new chains; pass
75
+ * `allowSuckerDeployment: false` to opt out PERMANENTLY for the stage.
63
76
  */
64
77
  export declare function buildRevnetStageConfig(args: {
65
78
  startsAtOrAfter: number;
@@ -71,6 +84,12 @@ export declare function buildRevnetStageConfig(args: {
71
84
  issuanceCutPercent?: number;
72
85
  cashOutTaxRate?: number;
73
86
  extraMetadata?: number;
87
+ /**
88
+ * Whether `REVDeployer.deploySuckersFor` may extend the revnet to new chains
89
+ * during this stage. Defaults to TRUE — a stage without the bit is
90
+ * un-extendable forever, since stages are immutable once deployed.
91
+ */
92
+ allowSuckerDeployment?: boolean;
74
93
  }): REVStageConfig;
75
94
  /**
76
95
  * Build a `REVDeployer.deployFor` transaction request deploying a new revnet
@@ -1 +1 @@
1
- {"version":3,"file":"revnets.d.ts","sourceRoot":"","sources":["../../../src/v6/revnets.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"revnets.d.ts","sourceRoot":"","sources":["../../../src/v6/revnets.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -1,5 +1,13 @@
1
1
  import { revDeployerAbi, revOwnerAbi } from "../generated/juicebox.js";
2
2
  import { v6Address } from "./types.js";
3
+ /**
4
+ * Ruleset `extraMetadata` bit 2: allows `REVDeployer.deploySuckersFor` to extend
5
+ * the revnet to new chains while the stage is active (the deployer checks
6
+ * `(metadata >> 2) & 1`). `extraMetadata` is folded into the revnet's immutable
7
+ * encoded-configuration hash, so a stage without this bit can NEVER be extended —
8
+ * there is no later fix.
9
+ */
10
+ export const REV_METADATA_ALLOW_SUCKER_DEPLOYMENT = 1 << 2;
3
11
  /**
4
12
  * Build a `REVStageConfig` (spec-exact encodings, documented per field).
5
13
  *
@@ -22,10 +30,18 @@ import { v6Address } from "./types.js";
22
30
  * - `issuanceCutPercent`: how much issuance drops each period, out of 1e9
23
31
  * (`MAX_WEIGHT_CUT_PERCENT`; e.g. 20% = 200,000,000).
24
32
  * - `cashOutTaxRate`: out of 10,000 (`MAX_CASH_OUT_TAX_RATE`). Any non-zero
25
- * rate makes EVERY cash out incur the 2.5% protocol fee.
26
- * - `extraMetadata`: extra metadata bits forwarded to hooks; 0 by default.
33
+ * rate makes EVERY cash out incur the 2.5% protocol fee; zero-tax cash outs
34
+ * still pay it on `min(reclaimAmount, feeFreeSurplusOf)`, which is often
35
+ * but not always zero.
36
+ * - `extraMetadata`: extra metadata bits forwarded to hooks.
37
+ * {@link REV_METADATA_ALLOW_SUCKER_DEPLOYMENT} (bit 2) is ORed in by default
38
+ * so the revnet stays extendable to new chains; pass
39
+ * `allowSuckerDeployment: false` to opt out PERMANENTLY for the stage.
27
40
  */
28
41
  export function buildRevnetStageConfig(args) {
42
+ const extraMetadata = args.allowSuckerDeployment === false
43
+ ? (args.extraMetadata ?? 0)
44
+ : (args.extraMetadata ?? 0) | REV_METADATA_ALLOW_SUCKER_DEPLOYMENT;
29
45
  return {
30
46
  startsAtOrAfter: args.startsAtOrAfter,
31
47
  autoIssuances: args.autoIssuances ?? [],
@@ -35,7 +51,7 @@ export function buildRevnetStageConfig(args) {
35
51
  issuanceCutFrequency: args.issuanceCutFrequency ?? 0,
36
52
  issuanceCutPercent: args.issuanceCutPercent ?? 0,
37
53
  cashOutTaxRate: args.cashOutTaxRate ?? 0,
38
- extraMetadata: args.extraMetadata ?? 0,
54
+ extraMetadata,
39
55
  };
40
56
  }
41
57
  /**
@@ -66,6 +82,21 @@ export function buildRevnetStageConfig(args) {
66
82
  export function buildDeployRevnetTx(args) {
67
83
  const address = v6Address("REVDeployer", args.chainId);
68
84
  const revnetId = args.revnetId ?? 0n;
85
+ // An omnichain revnet whose stages lack the sucker-deployment bit can never
86
+ // be extended to new chains (or have failed sucker deploys retried): stages
87
+ // are immutable and `deploySuckersFor` checks the CURRENT stage's bit. Refuse
88
+ // to encode that foot-gun — `buildRevnetStageConfig` sets the bit by default.
89
+ if (args.suckerConfig.deployerConfigurations.length > 0) {
90
+ const blockedStage = args.config.stageConfigurations.findIndex((stage) => (Number(stage.extraMetadata) & REV_METADATA_ALLOW_SUCKER_DEPLOYMENT) ===
91
+ 0);
92
+ if (blockedStage !== -1) {
93
+ throw new Error(`Stage ${blockedStage} does not set REV_METADATA_ALLOW_SUCKER_DEPLOYMENT ` +
94
+ `(extraMetadata bit 2), so this cross-chain revnet could never deploy ` +
95
+ `suckers during that stage — permanently. Build stages with ` +
96
+ `buildRevnetStageConfig (which sets the bit by default), or OR the bit ` +
97
+ `into extraMetadata.`);
98
+ }
99
+ }
69
100
  // The deployer forwards msg.value to `JBProjects.createFor` for new revnets and
70
101
  // reverts on any value when initializing an existing project.
71
102
  if (revnetId === 0n && args.creationFee === undefined) {