@bananapus/721-hook-v6 0.0.28 → 0.0.30

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 (46) hide show
  1. package/ADMINISTRATION.md +38 -11
  2. package/ARCHITECTURE.md +53 -99
  3. package/AUDIT_INSTRUCTIONS.md +84 -383
  4. package/CHANGELOG.md +71 -0
  5. package/README.md +79 -225
  6. package/RISKS.md +28 -11
  7. package/SKILLS.md +29 -296
  8. package/STYLE_GUIDE.md +57 -18
  9. package/USER_JOURNEYS.md +57 -501
  10. package/package.json +1 -1
  11. package/references/operations.md +28 -0
  12. package/references/runtime.md +32 -0
  13. package/script/Deploy.s.sol +5 -4
  14. package/src/JB721TiersHook.sol +1 -1
  15. package/src/JB721TiersHookDeployer.sol +1 -1
  16. package/src/JB721TiersHookProjectDeployer.sol +1 -1
  17. package/src/JB721TiersHookStore.sol +23 -17
  18. package/src/libraries/JB721Constants.sol +1 -1
  19. package/src/libraries/JB721TiersRulesetMetadataResolver.sol +1 -1
  20. package/src/libraries/JBBitmap.sol +1 -1
  21. package/src/libraries/JBIpfsDecoder.sol +1 -1
  22. package/src/structs/JB721Tier.sol +5 -11
  23. package/src/structs/JB721TierConfig.sol +5 -20
  24. package/src/structs/JB721TierConfigFlags.sol +26 -0
  25. package/src/structs/JB721TierFlags.sol +17 -0
  26. package/test/721HookAttacks.t.sol +22 -17
  27. package/test/E2E/Pay_Mint_Redeem_E2E.t.sol +19 -14
  28. package/test/Fork.t.sol +69 -54
  29. package/test/TestAuditGaps.sol +73 -56
  30. package/test/TestSafeTransferReentrancy.t.sol +4 -4
  31. package/test/TestVotingUnitsLifecycle.t.sol +11 -11
  32. package/test/audit/CodexPayCreditsBypassTierSplits.t.sol +10 -7
  33. package/test/audit/CodexSplitCreditsMismatch.t.sol +10 -7
  34. package/test/fork/ERC20CashOutFork.t.sol +37 -28
  35. package/test/fork/ERC20TierSplitFork.t.sol +28 -21
  36. package/test/fork/IssueTokensForSplitsFork.t.sol +10 -7
  37. package/test/invariants/handlers/TierLifecycleHandler.sol +10 -7
  38. package/test/invariants/handlers/TierStoreHandler.sol +10 -7
  39. package/test/regression/ProjectDeployerRulesets.t.sol +10 -7
  40. package/test/regression/ReserveBeneficiaryOverwrite.t.sol +6 -6
  41. package/test/unit/AuditFixes_Unit.t.sol +37 -28
  42. package/test/unit/adjustTier_Unit.t.sol +268 -202
  43. package/test/unit/getters_constructor_Unit.t.sol +20 -14
  44. package/test/unit/mintFor_mintReservesFor_Unit.t.sol +2 -2
  45. package/test/unit/pay_Unit.t.sol +1 -1
  46. package/CHANGE_LOG.md +0 -359
@@ -80,6 +80,7 @@ import "../../src/structs/JBLaunchProjectConfig.sol";
80
80
  import "../../src/structs/JBPayDataHookRulesetConfig.sol";
81
81
  // forge-lint: disable-next-line(unaliased-plain-import)
82
82
  import "../../src/structs/JBPayDataHookRulesetMetadata.sol";
83
+ import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
83
84
 
84
85
  /// @notice Mock ERC20 with 6 decimals (USDC-like).
85
86
  contract MockUSDC6_CashOut is ERC20 {
@@ -349,13 +350,15 @@ contract ERC20CashOutFork is Test {
349
350
  encodedIPFSUri: bytes32("tier1"),
350
351
  category: 1,
351
352
  discountPercent: 0,
352
- allowOwnerMint: false,
353
- useReserveBeneficiaryAsDefault: false,
354
- transfersPausable: false,
355
- useVotingUnits: false,
356
- cantBeRemoved: false,
357
- cantIncreaseDiscountPercent: false,
358
- cantBuyWithCredits: false,
353
+ flags: JB721TierConfigFlags({
354
+ allowOwnerMint: false,
355
+ useReserveBeneficiaryAsDefault: false,
356
+ transfersPausable: false,
357
+ useVotingUnits: false,
358
+ cantBeRemoved: false,
359
+ cantIncreaseDiscountPercent: false,
360
+ cantBuyWithCredits: false
361
+ }),
359
362
  splitPercent: 0,
360
363
  splits: new JBSplit[](0)
361
364
  });
