@bananapus/permission-ids-v6 0.0.16 → 0.0.17

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.
package/ADMINISTRATION.md CHANGED
@@ -35,7 +35,7 @@ There are no ownable contracts, no upgrade mechanisms, and no mutable state. The
35
35
 
36
36
  ## Permission IDs
37
37
 
38
- All 39 defined permission IDs and what they control:
38
+ All 40 defined permission IDs and what they control:
39
39
 
40
40
  | ID | Constant | Used By | What It Controls |
41
41
  |----|----------|---------|-----------------|
@@ -61,25 +61,26 @@ All 39 defined permission IDs and what they control:
61
61
  | 20 | `ADD_PRICE_FEED` | nana-core (`JBController`) | `JBController.addPriceFeedFor` (which internally calls `JBPrices.addPriceFeedFor`) -- add a price feed for a project. |
62
62
  | 21 | `ADD_ACCOUNTING_CONTEXTS` | nana-core (`JBMultiTerminal`) | `JBMultiTerminal.addAccountingContextsFor` -- add accepted tokens to a terminal. |
63
63
  | 22 | `SET_TOKEN_METADATA` | nana-core (`JBController`) | `JBController.setTokenMetadataOf` -- set a project token's name and symbol. |
64
- | 23 | `ADJUST_721_TIERS` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.adjustTiers` -- add or remove NFT tiers. |
65
- | 24 | `SET_721_METADATA` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.setMetadata` -- set NFT metadata URIs. |
66
- | 25 | `MINT_721` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.mintFor` -- manually mint NFTs to a beneficiary. |
67
- | 26 | `SET_721_DISCOUNT_PERCENT` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.setDiscountPercentOf` -- set discount percent on NFT tiers. |
68
- | 27 | `SET_BUYBACK_TWAP` | nana-buyback-hook (`JBBuybackHook`) | `JBBuybackHook.setTwapWindowOf` -- configure the TWAP oracle window. |
69
- | 28 | `SET_BUYBACK_POOL` | nana-buyback-hook (`JBBuybackHook`) | `JBBuybackHook.setPoolFor` -- set the Uniswap pool for buybacks. |
70
- | 29 | `SET_BUYBACK_HOOK` | nana-buyback-hook (`JBBuybackHookRegistry`) | `JBBuybackHookRegistry.setHookFor` and `lockHookFor` -- configure and permanently lock the buyback hook. |
71
- | 30 | `SET_ROUTER_TERMINAL` | nana-router-terminal (`JBRouterTerminalRegistry`) | `JBRouterTerminalRegistry.setTerminalFor` and `lockTerminalFor` -- configure and permanently lock the router terminal. |
72
- | 31 | `MAP_SUCKER_TOKEN` | nana-suckers (`JBSucker`) | `JBSucker.mapToken` -- map an ERC-20 to its remote chain counterpart. Immutable once the outbox tree has entries. |
73
- | 32 | `DEPLOY_SUCKERS` | nana-suckers (`JBSuckerRegistry`) | `JBSuckerRegistry.deploySuckersFor` -- deploy sucker contracts for cross-chain bridging. |
74
- | 33 | `SUCKER_SAFETY` | nana-suckers (`JBSucker`) | `JBSucker.enableEmergencyHatchFor` -- enable the emergency hatch to recover stuck tokens. |
75
- | 34 | `SET_SUCKER_DEPRECATION` | nana-suckers (`JBSucker`) | `JBSucker.setDeprecation` -- set deprecation status (ENABLED, DEPRECATION_PENDING, SENDING_DISABLED, DEPRECATED). |
76
- | 35 | `HIDE_TOKENS` | revnet-core (`REVHiddenTokens`) | `REVHiddenTokens.hideTokensOf` -- hide (burn) tokens on behalf of a holder. Checked against the **token holder**. |
77
- | 36 | `OPEN_LOAN` | revnet-core (`REVLoans`) | `REVLoans.borrowFrom` -- open a loan on behalf of a token holder. Checked against the **token holder**. |
78
- | 37 | `REALLOCATE_LOAN` | revnet-core (`REVLoans`) | `REVLoans.reallocateCollateralFromLoan` -- reallocate loan collateral on behalf of a loan NFT owner. Checked against the **loan NFT owner**. |
79
- | 38 | `REPAY_LOAN` | revnet-core (`REVLoans`) | `REVLoans.repayLoan` -- repay a loan on behalf of a loan NFT owner. Checked against the **loan NFT owner**. |
80
- | 39 | `REVEAL_TOKENS` | revnet-core (`REVHiddenTokens`) | `REVHiddenTokens.revealTokensOf` -- reveal (re-mint) hidden tokens on behalf of a holder. Checked against the **token holder**. |
81
-
82
- IDs 0 and 40-255 are unused. ID 0 is reserved and cannot be set. IDs 40-255 are available for future ecosystem extensions.
64
+ | 23 | `SIGN_FOR_ERC20` | nana-core (`JBERC20`) | Sign messages on behalf of a project's ERC-20 token via ERC-1271. Used for Etherscan contract verification and other off-chain signature validation. |
65
+ | 24 | `ADJUST_721_TIERS` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.adjustTiers` -- add or remove NFT tiers. |
66
+ | 25 | `SET_721_METADATA` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.setMetadata` -- set NFT metadata URIs. |
67
+ | 26 | `MINT_721` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.mintFor` -- manually mint NFTs to a beneficiary. |
68
+ | 27 | `SET_721_DISCOUNT_PERCENT` | nana-721-hook (`JB721TiersHook`) | `JB721TiersHook.setDiscountPercentOf` -- set discount percent on NFT tiers. |
69
+ | 28 | `SET_BUYBACK_TWAP` | nana-buyback-hook (`JBBuybackHook`) | `JBBuybackHook.setTwapWindowOf` -- configure the TWAP oracle window. |
70
+ | 29 | `SET_BUYBACK_POOL` | nana-buyback-hook (`JBBuybackHook`) | `JBBuybackHook.setPoolFor` -- set the Uniswap pool for buybacks. |
71
+ | 30 | `SET_BUYBACK_HOOK` | nana-buyback-hook (`JBBuybackHookRegistry`) | `JBBuybackHookRegistry.setHookFor` and `lockHookFor` -- configure and permanently lock the buyback hook. |
72
+ | 31 | `SET_ROUTER_TERMINAL` | nana-router-terminal (`JBRouterTerminalRegistry`) | `JBRouterTerminalRegistry.setTerminalFor` and `lockTerminalFor` -- configure and permanently lock the router terminal. |
73
+ | 32 | `MAP_SUCKER_TOKEN` | nana-suckers (`JBSucker`) | `JBSucker.mapToken` -- map an ERC-20 to its remote chain counterpart. Immutable once the outbox tree has entries. |
74
+ | 33 | `DEPLOY_SUCKERS` | nana-suckers (`JBSuckerRegistry`) | `JBSuckerRegistry.deploySuckersFor` -- deploy sucker contracts for cross-chain bridging. |
75
+ | 34 | `SUCKER_SAFETY` | nana-suckers (`JBSucker`) | `JBSucker.enableEmergencyHatchFor` -- enable the emergency hatch to recover stuck tokens. |
76
+ | 35 | `SET_SUCKER_DEPRECATION` | nana-suckers (`JBSucker`) | `JBSucker.setDeprecation` -- set deprecation status (ENABLED, DEPRECATION_PENDING, SENDING_DISABLED, DEPRECATED). |
77
+ | 36 | `HIDE_TOKENS` | revnet-core (`REVHiddenTokens`) | `REVHiddenTokens.hideTokensOf` -- hide (burn) tokens on behalf of a holder. Checked against the **token holder**. |
78
+ | 37 | `OPEN_LOAN` | revnet-core (`REVLoans`) | `REVLoans.borrowFrom` -- open a loan on behalf of a token holder. Checked against the **token holder**. |
79
+ | 38 | `REALLOCATE_LOAN` | revnet-core (`REVLoans`) | `REVLoans.reallocateCollateralFromLoan` -- reallocate loan collateral on behalf of a loan NFT owner. Checked against the **loan NFT owner**. |
80
+ | 39 | `REPAY_LOAN` | revnet-core (`REVLoans`) | `REVLoans.repayLoan` -- repay a loan on behalf of a loan NFT owner. Checked against the **loan NFT owner**. |
81
+ | 40 | `REVEAL_TOKENS` | revnet-core (`REVHiddenTokens`) | `REVHiddenTokens.revealTokensOf` -- reveal (re-mint) hidden tokens on behalf of a holder. Checked against the **token holder**. |
82
+
83
+ IDs 0 and 41-255 are unused. ID 0 is reserved and cannot be set. IDs 41-255 are available for future ecosystem extensions.
83
84
 
84
85
  ## ROOT Permission
85
86
 
@@ -123,8 +124,8 @@ Some permissions warrant extra caution when granting:
123
124
  - **`ROOT` (1):** Full access to all gated functions for a project.
124
125
  - **`SET_TERMINALS` (15):** Can remove the primary terminal, breaking payments and cashouts.
125
126
  - **`USE_ALLOWANCE` (18):** Can send surplus funds to any address.
126
- - **`SET_BUYBACK_HOOK` (29):** Can permanently lock the buyback hook configuration.
127
- - **`SET_ROUTER_TERMINAL` (30):** Can permanently lock the router terminal configuration.
127
+ - **`SET_BUYBACK_HOOK` (30):** Can permanently lock the buyback hook configuration.
128
+ - **`SET_ROUTER_TERMINAL` (31):** Can permanently lock the router terminal configuration.
128
129
  - **`MINT_TOKENS` (10):** Can inflate token supply (subject to ruleset allowing owner minting).
129
130
 
130
131
  ## Holder vs. Owner Permissions
@@ -137,10 +138,10 @@ Most permissions are checked against the **project owner** (the account that own
137
138
  | `BURN_TOKENS` (11) | Token holder |
138
139
  | `CLAIM_TOKENS` (12) | Token holder |
139
140
  | `TRANSFER_CREDITS` (13) | Token holder |
140
- | `HIDE_TOKENS` (35) | Token holder |
141
- | `OPEN_LOAN` (36) | Token holder |
142
- | `REALLOCATE_LOAN` (37) | Loan NFT owner |
143
- | `REPAY_LOAN` (38) | Loan NFT owner |
144
- | `REVEAL_TOKENS` (39) | Token holder |
141
+ | `HIDE_TOKENS` (36) | Token holder |
142
+ | `OPEN_LOAN` (37) | Token holder |
143
+ | `REALLOCATE_LOAN` (38) | Loan NFT owner |
144
+ | `REPAY_LOAN` (39) | Loan NFT owner |
145
+ | `REVEAL_TOKENS` (40) | Token holder |
145
146
 
146
147
  This means a token holder can grant an operator permission to cash out, burn, claim, transfer, hide, reveal, or borrow against their own tokens -- independent of the project owner's permissions. Loan NFT owners can similarly grant operators permission to repay or reallocate their loans.
@@ -19,7 +19,8 @@ In scope:
19
19
  1. Each permission semantic has one stable numeric ID.
20
20
  2. No two distinct permissions share an ID.
21
21
  3. IDs match the expectations of all dependent repos in this workspace.
22
- 4. IDs 35-39 (revnet-core delegation: `HIDE_TOKENS`, `OPEN_LOAN`, `REALLOCATE_LOAN`, `REPAY_LOAN`, `REVEAL_TOKENS`) are consumed by `revnet-core-v6` — verify they match the values used in `REVHiddenTokens` and `REVLoans`.
22
+ 4. ID 23 (`SIGN_FOR_ERC20`) is consumed by `nana-core-v6` (`JBERC20`) — verify it matches the value used for ERC-1271 signature delegation.
23
+ 5. IDs 36-40 (revnet-core delegation: `HIDE_TOKENS`, `OPEN_LOAN`, `REALLOCATE_LOAN`, `REPAY_LOAN`, `REVEAL_TOKENS`) are consumed by `revnet-core-v6` — verify they match the values used in `REVHiddenTokens` and `REVLoans`.
23
24
 
24
25
  ## Threat Model
25
26
 
package/CHANGELOG.md CHANGED
@@ -15,13 +15,17 @@ This file describes the verified change from `nana-permission-ids-v5` to the cur
15
15
  - The old swap-terminal-specific permissions are gone because the deployed ecosystem no longer centers on `nana-swap-terminal-v5`.
16
16
  - `SUCKER_SAFETY` no longer covers every safety action by itself. `SET_SUCKER_DEPRECATION` is its own permission in v6.
17
17
 
18
- ## v6 additions: revnet-core delegation (IDs 35–39)
18
+ ## v6 additions: nana-core ERC-1271 delegation (ID 23)
19
19
 
20
- - `HIDE_TOKENS` (35) — hide tokens on behalf of a holder via `REVHiddenTokens.hideTokensOf`. Checked against the token holder.
21
- - `OPEN_LOAN` (36) — open a loan on behalf of a token holder via `REVLoans.borrowFrom`. Checked against the token holder.
22
- - `REALLOCATE_LOAN` (37) reallocate loan collateral on behalf of a loan NFT owner via `REVLoans.reallocateCollateralFromLoan`. Checked against the loan NFT owner.
23
- - `REPAY_LOAN` (38) — repay a loan on behalf of a loan NFT owner via `REVLoans.repayLoan`. Checked against the loan NFT owner.
24
- - `REVEAL_TOKENS` (39) — reveal hidden tokens on behalf of a holder via `REVHiddenTokens.revealTokensOf`. Checked against the token holder.
20
+ - `SIGN_FOR_ERC20` (23) — sign messages on behalf of a project's ERC-20 token via ERC-1271. Used for Etherscan contract verification and other off-chain signature validation.
21
+
22
+ ## v6 additions: revnet-core delegation (IDs 36–40)
23
+
24
+ - `HIDE_TOKENS` (36) — hide tokens on behalf of a holder via `REVHiddenTokens.hideTokensOf`. Checked against the token holder.
25
+ - `OPEN_LOAN` (37) — open a loan on behalf of a token holder via `REVLoans.borrowFrom`. Checked against the token holder.
26
+ - `REALLOCATE_LOAN` (38) — reallocate loan collateral on behalf of a loan NFT owner via `REVLoans.reallocateCollateralFromLoan`. Checked against the loan NFT owner.
27
+ - `REPAY_LOAN` (39) — repay a loan on behalf of a loan NFT owner via `REVLoans.repayLoan`. Checked against the loan NFT owner.
28
+ - `REVEAL_TOKENS` (40) — reveal hidden tokens on behalf of a holder via `REVHiddenTokens.revealTokensOf`. Checked against the token holder.
25
29
 
26
30
  These are consumed by `revnet-core-v6` and checked via `JBPermissioned._requirePermissionFrom` (for `REVHiddenTokens`) or inline `PERMISSIONS.hasPermission` calls (for `REVLoans`).
27
31
 
package/README.md CHANGED
@@ -19,12 +19,12 @@ If the question is "who can do this action?" you will still need `JBPermissions`
19
19
  | Range | Area |
20
20
  | --- | --- |
21
21
  | `1` | global `ROOT` permission |
22
- | `2-22` | core protocol permissions |
23
- | `23-26` | 721 hook permissions |
24
- | `27-29` | buyback hook permissions |
25
- | `30` | router terminal permission |
26
- | `31-34` | sucker and omnichain permissions |
27
- | `35-39` | revnet-core permissions (hidden tokens, loans) |
22
+ | `2-23` | core protocol permissions |
23
+ | `24-27` | 721 hook permissions |
24
+ | `28-30` | buyback hook permissions |
25
+ | `31` | router terminal permission |
26
+ | `32-35` | sucker and omnichain permissions |
27
+ | `36-40` | revnet-core permissions (hidden tokens, loans) |
28
28
 
29
29
  The exact constants live in `src/JBPermissionIds.sol`.
30
30
 
package/RISKS.md CHANGED
@@ -19,17 +19,18 @@ Constants-only library defining permission ID values used throughout the Juicebo
19
19
  ## 1. Known Risks
20
20
 
21
21
  - **ROOT permission (ID 1).** ROOT grants all permissions across every contract. Any address granted ROOT can perform any permissioned operation on any project. Should never be granted to untrusted addresses.
22
- - **SET_BUYBACK_HOOK includes lock (ID 29).** Gates both `setHookFor` and `lockHookFor`. An operator with this permission can permanently lock the buyback hook configuration.
23
- - **SET_ROUTER_TERMINAL includes lock (ID 30).** Gates both `setTerminalFor` and `lockTerminalFor`. An operator can permanently lock the router terminal.
22
+ - **SET_BUYBACK_HOOK includes lock (ID 30).** Gates both `setHookFor` and `lockHookFor`. An operator with this permission can permanently lock the buyback hook configuration.
23
+ - **SET_ROUTER_TERMINAL includes lock (ID 31).** Gates both `setTerminalFor` and `lockTerminalFor`. An operator can permanently lock the router terminal.
24
24
  - **ID collision risk.** Permission IDs are manually assigned sequential uint8 values. Adding new IDs requires coordination to avoid collision. Library is append-only.
25
25
  - **No runtime enforcement.** This library only defines constants. Enforcement happens in consuming contracts. A mismatch between the ID used here and the ID checked in a consumer would silently fail.
26
26
  - **High-impact permission IDs (fund-moving).** IDs that control fund flow should receive the most audit scrutiny: `ROOT` (1, grants everything), `CASH_OUT_TOKENS` (4, triggers withdrawals), `SEND_PAYOUTS` (5, triggers payout distribution), `MIGRATE_TERMINAL` (6, moves balances), `SET_TERMINALS` (15, redirects all fund flows), `USE_ALLOWANCE` (18, draws from surplus), `SET_SPLIT_GROUPS` (19, controls where payouts go). Of these, ROOT + SET_TERMINALS + MIGRATE_TERMINAL are the most dangerous — they can redirect all of a project's funds.
27
+ - **SIGN_FOR_ERC20 (ID 23).** Grants permission to sign messages on behalf of a project's ERC-20 token via ERC-1271. Used for Etherscan contract verification and other off-chain signature validation. Should only be granted to trusted addresses since it controls the token's signing authority.
27
28
  - **Wildcard `projectId=0` semantics.** When a permission is granted with `projectId=0`, it applies to ALL projects. This is used by system contracts (e.g., `REVLoans` gets `USE_ALLOWANCE` with `projectId=0`). A bug in a contract holding wildcard permissions affects every project in the ecosystem, not just one. Only system-level contracts should hold wildcard permissions.
28
29
 
29
30
  ## 2. Design Notes
30
31
 
31
32
  - Permission 0 is reserved and cannot be set.
32
- - IDs are `uint8` (0-255), with 1-39 currently assigned.
33
- - IDs 35-39 are used by `revnet-core-v6` for operator delegation: `HIDE_TOKENS` (35), `OPEN_LOAN` (36), `REALLOCATE_LOAN` (37), `REPAY_LOAN` (38), `REVEAL_TOKENS` (39).
34
- - IDs 40-255 are available for ecosystem extensions. Third-party contracts can define their own permission IDs in this range, but must coordinate to avoid collisions. No on-chain registry exists for custom IDs — collision detection is purely social.
33
+ - IDs are `uint8` (0-255), with 1-40 currently assigned.
34
+ - IDs 36-40 are used by `revnet-core-v6` for operator delegation: `HIDE_TOKENS` (36), `OPEN_LOAN` (37), `REALLOCATE_LOAN` (38), `REPAY_LOAN` (39), `REVEAL_TOKENS` (40).
35
+ - IDs 41-255 are available for ecosystem extensions. Third-party contracts can define their own permission IDs in this range, but must coordinate to avoid collisions. No on-chain registry exists for custom IDs — collision detection is purely social.
35
36
  - This library has zero dependencies -- it is the leaf of the dependency graph.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bananapus/permission-ids-v6",
3
- "version": "0.0.16",
3
+ "version": "0.0.17",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,21 +34,24 @@ library JBPermissionIds {
34
34
  // `JBMultiTerminal.addAccountingContextsFor`.
35
35
  uint8 internal constant SET_TOKEN_METADATA = 22; // Permission to call
36
36
  // `JBController.setTokenMetadataOf`.
37
+ /// @notice Permission to sign messages on behalf of a project's ERC-20 token via ERC-1271.
38
+ /// @dev Used for Etherscan contract verification and other off-chain signature validation.
39
+ uint8 internal constant SIGN_FOR_ERC20 = 23;
37
40
 
38
41
  /* Used by `nana-721-hook`: https://github.com/Bananapus/nana-721-hook */
39
- uint8 internal constant ADJUST_721_TIERS = 23; // Permission to call `JB721TiersHook.adjustTiers`.
40
- uint8 internal constant SET_721_METADATA = 24; // Permission to call `JB721TiersHook.setMetadata`.
41
- uint8 internal constant MINT_721 = 25; // Permission to call `JB721TiersHook.mintFor`.
42
- uint8 internal constant SET_721_DISCOUNT_PERCENT = 26; // Permission to call `JB721TiersHook.setDiscountPercentOf`.
42
+ uint8 internal constant ADJUST_721_TIERS = 24; // Permission to call `JB721TiersHook.adjustTiers`.
43
+ uint8 internal constant SET_721_METADATA = 25; // Permission to call `JB721TiersHook.setMetadata`.
44
+ uint8 internal constant MINT_721 = 26; // Permission to call `JB721TiersHook.mintFor`.
45
+ uint8 internal constant SET_721_DISCOUNT_PERCENT = 27; // Permission to call `JB721TiersHook.setDiscountPercentOf`.
43
46
 
44
47
  /* Used by `nana-buyback-hook`: https://github.com/Bananapus/nana-buyback-hook */
45
- uint8 internal constant SET_BUYBACK_TWAP = 27; // Permission to call `JBBuybackHook.setTwapWindowOf`.
46
- uint8 internal constant SET_BUYBACK_POOL = 28; // Permission to call `JBBuybackHook.setPoolFor`.
48
+ uint8 internal constant SET_BUYBACK_TWAP = 28; // Permission to call `JBBuybackHook.setTwapWindowOf`.
49
+ uint8 internal constant SET_BUYBACK_POOL = 29; // Permission to call `JBBuybackHook.setPoolFor`.
47
50
  /// @dev This single ID intentionally gates both setting and locking the buyback hook as a simplification.
48
51
  /// Granting this permission allows the operator to call both `JBBuybackHookRegistry.setHookFor` (to configure the
49
52
  /// hook) and `JBBuybackHookRegistry.lockHookFor` (to permanently lock the hook configuration). Project owners
50
53
  /// should be aware that an operator with this permission can lock the hook, preventing future changes.
51
- uint8 internal constant SET_BUYBACK_HOOK = 29; // Permission to call `JBBuybackHookRegistry.setHookFor` and
54
+ uint8 internal constant SET_BUYBACK_HOOK = 30; // Permission to call `JBBuybackHookRegistry.setHookFor` and
52
55
  // `JBBuybackHookRegistry.lockHookFor`.
53
56
 
54
57
  /* Used by `nana-router-terminal`: https://github.com/Bananapus/nana-router-terminal-v6 */
@@ -57,25 +60,25 @@ library JBPermissionIds {
57
60
  /// configure the terminal) and `JBRouterTerminalRegistry.lockTerminalFor` (to permanently lock the terminal
58
61
  /// configuration). Project owners should be aware that an operator with this permission can lock the terminal,
59
62
  /// preventing future changes.
60
- uint8 internal constant SET_ROUTER_TERMINAL = 30; // Permission to call
63
+ uint8 internal constant SET_ROUTER_TERMINAL = 31; // Permission to call
61
64
  // `JBRouterTerminalRegistry.setTerminalFor` and `JBRouterTerminalRegistry.lockTerminalFor`.
62
65
 
63
66
  /* Used by `nana-suckers`: https://github.com/Bananapus/nana-suckers */
64
- uint8 internal constant MAP_SUCKER_TOKEN = 31; // Permission to call `JBSucker.mapToken`.
65
- uint8 internal constant DEPLOY_SUCKERS = 32; // Permission to call `JBSuckerRegistry.deploySuckersFor`.
66
- uint8 internal constant SUCKER_SAFETY = 33; // Permission to call `JBSucker.enableEmergencyHatchFor`.
67
- uint8 internal constant SET_SUCKER_DEPRECATION = 34; // Permission to call `JBSucker.setDeprecation`.
67
+ uint8 internal constant MAP_SUCKER_TOKEN = 32; // Permission to call `JBSucker.mapToken`.
68
+ uint8 internal constant DEPLOY_SUCKERS = 33; // Permission to call `JBSuckerRegistry.deploySuckersFor`.
69
+ uint8 internal constant SUCKER_SAFETY = 34; // Permission to call `JBSucker.enableEmergencyHatchFor`.
70
+ uint8 internal constant SET_SUCKER_DEPRECATION = 35; // Permission to call `JBSucker.setDeprecation`.
68
71
 
69
72
  /* Used by `revnet-core`: https://github.com/Bananapus/revnet-core */
70
73
  /// @notice Permission to hide or reveal tokens on behalf of a holder via `REVHiddenTokens`.
71
- uint8 internal constant HIDE_TOKENS = 35;
74
+ uint8 internal constant HIDE_TOKENS = 36;
72
75
  /// @notice Permission to open a loan on behalf of a token holder via `REVLoans.borrowFrom`.
73
- uint8 internal constant OPEN_LOAN = 36;
76
+ uint8 internal constant OPEN_LOAN = 37;
74
77
  /// @notice Permission to reallocate loan collateral on behalf of a loan owner via
75
78
  /// `REVLoans.reallocateCollateralFromLoan`.
76
- uint8 internal constant REALLOCATE_LOAN = 37;
79
+ uint8 internal constant REALLOCATE_LOAN = 38;
77
80
  /// @notice Permission to repay a loan on behalf of a loan owner via `REVLoans.repayLoan`.
78
- uint8 internal constant REPAY_LOAN = 38;
81
+ uint8 internal constant REPAY_LOAN = 39;
79
82
  /// @notice Permission to reveal hidden tokens on behalf of a holder via `REVHiddenTokens`.
80
- uint8 internal constant REVEAL_TOKENS = 39;
83
+ uint8 internal constant REVEAL_TOKENS = 40;
81
84
  }