@rev-net/core-v6 0.0.7 → 0.0.9

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 (59) hide show
  1. package/ADMINISTRATION.md +186 -0
  2. package/ARCHITECTURE.md +87 -0
  3. package/README.md +4 -2
  4. package/RISKS.md +49 -0
  5. package/SKILLS.md +22 -2
  6. package/STYLE_GUIDE.md +482 -0
  7. package/foundry.toml +6 -6
  8. package/package.json +13 -10
  9. package/script/Deploy.s.sol +3 -2
  10. package/src/REVDeployer.sol +129 -72
  11. package/src/REVLoans.sol +174 -165
  12. package/src/interfaces/IREVDeployer.sol +111 -72
  13. package/src/interfaces/IREVLoans.sol +116 -76
  14. package/src/structs/REV721TiersHookFlags.sol +14 -0
  15. package/src/structs/REVBaseline721HookConfig.sol +27 -0
  16. package/src/structs/REVDeploy721TiersHookConfig.sol +2 -2
  17. package/test/REV.integrations.t.sol +4 -3
  18. package/test/REVAutoIssuanceFuzz.t.sol +12 -8
  19. package/test/REVDeployerAuditRegressions.t.sol +4 -3
  20. package/test/REVInvincibility.t.sol +8 -6
  21. package/test/REVInvincibilityHandler.sol +1 -0
  22. package/test/REVLifecycle.t.sol +4 -3
  23. package/test/REVLoans.invariants.t.sol +5 -3
  24. package/test/REVLoansAttacks.t.sol +4 -3
  25. package/test/REVLoansAuditRegressions.t.sol +13 -24
  26. package/test/REVLoansFeeRecovery.t.sol +4 -3
  27. package/test/REVLoansSourced.t.sol +4 -3
  28. package/test/REVLoansUnSourced.t.sol +4 -3
  29. package/test/REVLoans_AuditFindings.t.sol +644 -0
  30. package/test/TestEmptyBuybackSpecs.t.sol +4 -3
  31. package/test/TestPR09_ConversionDocumentation.t.sol +4 -3
  32. package/test/TestPR10_LiquidationBehavior.t.sol +4 -3
  33. package/test/TestPR11_LowFindings.t.sol +4 -3
  34. package/test/TestPR12_FlashLoanSurplus.t.sol +4 -3
  35. package/test/TestPR13_CrossSourceReallocation.t.sol +4 -3
  36. package/test/TestPR15_CashOutCallerValidation.t.sol +4 -3
  37. package/test/TestPR16_ZeroRepayment.t.sol +4 -3
  38. package/test/TestPR21_Uint112Overflow.t.sol +4 -3
  39. package/test/TestPR22_HookArrayOOB.t.sol +4 -3
  40. package/test/TestPR26_BurnHeldTokens.t.sol +4 -3
  41. package/test/TestPR27_CEIPattern.t.sol +4 -3
  42. package/test/TestPR29_SwapTerminalPermission.t.sol +4 -3
  43. package/test/TestPR32_MixedFixes.t.sol +4 -3
  44. package/test/TestSplitWeightAdjustment.t.sol +445 -0
  45. package/test/TestSplitWeightE2E.t.sol +528 -0
  46. package/test/TestSplitWeightFork.t.sol +821 -0
  47. package/test/TestStageTransitionBorrowable.t.sol +4 -3
  48. package/test/fork/ForkTestBase.sol +617 -0
  49. package/test/fork/TestCashOutFork.t.sol +245 -0
  50. package/test/fork/TestLoanBorrowFork.t.sol +163 -0
  51. package/test/fork/TestLoanLiquidationFork.t.sol +129 -0
  52. package/test/fork/TestLoanReallocateFork.t.sol +103 -0
  53. package/test/fork/TestLoanRepayFork.t.sol +184 -0
  54. package/test/fork/TestSplitWeightFork.t.sol +186 -0
  55. package/test/mock/MockBuybackDataHook.sol +11 -4
  56. package/test/mock/MockBuybackDataHookMintPath.sol +11 -3
  57. package/test/regression/TestI20_CumulativeLoanCounter.t.sol +6 -5
  58. package/test/regression/TestL27_LiquidateGapHandling.t.sol +7 -6
  59. package/SECURITY.md +0 -68