@@ -435,13 +438,15 @@ contract ERC20CashOutFork is Test {
435
438
  encodedIPFSUri: bytes32("tier1"),
436
439
  category: 1,
437
440
  discountPercent: 0,
438
- allowOwnerMint: false,
439
- useReserveBeneficiaryAsDefault: false,
440
- transfersPausable: false,
441
- useVotingUnits: false,
442
- cantBeRemoved: false,
443
- cantIncreaseDiscountPercent: false,
444
- cantBuyWithCredits: false,
441
+ flags: JB721TierConfigFlags({
442
+ allowOwnerMint: false,
443
+ useReserveBeneficiaryAsDefault: false,
444
+ transfersPausable: false,
445
+ useVotingUnits: false,
446
+ cantBeRemoved: false,
447
+ cantIncreaseDiscountPercent: false,
448
+ cantBuyWithCredits: false
449
+ }),
445
450
  splitPercent: 0,
446
451
  splits: new JBSplit[](0)
447
452
  });
@@ -522,13 +527,15 @@ contract ERC20CashOutFork is Test {
522
527
  encodedIPFSUri: bytes32("tier1"),
523
528
  category: 1,
524
529
  discountPercent: 0,
525
- allowOwnerMint: false,
526
- useReserveBeneficiaryAsDefault: false,
527
- transfersPausable: false,
528
- useVotingUnits: false,
529
- cantBeRemoved: false,
530
- cantIncreaseDiscountPercent: false,
531
- cantBuyWithCredits: false,
530
+ flags: JB721TierConfigFlags({
531
+ allowOwnerMint: false,
532
+ useReserveBeneficiaryAsDefault: false,
533
+ transfersPausable: false,
534
+ useVotingUnits: false,
535
+ cantBeRemoved: false,
536
+ cantIncreaseDiscountPercent: false,
537
+ cantBuyWithCredits: false
538
+ }),
532
539
  splitPercent: 0,
533
540
  splits: new JBSplit[](0)
534
541
  });
@@ -542,13 +549,15 @@ contract ERC20CashOutFork is Test {
542
549
  encodedIPFSUri: bytes32("tier2"),
543
550
  category: 2,
544
551
  discountPercent: 0,
545
- allowOwnerMint: false,
546
- useReserveBeneficiaryAsDefault: false,
547
- transfersPausable: false,
548
- useVotingUnits: false,
549
- cantBeRemoved: false,
550
- cantIncreaseDiscountPercent: false,
551
- cantBuyWithCredits: false,
552
+ flags: JB721TierConfigFlags({
553
+ allowOwnerMint: false,
554
+ useReserveBeneficiaryAsDefault: false,
555
+ transfersPausable: false,
556
+ useVotingUnits: false,
557
+ cantBeRemoved: false,
558
+ cantIncreaseDiscountPercent: false,
559
+ cantBuyWithCredits: false
560
+ }),
552
561
  splitPercent: 0,
553
562
  splits: new JBSplit[](0)
554
563
  });
@@ -80,6 +80,7 @@ import "../../src/structs/JBLaunchProjectConfig.sol";
80
80
  import "../../src/structs/JBPayDataHookRulesetConfig.sol";
81
81
  // forge-lint: disable-next-line(unaliased-plain-import)
82
82
  import "../../src/structs/JBPayDataHookRulesetMetadata.sol";
83
+ import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
83
84
 
84
85
  /// @notice Mock ERC20 with 6 decimals (USDC-like).
85
86
  contract MockUSDC6 is ERC20 {
@@ -402,13 +403,15 @@ contract ERC20TierSplitFork is Test {
402
403
  encodedIPFSUri: bytes32("tier1"),
403
404
  category: 1,
404
405
  discountPercent: 0,
405
- allowOwnerMint: false,
406
- useReserveBeneficiaryAsDefault: false,
407
- transfersPausable: false,
408
- useVotingUnits: false,
409
- cantBeRemoved: false,
410
- cantIncreaseDiscountPercent: false,
411
- cantBuyWithCredits: false,
406
+ flags: JB721TierConfigFlags({
407
+ allowOwnerMint: false,
408
+ useReserveBeneficiaryAsDefault: false,
409
+ transfersPausable: false,
410
+ useVotingUnits: false,
411
+ cantBeRemoved: false,
412
+ cantIncreaseDiscountPercent: false,
413
+ cantBuyWithCredits: false
414
+ }),
412
415
  splitPercent: 300_000_000, // 30%
413
416
  splits: splits
414
417
  });
@@ -472,13 +475,15 @@ contract ERC20TierSplitFork is Test {
472
475
  encodedIPFSUri: bytes32("tier1"),
473
476
  category: 1,
474
477
  discountPercent: 0,
475
- allowOwnerMint: false,
476
- useReserveBeneficiaryAsDefault: false,
477
- transfersPausable: false,
478
- useVotingUnits: false,
479
- cantBeRemoved: false,
480
- cantIncreaseDiscountPercent: false,
481
- cantBuyWithCredits: false,
478
+ flags: JB721TierConfigFlags({
479
+ allowOwnerMint: false,
480
+ useReserveBeneficiaryAsDefault: false,
481
+ transfersPausable: false,
482
+ useVotingUnits: false,
483
+ cantBeRemoved: false,
484
+ cantIncreaseDiscountPercent: false,
485
+ cantBuyWithCredits: false
486
+ }),
482
487
  splitPercent: 300_000_000, // 30%
483
488
  splits: splits
484
489
  });
@@ -540,13 +545,15 @@ contract ERC20TierSplitFork is Test {
540
545
  encodedIPFSUri: bytes32("tier1"),
541
546
  category: 1,
542
547
  discountPercent: 0,
543
- allowOwnerMint: false,
544
- useReserveBeneficiaryAsDefault: false,
545
- transfersPausable: false,
546
- useVotingUnits: false,
547
- cantBeRemoved: false,
548
- cantIncreaseDiscountPercent: false,
549
- cantBuyWithCredits: false,
548
+ flags: JB721TierConfigFlags({
549
+ allowOwnerMint: false,
550
+ useReserveBeneficiaryAsDefault: false,
551
+ transfersPausable: false,
552
+ useVotingUnits: false,
553
+ cantBeRemoved: false,
554
+ cantIncreaseDiscountPercent: false,
555
+ cantBuyWithCredits: false
556
+ }),
550
557
  splitPercent: 500_000_000, // 50%
551
558
  splits: splits
552
559
  });
@@ -78,6 +78,7 @@ import "../../src/structs/JBLaunchProjectConfig.sol";
78
78
  import "../../src/structs/JBPayDataHookRulesetConfig.sol";
79
79
  // forge-lint: disable-next-line(unaliased-plain-import)
80
80
  import "../../src/structs/JBPayDataHookRulesetMetadata.sol";
81
+ import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
81
82
 
82
83
  /// @title IssueTokensForSplitsFork
83
84
  /// @notice Fork tests for the issueTokensForSplits flag in JB721TiersHookFlags.
@@ -349,13 +350,15 @@ contract IssueTokensForSplitsFork is Test {
349
350
  encodedIPFSUri: bytes32("tier1"),
350
351
  category: 1,
351
352
  discountPercent: 0,
352
- allowOwnerMint: false,
353
- useReserveBeneficiaryAsDefault: false,
354
- transfersPausable: false,
355
- useVotingUnits: false,
356
- cantBeRemoved: false,
357
- cantIncreaseDiscountPercent: false,
358
- cantBuyWithCredits: false,
353
+ flags: JB721TierConfigFlags({
354
+ allowOwnerMint: false,
355
+ useReserveBeneficiaryAsDefault: false,
356
+ transfersPausable: false,
357
+ useVotingUnits: false,
358
+ cantBeRemoved: false,
359
+ cantIncreaseDiscountPercent: false,
360
+ cantBuyWithCredits: false
361
+ }),
359
362
  splitPercent: splitPercent,
360
363
  splits: splits
361
364
  });
@@ -11,6 +11,7 @@ import "../../../src/JB721TiersHookStore.sol";
11
11
  import "../../../src/structs/JB721TierConfig.sol";