@@ -31,7 +31,7 @@ import {JB721TiersHookStore} from "@bananapus/721-hook-v6/src/JB721TiersHookStor
31
31
  import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressRegistry.sol";
32
32
  import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
33
33
 
34
- contract TestPR09_ConversionDocumentation is TestBaseWorkflow, JBTest {
34
+ contract TestPR09_ConversionDocumentation is TestBaseWorkflow {
35
35
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
36
36
  bytes32 ERC20_SALT = "REV_TOKEN";
37
37
 
@@ -112,7 +112,8 @@ contract TestPR09_ConversionDocumentation is TestBaseWorkflow, JBTest {
112
112
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
113
113
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
114
114
  HOOK_STORE = new JB721TiersHookStore();
115
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
115
+ EXAMPLE_HOOK =
116
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
116
117
  ADDRESS_REGISTRY = new JBAddressRegistry();
117
118
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
118
119
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -134,7 +135,7 @@ contract TestPR09_ConversionDocumentation is TestBaseWorkflow, JBTest {
134
135
  FEE_PROJECT_ID,
135
136
  HOOK_DEPLOYER,
136
137
  PUBLISHER,
137
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
138
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
138
139
  address(LOANS_CONTRACT),
139
140
  TRUSTED_FORWARDER
140
141
  );
@@ -33,7 +33,7 @@ import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/
33
33
  import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
34
34
 
35
35
  /// @notice Tests for PR #10: liquidation behavior documentation and collateral burn mechanics.
36
- contract TestPR10_LiquidationBehavior is TestBaseWorkflow, JBTest {
36
+ contract TestPR10_LiquidationBehavior is TestBaseWorkflow {
37
37
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
38
38
 
39
39
  REVDeployer REV_DEPLOYER;
@@ -59,7 +59,8 @@ contract TestPR10_LiquidationBehavior is TestBaseWorkflow, JBTest {
59
59
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
60
60
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
61
61
  HOOK_STORE = new JB721TiersHookStore();
62
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
62
+ EXAMPLE_HOOK =
63
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
63
64
  ADDRESS_REGISTRY = new JBAddressRegistry();
64
65
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
65
66
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -83,7 +84,7 @@ contract TestPR10_LiquidationBehavior is TestBaseWorkflow, JBTest {
83
84
  FEE_PROJECT_ID,
84
85
  HOOK_DEPLOYER,
85
86
  PUBLISHER,
86
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
87
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
87
88
  address(LOANS_CONTRACT),
88
89
  TRUSTED_FORWARDER
89
90
  );
@@ -37,7 +37,7 @@ struct FeeProjectConfig {
37
37
  REVSuckerDeploymentConfig suckerDeploymentConfiguration;
38
38
  }
39
39
 
40
- contract TestPR11_LowFindings is TestBaseWorkflow, JBTest {
40
+ contract TestPR11_LowFindings is TestBaseWorkflow {
41
41
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
42
42
  bytes32 ERC20_SALT = "REV_TOKEN";
43
43
 
@@ -235,7 +235,8 @@ contract TestPR11_LowFindings is TestBaseWorkflow, JBTest {
235
235
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
236
236
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
237
237
  HOOK_STORE = new JB721TiersHookStore();
238
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
238
+ EXAMPLE_HOOK =
239
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
239
240
  ADDRESS_REGISTRY = new JBAddressRegistry();
240
241
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
241
242
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -262,7 +263,7 @@ contract TestPR11_LowFindings is TestBaseWorkflow, JBTest {
262
263
  FEE_PROJECT_ID,
263
264
  HOOK_DEPLOYER,
264
265
  PUBLISHER,
265
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
266
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
266
267
  address(LOANS_CONTRACT),
267
268
  TRUSTED_FORWARDER
268
269
  );
@@ -31,7 +31,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
31
31
  import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
32
32
 
33
33
  /// @notice Tests showing that flash loan surplus manipulation is economically unprofitable.
34
- contract TestPR12_FlashLoanSurplus is TestBaseWorkflow, JBTest {
34
+ contract TestPR12_FlashLoanSurplus is TestBaseWorkflow {
35
35
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
36
36
  bytes32 ERC20_SALT = "REV_TOKEN";
37
37
 
@@ -59,7 +59,8 @@ contract TestPR12_FlashLoanSurplus is TestBaseWorkflow, JBTest {
59
59
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
60
60
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
61
61
  HOOK_STORE = new JB721TiersHookStore();
62
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
62
+ EXAMPLE_HOOK =
63
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
63
64
  ADDRESS_REGISTRY = new JBAddressRegistry();
64
65
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
65
66
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -83,7 +84,7 @@ contract TestPR12_FlashLoanSurplus is TestBaseWorkflow, JBTest {
83
84
  FEE_PROJECT_ID,
84
85
  HOOK_DEPLOYER,
85
86
  PUBLISHER,
86
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
87
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
87
88
  address(LOANS_CONTRACT),
88
89
  TRUSTED_FORWARDER
89
90
  );
@@ -31,7 +31,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
31
31
  import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
32
32
 
33
33
  /// @notice Tests for PR #13: cross-source reallocation prevention.
34
- contract TestPR13_CrossSourceReallocation is TestBaseWorkflow, JBTest {
34
+ contract TestPR13_CrossSourceReallocation is TestBaseWorkflow {
35
35
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
36
36
 
37
37
  REVDeployer REV_DEPLOYER;
@@ -57,7 +57,8 @@ contract TestPR13_CrossSourceReallocation is TestBaseWorkflow, JBTest {
57
57
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
58
58
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
59
59
  HOOK_STORE = new JB721TiersHookStore();
60
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
60
+ EXAMPLE_HOOK =
61
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
61
62
  ADDRESS_REGISTRY = new JBAddressRegistry();
62
63
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
63
64
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -81,7 +82,7 @@ contract TestPR13_CrossSourceReallocation is TestBaseWorkflow, JBTest {
81
82
  FEE_PROJECT_ID,
82
83
  HOOK_DEPLOYER,
83
84
  PUBLISHER,
84
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
85
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
85
86
  address(LOANS_CONTRACT),
86
87
  TRUSTED_FORWARDER
87
88
  );
@@ -37,7 +37,7 @@ struct FeeProjectConfig {
37
37
  REVSuckerDeploymentConfig suckerDeploymentConfiguration;
38
38
  }
39
39
 
40
- contract TestPR15_CashOutCallerValidation is TestBaseWorkflow, JBTest {
40
+ contract TestPR15_CashOutCallerValidation is TestBaseWorkflow {
41
41
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
42
42
  bytes32 ERC20_SALT = "REV_TOKEN";
43
43
 
@@ -175,7 +175,8 @@ contract TestPR15_CashOutCallerValidation is TestBaseWorkflow, JBTest {
175
175
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
176
176
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
177
177
  HOOK_STORE = new JB721TiersHookStore();
178
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
178
+ EXAMPLE_HOOK =
179
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
179
180
  ADDRESS_REGISTRY = new JBAddressRegistry();
180
181
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
181
182
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -197,7 +198,7 @@ contract TestPR15_CashOutCallerValidation is TestBaseWorkflow, JBTest {
197
198
  FEE_PROJECT_ID,
198
199
  HOOK_DEPLOYER,
199
200
  PUBLISHER,
200
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
201
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
201
202
  address(LOANS_CONTRACT),
202
203
  TRUSTED_FORWARDER
203
204
  );
@@ -32,7 +32,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
32
32
  import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
33
33
 
34
34
  /// @notice Tests for PR #16: zero repayment prevention.
35
- contract TestPR16_ZeroRepayment is TestBaseWorkflow, JBTest {
35
+ contract TestPR16_ZeroRepayment is TestBaseWorkflow {
36
36
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
37
37
 
38
38
  REVDeployer REV_DEPLOYER;
@@ -58,7 +58,8 @@ contract TestPR16_ZeroRepayment is TestBaseWorkflow, JBTest {
58
58
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
59
59
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
60
60
  HOOK_STORE = new JB721TiersHookStore();
61
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
61
+ EXAMPLE_HOOK =
62
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
62
63
  ADDRESS_REGISTRY = new JBAddressRegistry();
63
64
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
64
65
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -82,7 +83,7 @@ contract TestPR16_ZeroRepayment is TestBaseWorkflow, JBTest {
82
83
  FEE_PROJECT_ID,
83
84
  HOOK_DEPLOYER,
84
85
  PUBLISHER,
85
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
86
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
86
87
  address(LOANS_CONTRACT),
87
88
  TRUSTED_FORWARDER
88
89
  );
@@ -33,7 +33,7 @@ import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/
33
33
 
34
34
  /// @title TestPR21_Uint112Overflow
35
35
  /// @notice Tests for uint112 truncation fix in REVLoans._adjust()
36
- contract TestPR21_Uint112Overflow is TestBaseWorkflow, JBTest {
36
+ contract TestPR21_Uint112Overflow is TestBaseWorkflow {
37
37
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
38
38
  bytes32 ERC20_SALT = "REV_TOKEN";
39
39
 
@@ -61,7 +61,8 @@ contract TestPR21_Uint112Overflow is TestBaseWorkflow, JBTest {
61
61
 
62
62
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
63
63
  HOOK_STORE = new JB721TiersHookStore();
64
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
64
+ EXAMPLE_HOOK =
65
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
65
66
  ADDRESS_REGISTRY = new JBAddressRegistry();
66
67
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
67
68
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -88,7 +89,7 @@ contract TestPR21_Uint112Overflow is TestBaseWorkflow, JBTest {
88
89
  FEE_PROJECT_ID,
89
90
  HOOK_DEPLOYER,
90
91
  PUBLISHER,
91
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
92
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
92
93
  address(LOANS_CONTRACT),
93
94
  TRUSTED_FORWARDER
94
95
  );
@@ -36,7 +36,7 @@ import {JBRuleset} from "@bananapus/core-v6/src/structs/JBRuleset.sol";
36
36
  /// The bug: `hookSpecifications[1] = buybackHookSpecifications[0]` would revert with OOB
37
37
  /// when there is no tiered 721 hook (array size is 1, not 2).
38
38
  /// The fix: `hookSpecifications[usesTiered721Hook ? 1 : 0] = buybackHookSpecifications[0]`.
39
- contract TestPR22_HookArrayOOB is TestBaseWorkflow, JBTest {
39
+ contract TestPR22_HookArrayOOB is TestBaseWorkflow {
40
40
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
41
41
 
42
42
  REVDeployer REV_DEPLOYER;
@@ -59,7 +59,8 @@ contract TestPR22_HookArrayOOB is TestBaseWorkflow, JBTest {
59
59
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
60
60
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
61
61
  HOOK_STORE = new JB721TiersHookStore();
62
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
62
+ EXAMPLE_HOOK =
63
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
63
64
  ADDRESS_REGISTRY = new JBAddressRegistry();
64
65
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
65
66
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -78,7 +79,7 @@ contract TestPR22_HookArrayOOB is TestBaseWorkflow, JBTest {
78
79
  FEE_PROJECT_ID,
79
80
  HOOK_DEPLOYER,
80
81
  PUBLISHER,
81
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
82
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
82
83
  address(LOANS_CONTRACT),
83
84
  TRUSTED_FORWARDER
84
85
  );
@@ -37,7 +37,7 @@ struct FeeProjectConfig {
37
37
  REVSuckerDeploymentConfig suckerDeploymentConfiguration;
38
38
  }
39
39
 
40
- contract TestPR26_BurnHeldTokens is TestBaseWorkflow, JBTest {
40
+ contract TestPR26_BurnHeldTokens is TestBaseWorkflow {
41
41
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
42
42
  bytes32 ERC20_SALT = "REV_TOKEN";
43
43
 
@@ -163,7 +163,8 @@ contract TestPR26_BurnHeldTokens is TestBaseWorkflow, JBTest {
163
163
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
164
164
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
165
165
  HOOK_STORE = new JB721TiersHookStore();
166
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
166
+ EXAMPLE_HOOK =
167
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
167
168
  ADDRESS_REGISTRY = new JBAddressRegistry();
168
169
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
169
170
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -185,7 +186,7 @@ contract TestPR26_BurnHeldTokens is TestBaseWorkflow, JBTest {
185
186
  FEE_PROJECT_ID,
186
187
  HOOK_DEPLOYER,
187
188
  PUBLISHER,
188
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
189
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
189
190
  address(LOANS_CONTRACT),
190
191
  TRUSTED_FORWARDER
191
192
  );
@@ -69,7 +69,7 @@ contract ReentrantBorrower {
69
69
  /// - _returnCollateralFrom(uint256 revnetId, uint256 collateralCount, ...) — no loan reference
70
70
  /// None of the four helpers read loan.amount or loan.collateral — they all use pre-computed deltas.
71
71
  /// The CEI fix writes loan.amount and loan.collateral BEFORE calling any of these helpers.
72
- contract TestPR27_CEIPattern is TestBaseWorkflow, JBTest {
72
+ contract TestPR27_CEIPattern is TestBaseWorkflow {
73
73
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
74
74
 
75
75
  REVDeployer REV_DEPLOYER;
@@ -94,7 +94,8 @@ contract TestPR27_CEIPattern is TestBaseWorkflow, JBTest {
94
94
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
95
95
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
96
96
  HOOK_STORE = new JB721TiersHookStore();
97
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
97
+ EXAMPLE_HOOK =
98
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
98
99
  ADDRESS_REGISTRY = new JBAddressRegistry();
99
100
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
100
101
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -118,7 +119,7 @@ contract TestPR27_CEIPattern is TestBaseWorkflow, JBTest {
118
119
  FEE_PROJECT_ID,
119
120
  HOOK_DEPLOYER,
120
121
  PUBLISHER,
121
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
122
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
122
123
  address(LOANS_CONTRACT),
123
124
  TRUSTED_FORWARDER
124
125
  );
@@ -30,7 +30,7 @@ import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/
30
30
 
31
31
  /// @notice Tests for default operator permissions including SET_ROUTER_TERMINAL.
32
32
  /// Verifies that all default split operator permissions are granted correctly.
33
- contract TestPR29_SwapTerminalPermission is TestBaseWorkflow, JBTest {
33
+ contract TestPR29_SwapTerminalPermission is TestBaseWorkflow {
34
34
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
35
35
 
36
36
  REVDeployer REV_DEPLOYER;
@@ -53,7 +53,8 @@ contract TestPR29_SwapTerminalPermission is TestBaseWorkflow, JBTest {
53
53
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
54
54
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
55
55
  HOOK_STORE = new JB721TiersHookStore();
56
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
56
+ EXAMPLE_HOOK =
57
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
57
58
  ADDRESS_REGISTRY = new JBAddressRegistry();
58
59
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
59
60
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -72,7 +73,7 @@ contract TestPR29_SwapTerminalPermission is TestBaseWorkflow, JBTest {
72
73
  FEE_PROJECT_ID,
73
74
  HOOK_DEPLOYER,
74
75
  PUBLISHER,
75
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
76
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
76
77
  address(LOANS_CONTRACT),
77
78
  TRUSTED_FORWARDER
78
79
  );
@@ -31,7 +31,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
31
31
  import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
32
32
 
33
33
  /// @notice Tests for PR #32: liquidation boundary, reallocate msg.value, and decimal normalization fixes.
34
- contract TestPR32_MixedFixes is TestBaseWorkflow, JBTest {
34
+ contract TestPR32_MixedFixes is TestBaseWorkflow {
35
35
  bytes32 REV_DEPLOYER_SALT = "REVDeployer";
36
36
 
37
37
  REVDeployer REV_DEPLOYER;
@@ -57,7 +57,8 @@ contract TestPR32_MixedFixes is TestBaseWorkflow, JBTest {
57
57
  FEE_PROJECT_ID = jbProjects().createFor(multisig());
58
58
  SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
59
59
  HOOK_STORE = new JB721TiersHookStore();
60
- EXAMPLE_HOOK = new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, multisig());
60
+ EXAMPLE_HOOK =
61
+ new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
61
62
  ADDRESS_REGISTRY = new JBAddressRegistry();
62
63
  HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
63
64
  PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
@@ -81,7 +82,7 @@ contract TestPR32_MixedFixes is TestBaseWorkflow, JBTest {
81
82
  FEE_PROJECT_ID,
82
83
  HOOK_DEPLOYER,
83
84
  PUBLISHER,
84
- IJBRulesetDataHook(address(MOCK_BUYBACK)),
85
+ IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
85
86
  address(LOANS_CONTRACT),
86
87
  TRUSTED_FORWARDER
87
88
  );