12
12
  // forge-lint: disable-next-line(unaliased-plain-import)
13
13
  import "../../../src/structs/JB721Tier.sol";
14
+ import {JB721TierConfigFlags} from "../../../src/structs/JB721TierConfigFlags.sol";
14
15
  // forge-lint: disable-next-line(unaliased-plain-import)
15
16
  import "../../../src/interfaces/IJB721TiersHookStore.sol";
16
17
  // forge-lint: disable-next-line(unaliased-plain-import)
@@ -189,13 +190,15 @@ contract TierLifecycleHandler is Test {
189
190
  encodedIPFSUri: bytes32(0),
190
191
  category: uint24(100),
191
192
  discountPercent: 0,
192
- allowOwnerMint: true,
193
- useReserveBeneficiaryAsDefault: false,
194
- transfersPausable: false,
195
- useVotingUnits: false,
196
- cantBeRemoved: false,
197
- cantIncreaseDiscountPercent: false,
198
- cantBuyWithCredits: false,
193
+ flags: JB721TierConfigFlags({
194
+ allowOwnerMint: true,
195
+ useReserveBeneficiaryAsDefault: false,
196
+ transfersPausable: false,
197
+ useVotingUnits: false,
198
+ cantBeRemoved: false,
199
+ cantIncreaseDiscountPercent: false,
200
+ cantBuyWithCredits: false
201
+ }),
199
202
  splitPercent: 0,
200
203
  splits: new JBSplit[](0)
201
204
  });
@@ -7,6 +7,7 @@ import {StdUtils} from "forge-std/StdUtils.sol";
7
7
 
8
8
  import {JB721TiersHookStore} from "../../../src/JB721TiersHookStore.sol";
9
9
  import {JB721TierConfig} from "../../../src/structs/JB721TierConfig.sol";
10
+ import {JB721TierConfigFlags} from "../../../src/structs/JB721TierConfigFlags.sol";
10
11
  // forge-lint: disable-next-line(unused-import)
11
12
  import {JB721TiersHookFlags} from "../../../src/structs/JB721TiersHookFlags.sol";
12
13
  import {JBSplit} from "@bananapus/core-v6/src/structs/JBSplit.sol";
@@ -59,13 +60,15 @@ contract TierStoreHandler is CommonBase, StdCheats, StdUtils {
59
60
  encodedIPFSUri: bytes32(0),
60
61
  category: category,
61
62
  discountPercent: 0,
62
- allowOwnerMint: true,
63
- useReserveBeneficiaryAsDefault: false,
64
- transfersPausable: false,
65
- useVotingUnits: false,
66
- cantBeRemoved: false,
67
- cantIncreaseDiscountPercent: false,
68
- cantBuyWithCredits: false,
63
+ flags: JB721TierConfigFlags({
64
+ allowOwnerMint: true,
65
+ useReserveBeneficiaryAsDefault: false,
66
+ transfersPausable: false,
67
+ useVotingUnits: false,
68
+ cantBeRemoved: false,
69
+ cantIncreaseDiscountPercent: false,
70
+ cantBuyWithCredits: false
71
+ }),
69
72
  splitPercent: 0,
70
73
  splits: new JBSplit[](0)
71
74
  });
@@ -11,6 +11,7 @@ import "../../src/structs/JBLaunchRulesetsConfig.sol";
11
11
  import "../../src/structs/JBQueueRulesetsConfig.sol";
12
12
 
13
13
  import {IJBController} from "@bananapus/core-v6/src/interfaces/IJBController.sol";
14
+ import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
14
15
  import {IJBDirectory} from "@bananapus/core-v6/src/interfaces/IJBDirectory.sol";
15
16
  import {IJBPermissions} from "@bananapus/core-v6/src/interfaces/IJBPermissions.sol";
16
17
  import {JBTerminalConfig} from "@bananapus/core-v6/src/structs/JBTerminalConfig.sol";
@@ -119,13 +120,15 @@ contract Test_ProjectDeployerRulesets is UnitTestSetup {
119
120
  encodedIPFSUri: tokenUris[0],
120
121
  category: uint24(100),
121
122
  discountPercent: uint8(0),
122
- allowOwnerMint: false,
123
- useReserveBeneficiaryAsDefault: false,
124
- transfersPausable: false,
125
- useVotingUnits: true,
126
- cantBeRemoved: false,
127
- cantIncreaseDiscountPercent: false,
128
- cantBuyWithCredits: false,
123
+ flags: JB721TierConfigFlags({
124
+ allowOwnerMint: false,
125
+ useReserveBeneficiaryAsDefault: false,
126
+ transfersPausable: false,
127
+ useVotingUnits: true,
128
+ cantBeRemoved: false,
129
+ cantIncreaseDiscountPercent: false,
130
+ cantBuyWithCredits: false
131
+ }),
129
132
  splitPercent: 0,
130
133
  splits: new JBSplit[](0)
131
134
  });
@@ -27,7 +27,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
27
27
  tier1Configs[0].encodedIPFSUri = bytes32(uint256(0x1234));
28
28
  tier1Configs[0].reserveFrequency = 5;
29
29
  tier1Configs[0].reserveBeneficiary = alice;
30
- tier1Configs[0].useReserveBeneficiaryAsDefault = true;
30
+ tier1Configs[0].flags.useReserveBeneficiaryAsDefault = true;
31
31
 
32
32
  vm.prank(address(testHook));
33
33
  uint256[] memory tier1Ids = hookStore.recordAddTiers(tier1Configs);
@@ -46,7 +46,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
46
46
  tier2Configs[0].encodedIPFSUri = bytes32(uint256(0x5678));
47
47
  tier2Configs[0].reserveFrequency = 5;
48
48
  tier2Configs[0].reserveBeneficiary = bob;
49
- tier2Configs[0].useReserveBeneficiaryAsDefault = false;
49
+ tier2Configs[0].flags.useReserveBeneficiaryAsDefault = false;
50
50
 
51
51
  vm.prank(address(testHook));
52
52
  uint256[] memory tier2Ids = hookStore.recordAddTiers(tier2Configs);
@@ -66,7 +66,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
66
66
  tier3Configs[0].encodedIPFSUri = bytes32(uint256(0x9ABC));
67
67
  tier3Configs[0].reserveFrequency = 5;
68
68
  tier3Configs[0].reserveBeneficiary = bob;
69
- tier3Configs[0].useReserveBeneficiaryAsDefault = true;
69
+ tier3Configs[0].flags.useReserveBeneficiaryAsDefault = true;
70
70
 
71
71
  vm.prank(address(testHook));
72
72
  uint256[] memory tier3Ids = hookStore.recordAddTiers(tier3Configs);
@@ -97,7 +97,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
97
97
  tierConfigs[0].encodedIPFSUri = bytes32(uint256(0x1234));
98
98
  tierConfigs[0].reserveFrequency = 5;
99
99
  tierConfigs[0].reserveBeneficiary = alice;
100
- tierConfigs[0].useReserveBeneficiaryAsDefault = true;
100
+ tierConfigs[0].flags.useReserveBeneficiaryAsDefault = true;
101
101
 
102
102
  // Expect the SetDefaultReserveBeneficiary event.
103
103
  vm.expectEmit(true, true, false, true, address(hookStore));
@@ -122,7 +122,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
122
122
  tier1Configs[0].encodedIPFSUri = bytes32(uint256(0x1234));
123
123
  tier1Configs[0].reserveFrequency = 5;
124
124
  tier1Configs[0].reserveBeneficiary = alice;
125
- tier1Configs[0].useReserveBeneficiaryAsDefault = true;
125
+ tier1Configs[0].flags.useReserveBeneficiaryAsDefault = true;
126
126
 
127
127
  vm.prank(address(testHook));
128
128
  hookStore.recordAddTiers(tier1Configs);
@@ -135,7 +135,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
135
135
  tier2Configs[0].encodedIPFSUri = bytes32(uint256(0x5678));
136
136
  tier2Configs[0].reserveFrequency = 5;
137
137
  tier2Configs[0].reserveBeneficiary = alice;
138
- tier2Configs[0].useReserveBeneficiaryAsDefault = true;
138
+ tier2Configs[0].flags.useReserveBeneficiaryAsDefault = true;
139
139
 
140
140
  // Record the logs to verify no SetDefaultReserveBeneficiary event is emitted.
141
141
  vm.recordLogs();
@@ -4,6 +4,7 @@ pragma solidity 0.8.28;
4
4
  // forge-lint: disable-next-line(unaliased-plain-import)
5
5
  import "../utils/UnitTestSetup.sol";
6
6
  import {IJB721TiersHookStore} from "../../src/interfaces/IJB721TiersHookStore.sol";
7
+ import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
7
8
  import {JBSplit} from "@bananapus/core-v6/src/structs/JBSplit.sol";
8
9
  import {IJBSplitHook} from "@bananapus/core-v6/src/interfaces/IJBSplitHook.sol";
9
10
  import {IJBSplits} from "@bananapus/core-v6/src/interfaces/IJBSplits.sol";
@@ -469,13 +470,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
469
470
  encodedIPFSUri: tokenUris[0],
470
471
  category: uint24(5),
471
472
  discountPercent: uint8(0),
472
- allowOwnerMint: false,
473
- useReserveBeneficiaryAsDefault: false,
474
- transfersPausable: false,
475
- useVotingUnits: false,
476
- cantBeRemoved: false,
477
- cantIncreaseDiscountPercent: false,
478
- cantBuyWithCredits: false,
473
+ flags: JB721TierConfigFlags({
474
+ allowOwnerMint: false,
475
+ useReserveBeneficiaryAsDefault: false,
476
+ transfersPausable: false,
477
+ useVotingUnits: false,
478
+ cantBeRemoved: false,
479
+ cantIncreaseDiscountPercent: false,
480
+ cantBuyWithCredits: false
481
+ }),
479
482
  splitPercent: 0,
480
483
  splits: new JBSplit[](0)
481
484
  });
@@ -488,13 +491,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
488
491
  encodedIPFSUri: tokenUris[1],
489
492
  category: uint24(5),
490
493
  discountPercent: uint8(0),
491
- allowOwnerMint: false,
492
- useReserveBeneficiaryAsDefault: false,
493
- transfersPausable: false,
494
- useVotingUnits: false,
495
- cantBeRemoved: false,
496
- cantIncreaseDiscountPercent: false,
497
- cantBuyWithCredits: false,
494
+ flags: JB721TierConfigFlags({
495
+ allowOwnerMint: false,
496
+ useReserveBeneficiaryAsDefault: false,
497
+ transfersPausable: false,
498
+ useVotingUnits: false,
499
+ cantBeRemoved: false,
500
+ cantIncreaseDiscountPercent: false,
501
+ cantBuyWithCredits: false
502
+ }),
498
503
  splitPercent: 0,
499
504
  splits: new JBSplit[](0)
500
505
  });
@@ -507,13 +512,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
507
512
  encodedIPFSUri: tokenUris[2],
508
513
  category: uint24(5),
509
514
  discountPercent: uint8(0),
510
- allowOwnerMint: false,
511
- useReserveBeneficiaryAsDefault: false,
512
- transfersPausable: false,
513
- useVotingUnits: false,
514
- cantBeRemoved: false,
515
- cantIncreaseDiscountPercent: false,
516
- cantBuyWithCredits: false,
515
+ flags: JB721TierConfigFlags({
516
+ allowOwnerMint: false,
517
+ useReserveBeneficiaryAsDefault: false,
518
+ transfersPausable: false,
519
+ useVotingUnits: false,
520
+ cantBeRemoved: false,
521
+ cantIncreaseDiscountPercent: false,
522
+ cantBuyWithCredits: false
523
+ }),
517
524
  splitPercent: 0,
518
525
  splits: new JBSplit[](0)
519
526
  });
@@ -576,13 +583,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
576
583
  encodedIPFSUri: tokenUris[i],
577
584
  category: uint24(5),
578
585
  discountPercent: uint8(0),
579
- allowOwnerMint: false,
580
- useReserveBeneficiaryAsDefault: false,
581
- transfersPausable: false,
582
- useVotingUnits: false,
583
- cantBeRemoved: false,
584
- cantIncreaseDiscountPercent: false,
585
- cantBuyWithCredits: false,
586
+ flags: JB721TierConfigFlags({
587
+ allowOwnerMint: false,
588
+ useReserveBeneficiaryAsDefault: false,
589
+ transfersPausable: false,
590
+ useVotingUnits: false,
591
+ cantBeRemoved: false,
592
+ cantIncreaseDiscountPercent: false,
593
+ cantBuyWithCredits: false
594
+ }),
586
595
  splitPercent: 0,
587
596
  splits: new JBSplit[](0)
588
597
  });