@bananapus/core-v6 0.0.15 → 0.0.16

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 (212) hide show
  1. package/ADMINISTRATION.md +4 -0
  2. package/README.md +2 -2
  3. package/SKILLS.md +2 -0
  4. package/STYLE_GUIDE.md +16 -2
  5. package/package.json +2 -2
  6. package/script/Deploy.s.sol +22 -13
  7. package/script/DeployPeriphery.s.sol +70 -52
  8. package/script/helpers/CoreDeploymentLib.sol +83 -35
  9. package/src/JBChainlinkV3PriceFeed.sol +1 -0
  10. package/src/JBController.sol +18 -3
  11. package/src/JBERC20.sol +12 -3
  12. package/src/JBFundAccessLimits.sol +12 -2
  13. package/src/JBMultiTerminal.sol +3 -1
  14. package/src/JBPermissions.sol +1 -0
  15. package/src/JBProjects.sol +1 -1
  16. package/src/JBRulesets.sol +11 -0
  17. package/src/JBSplits.sol +5 -0
  18. package/src/JBTerminalStore.sol +3 -0
  19. package/src/JBTokens.sol +40 -4
  20. package/src/interfaces/IJBController.sol +6 -0
  21. package/src/interfaces/IJBPermitTerminal.sol +1 -0
  22. package/src/interfaces/IJBToken.sol +5 -0
  23. package/src/interfaces/IJBTokens.sol +13 -0
  24. package/src/libraries/JBMetadataResolver.sol +7 -3
  25. package/src/libraries/JBRulesetMetadataResolver.sol +21 -21
  26. package/src/structs/JBAccountingContext.sol +1 -0
  27. package/src/structs/JBAfterCashOutRecordedContext.sol +1 -0
  28. package/src/structs/JBAfterPayRecordedContext.sol +1 -0
  29. package/src/structs/JBBeforeCashOutRecordedContext.sol +1 -0
  30. package/src/structs/JBBeforePayRecordedContext.sol +1 -0
  31. package/src/structs/JBCashOutHookSpecification.sol +1 -0
  32. package/src/structs/JBCurrencyAmount.sol +1 -0
  33. package/src/structs/JBFee.sol +1 -0
  34. package/src/structs/JBFundAccessLimitGroup.sol +1 -0
  35. package/src/structs/JBPayHookSpecification.sol +1 -0
  36. package/src/structs/JBPermissionsData.sol +1 -0
  37. package/src/structs/JBRuleset.sol +1 -0
  38. package/src/structs/JBRulesetConfig.sol +1 -0
  39. package/src/structs/JBRulesetMetadata.sol +1 -0
  40. package/src/structs/JBRulesetWeightCache.sol +1 -0
  41. package/src/structs/JBRulesetWithMetadata.sol +1 -0
  42. package/src/structs/JBSingleAllowance.sol +1 -0
  43. package/src/structs/JBSplit.sol +1 -0
  44. package/src/structs/JBSplitGroup.sol +1 -0
  45. package/src/structs/JBSplitHookContext.sol +1 -0
  46. package/src/structs/JBTerminalConfig.sol +1 -0
  47. package/src/structs/JBTokenAmount.sol +1 -0
  48. package/test/ComprehensiveInvariant.t.sol +15 -2
  49. package/test/CoreExploitTests.t.sol +34 -1
  50. package/test/EconomicSimulation.t.sol +10 -2
  51. package/test/EntryPointPermutations.t.sol +17 -3
  52. package/test/FlashLoanAttacks.t.sol +12 -1
  53. package/test/PermissionEscalation.t.sol +53 -10
  54. package/test/RulesetTransitions.t.sol +15 -1
  55. package/test/SplitLoopTests.t.sol +25 -2
  56. package/test/TestAccessToFunds.sol +17 -2
  57. package/test/TestCashOut.sol +15 -1
  58. package/test/TestCashOutCountFor.sol +1 -1
  59. package/test/TestCashOutHooks.sol +47 -25
  60. package/test/TestCashOutTimingEdge.sol +13 -1
  61. package/test/TestDurationUnderflow.sol +13 -1
  62. package/test/TestFeeProcessingFailure.sol +16 -1
  63. package/test/TestFees.sol +14 -1
  64. package/test/TestInterfaceSupport.sol +20 -1
  65. package/test/TestJBERC20Inheritance.sol +11 -1
  66. package/test/TestLaunchProject.sol +13 -1
  67. package/test/TestMetaTx.sol +15 -1
  68. package/test/TestMetadataParserLib.sol +37 -4
  69. package/test/TestMigrationHeldFees.sol +16 -1
  70. package/test/TestMintTokensOf.sol +14 -1
  71. package/test/TestMultiTokenSurplus.sol +14 -1
  72. package/test/TestMultipleAccessLimits.sol +23 -1
  73. package/test/TestPayBurnRedeemFlow.sol +16 -1
  74. package/test/TestPayHooks.sol +33 -14
  75. package/test/TestPermissions.sol +20 -1
  76. package/test/TestPermissionsEdge.sol +5 -1
  77. package/test/TestPermit2Terminal.sol +36 -3
  78. package/test/TestRulesetQueueing.sol +24 -1
  79. package/test/TestRulesetQueuingStress.sol +20 -1
  80. package/test/TestRulesetWeightCaching.sol +5 -1
  81. package/test/TestSplits.sol +23 -1
  82. package/test/TestTerminalMigration.sol +11 -1
  83. package/test/TestTokenFlow.sol +18 -1
  84. package/test/TestWeightCacheStaleAfterRejection.sol +15 -1
  85. package/test/WeirdTokenTests.t.sol +17 -1
  86. package/test/fork/TestChainlinkPriceFeedFork.sol +6 -1
  87. package/test/formal/BondingCurveProperties.t.sol +8 -1
  88. package/test/formal/FeeProperties.t.sol +7 -1
  89. package/test/helpers/JBTest.sol +1 -1
  90. package/test/helpers/TestBaseWorkflow.sol +84 -1
  91. package/test/invariants/Phase3DeepInvariant.t.sol +13 -2
  92. package/test/invariants/RulesetsInvariant.t.sol +12 -2
  93. package/test/invariants/TerminalStoreInvariant.t.sol +11 -2
  94. package/test/invariants/TokensInvariant.t.sol +13 -2
  95. package/test/invariants/handlers/ComprehensiveHandler.sol +19 -1
  96. package/test/invariants/handlers/EconomicHandler.sol +31 -1
  97. package/test/invariants/handlers/Phase3Handler.sol +31 -1
  98. package/test/invariants/handlers/RulesetsHandler.sol +5 -1
  99. package/test/invariants/handlers/TerminalStoreHandler.sol +6 -1
  100. package/test/invariants/handlers/TokensHandler.sol +1 -1
  101. package/test/mock/MockERC20.sol +0 -2
  102. package/test/mock/MockMaliciousBeneficiary.sol +2 -1
  103. package/test/mock/MockMaliciousSplitHook.sol +2 -1
  104. package/test/mock/MockPriceFeed.sol +1 -1
  105. package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +0 -1
  106. package/test/units/static/JBController/JBControllerSetup.sol +10 -1
  107. package/test/units/static/JBController/TestBurnTokensOf.sol +8 -1
  108. package/test/units/static/JBController/TestClaimTokensFor.sol +4 -1
  109. package/test/units/static/JBController/TestDeployErc20For.sol +7 -1
  110. package/test/units/static/JBController/TestLaunchProjectFor.sol +21 -1
  111. package/test/units/static/JBController/TestLaunchRulesetsFor.sol +21 -1
  112. package/test/units/static/JBController/TestMigrateController.sol +10 -1
  113. package/test/units/static/JBController/TestMintTokensOfUnits.sol +10 -1
  114. package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +4 -1
  115. package/test/units/static/JBController/TestReceiveMigrationFrom.sol +5 -1
  116. package/test/units/static/JBController/TestRulesetViews.sol +7 -1
  117. package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +21 -1
  118. package/test/units/static/JBController/TestSetSplitGroupsOf.sol +6 -1
  119. package/test/units/static/JBController/TestSetTokenFor.sol +13 -1
  120. package/test/units/static/JBController/TestSetUriOf.sol +5 -1
  121. package/test/units/static/JBController/TestTransferCreditsFrom.sol +11 -1
  122. package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +12 -1
  123. package/test/units/static/JBDirectory/JBDirectorySetup.sol +4 -1
  124. package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +5 -1
  125. package/test/units/static/JBDirectory/TestSetControllerOf.sol +11 -1
  126. package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +7 -1
  127. package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +11 -1
  128. package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +10 -1
  129. package/test/units/static/JBERC20/JBERC20Setup.sol +2 -1
  130. package/test/units/static/JBERC20/SigUtils.sol +2 -0
  131. package/test/units/static/JBERC20/TestInitialize.sol +1 -1
  132. package/test/units/static/JBERC20/TestName.sol +1 -1
  133. package/test/units/static/JBERC20/TestNonces.sol +3 -1
  134. package/test/units/static/JBERC20/TestSymbol.sol +1 -1
  135. package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +2 -1
  136. package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +2 -1
  137. package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +1 -1
  138. package/test/units/static/JBFees/TestFeesFuzz.sol +1 -1
  139. package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +0 -1
  140. package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +0 -1
  141. package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +3 -1
  142. package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +4 -1
  143. package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +4 -1
  144. package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +8 -1
  145. package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +8 -1
  146. package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +4 -1
  147. package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +7 -1
  148. package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +1 -1
  149. package/test/units/static/JBMetadataResolver/TestMetadataResolverEdgeCases.sol +2 -1
  150. package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +2 -1
  151. package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +12 -1
  152. package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +9 -1
  153. package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +18 -2
  154. package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +42 -7
  155. package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +30 -6
  156. package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +18 -2
  157. package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +13 -3
  158. package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +21 -4
  159. package/test/units/static/JBMultiTerminal/TestPay.sol +32 -6
  160. package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +0 -1
  161. package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +15 -1
  162. package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +17 -1
  163. package/test/units/static/JBPermissions/JBPermissionsSetup.sol +2 -1
  164. package/test/units/static/JBPermissions/TestHasPermission.sol +1 -1
  165. package/test/units/static/JBPermissions/TestHasPermissions.sol +1 -1
  166. package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +3 -1
  167. package/test/units/static/JBPrices/JBPricesSetup.sol +6 -1
  168. package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +6 -1
  169. package/test/units/static/JBPrices/TestPricePerUnitOf.sol +4 -1
  170. package/test/units/static/JBPrices/TestPrices.sol +4 -1
  171. package/test/units/static/JBProjects/JBProjectsSetup.sol +2 -1
  172. package/test/units/static/JBProjects/TestCreateFor.sol +3 -1
  173. package/test/units/static/JBProjects/TestInitialProject.sol +2 -1
  174. package/test/units/static/JBProjects/TestInterfaces.sol +0 -1
  175. package/test/units/static/JBProjects/TestSetResolver.sol +2 -1
  176. package/test/units/static/JBProjects/TestTokenUri.sol +3 -1
  177. package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +9 -1
  178. package/test/units/static/JBRulesets/JBRulesetsSetup.sol +3 -1
  179. package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +9 -1
  180. package/test/units/static/JBRulesets/TestCurrentOf.sol +10 -1
  181. package/test/units/static/JBRulesets/TestGetRulesetOf.sol +7 -1
  182. package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +9 -1
  183. package/test/units/static/JBRulesets/TestRulesets.sol +12 -1
  184. package/test/units/static/JBRulesets/TestRulesetsOf.sol +1 -1
  185. package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +10 -1
  186. package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +6 -1
  187. package/test/units/static/JBSplits/JBSplitsSetup.sol +3 -1
  188. package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +8 -1
  189. package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +8 -1
  190. package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +6 -1
  191. package/test/units/static/JBSplits/TestSplitsOf.sol +1 -1
  192. package/test/units/static/JBSplits/TestSplitsPacking.sol +5 -2
  193. package/test/units/static/JBSurplus/TestSurplusFuzz.sol +3 -1
  194. package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +5 -1
  195. package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +14 -1
  196. package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +14 -1
  197. package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +3 -1
  198. package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +20 -1
  199. package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +15 -1
  200. package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +13 -1
  201. package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +8 -1
  202. package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +16 -1
  203. package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +15 -1
  204. package/test/units/static/JBTokens/JBTokensSetup.sol +5 -1
  205. package/test/units/static/JBTokens/TestBurnFrom.sol +4 -1
  206. package/test/units/static/JBTokens/TestClaimTokensFor.sol +4 -1
  207. package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +4 -1
  208. package/test/units/static/JBTokens/TestMintFor.sol +4 -1
  209. package/test/units/static/JBTokens/TestSetTokenFor.sol +4 -1
  210. package/test/units/static/JBTokens/TestTotalBalanceOf.sol +1 -1
  211. package/test/units/static/JBTokens/TestTotalSupplyOf.sol +1 -1
  212. package/test/units/static/JBTokens/TestTransferCreditsFrom.sol +3 -1
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity ^0.8.6;
3
3
 
4
- import "forge-std/Test.sol";
4
+ import {Test} from "forge-std/Test.sol";
5
5
  import {JBConstants} from "../../../src/libraries/JBConstants.sol";
6
6
  import {IJBMultiTerminal} from "../../../src/interfaces/IJBMultiTerminal.sol";
7
7
  import {IJBTerminalStore} from "../../../src/interfaces/IJBTerminalStore.sol";
@@ -20,9 +20,13 @@ contract TerminalStoreHandler is Test {
20
20
  address public projectOwner;
21
21
 
22
22
  // Ghost variables for fund tracking
23
+ // forge-lint: disable-next-line(mixed-case-variable)
23
24
  uint256 public ghost_totalPaidIn;
25
+ // forge-lint: disable-next-line(mixed-case-variable)
24
26
  uint256 public ghost_totalCashedOut;
27
+ // forge-lint: disable-next-line(mixed-case-variable)
25
28
  uint256 public ghost_totalPaidOut;
29
+ // forge-lint: disable-next-line(mixed-case-variable)
26
30
  uint256 public ghost_totalAddedToBalance;
27
31
 
28
32
  // Track actors
@@ -47,6 +51,7 @@ contract TerminalStoreHandler is Test {
47
51
 
48
52
  // Create actor addresses
49
53
  for (uint256 i = 0; i < NUM_ACTORS; i++) {
54
+ // forge-lint: disable-next-line(unsafe-typecast)
50
55
  address actor = address(uint160(0x1000 + i));
51
56
  actors.push(actor);
52
57
  isActor[actor] = true;
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity ^0.8.6;
3
3
 
4
- import "forge-std/Test.sol";
4
+ import {Test} from "forge-std/Test.sol";
5
5
  import {JBConstants} from "../../../src/libraries/JBConstants.sol";
6
6
  import {IJBMultiTerminal} from "../../../src/interfaces/IJBMultiTerminal.sol";
7
7
  import {IJBController} from "../../../src/interfaces/IJBController.sol";
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../helpers/TestBaseWorkflow.sol";
5
-
6
4
  import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
7
5
 
8
6
  contract MockERC20 is ERC20 {
@@ -1,7 +1,8 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../helpers/TestBaseWorkflow.sol";
4
+ import {Test} from "forge-std/Test.sol";
5
+ import {JBTerminalStore} from "../../src/JBTerminalStore.sol";
5
6
  import {IJBMultiTerminal} from "../../src/interfaces/IJBMultiTerminal.sol";
6
7
  import {JBConstants} from "../../src/libraries/JBConstants.sol";
7
8
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
@@ -1,7 +1,8 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../helpers/TestBaseWorkflow.sol";
4
+ import {IJBSplitHook} from "../../src/interfaces/IJBSplitHook.sol";
5
+ import {JBSplitHookContext} from "../../src/structs/JBSplitHookContext.sol";
5
6
 
6
7
  import {ERC165, IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
7
8
 
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../helpers/TestBaseWorkflow.sol";
4
+ import {IJBPriceFeed} from "../../src/interfaces/IJBPriceFeed.sol";
5
5
 
6
6
  contract MockPriceFeed is IJBPriceFeed {
7
7
  uint256 public fakePrice;
@@ -1,7 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
5
4
  import {JBTest} from "../../../helpers/JBTest.sol";
6
5
  import {JBChainlinkV3PriceFeed} from "../../../../src/JBChainlinkV3PriceFeed.sol";
7
6
  import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol";
@@ -1,7 +1,16 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
8
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
9
+ import {IJBPrices} from "../../../../src/interfaces/IJBPrices.sol";
10
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
11
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
12
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
13
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
5
14
  import {JBTest} from "../../../helpers/JBTest.sol";
6
15
 
7
16
  /*
@@ -1,7 +1,14 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
6
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
9
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
10
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
11
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
5
12
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
13
 
7
14
  contract TestBurnTokensOf_Local is JBControllerSetup {
@@ -1,7 +1,10 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
5
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
6
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
7
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
5
8
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
9
 
7
10
  contract TestClaimTokensFor_Local is JBControllerSetup {
@@ -1,7 +1,12 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
5
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
6
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
7
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
8
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
9
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
10
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
11
 
7
12
  contract TestDeployERC20For_Local is JBControllerSetup {
@@ -34,6 +39,7 @@ contract TestDeployERC20For_Local is JBControllerSetup {
34
39
  function test_WhenCallerIsPermissionedAndSaltIsNonZero() external {
35
40
  // it will deploy ERC20 and return IJBToken
36
41
 
42
+ // forge-lint: disable-next-line(unsafe-typecast)
37
43
  bytes32 _nonZeroSalt = bytes32("somesalt");
38
44
  bytes32 _encodedSalt = keccak256(abi.encodePacked(address(this), _nonZeroSalt));
39
45
 
@@ -1,7 +1,27 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
8
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
9
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
10
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
11
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
12
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
13
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
14
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
15
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
16
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
17
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
18
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
19
+ import {JBRulesetConfig} from "../../../../src/structs/JBRulesetConfig.sol";
20
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
21
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
22
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
23
+ import {JBTerminalConfig} from "../../../../src/structs/JBTerminalConfig.sol";
24
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
25
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
26
 
7
27
  contract TestLaunchProjectFor_Local is JBControllerSetup {
@@ -1,7 +1,27 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
6
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
9
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
10
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
11
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
12
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
13
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
14
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
15
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
16
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
17
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
18
+ import {JBRulesetConfig} from "../../../../src/structs/JBRulesetConfig.sol";
19
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
20
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
21
+ import {JBTerminalConfig} from "../../../../src/structs/JBTerminalConfig.sol";
22
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
23
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
24
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
25
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
26
 
7
27
  contract TestLaunchRulesetsFor_Local is JBControllerSetup {
@@ -1,7 +1,16 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {StdStorage, stdStorage} from "forge-std/StdStorage.sol";
5
+ import {JBController} from "../../../../src/JBController.sol";
6
+ import {IJBMigratable} from "../../../../src/interfaces/IJBMigratable.sol";
7
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
8
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
9
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
10
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
11
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
12
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
13
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
14
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
15
 
7
16
  contract TestMigrateController_Local is JBControllerSetup {
@@ -1,7 +1,16 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
7
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
8
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
9
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
10
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
11
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
12
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
13
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
14
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
15
 
7
16
  contract TestMintTokensOfUnits_Local is JBControllerSetup {
@@ -1,7 +1,10 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
6
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
7
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
8
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
9
 
7
10
  contract TestExecutePayReservedTokenToTerminal_Local is JBControllerSetup {
@@ -1,7 +1,11 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
6
+ import {IJBMigratable} from "../../../../src/interfaces/IJBMigratable.sol";
7
+ import {IJBProjectUriRegistry} from "../../../../src/interfaces/IJBProjectUriRegistry.sol";
8
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
9
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
10
 
7
11
  contract TestReceiveMigrationFrom_Local is JBControllerSetup {
@@ -1,7 +1,13 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBApprovalStatus} from "../../../../src/enums/JBApprovalStatus.sol";
5
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
6
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
7
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
8
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
9
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
10
+ import {JBRulesetWithMetadata} from "../../../../src/structs/JBRulesetWithMetadata.sol";
5
11
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
12
 
7
13
  /**
@@ -1,7 +1,27 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {StdStorage, stdStorage} from "forge-std/StdStorage.sol";
5
+ import {JBController} from "../../../../src/JBController.sol";
6
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
9
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
10
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
11
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
12
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
13
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
14
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
15
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
16
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
17
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
18
+ import {JBRulesetConfig} from "../../../../src/structs/JBRulesetConfig.sol";
19
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
20
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
21
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
22
+ import {JBSplitHookContext} from "../../../../src/structs/JBSplitHookContext.sol";
23
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
24
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
25
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
26
 
7
27
  contract TestSendReservedTokensToSplitsOf_Local is JBControllerSetup {
@@ -1,7 +1,12 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
5
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
6
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
7
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
8
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
9
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
10
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
11
 
7
12
  contract TestSetSplitGroupsOf_Local is JBControllerSetup {
@@ -1,7 +1,19 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
6
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
7
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
8
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
9
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
10
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
11
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
12
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
13
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
14
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
15
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
16
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
17
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
18
 
7
19
  contract TestSetTokenFor_Local is JBControllerSetup {
@@ -1,7 +1,11 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
5
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
6
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
7
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
8
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
9
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
10
 
7
11
  contract TestSetUriOf_Local is JBControllerSetup {
@@ -1,7 +1,17 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBController} from "../../../../src/JBController.sol";
5
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
6
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
7
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
8
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
9
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
10
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
11
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
12
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
13
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
14
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
5
15
  import {JBControllerSetup} from "./JBControllerSetup.sol";
6
16
 
7
17
  contract TestTransferCreditsFrom_Local is JBControllerSetup {
@@ -1,7 +1,8 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
5
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
6
  import {JBTest} from "../../../helpers/JBTest.sol";
6
7
  import {JBDeadline} from "../../../../src/JBDeadline.sol";
7
8
  import {JBApprovalStatus} from "../../../../src/enums/JBApprovalStatus.sol";
@@ -47,7 +48,9 @@ contract TestDeadlineFuzz_Local is JBTest {
47
48
 
48
49
  /// @notice Ruleset queued too close to start returns Failed.
49
50
  function test_insufficientGap_isFailed() external view {
51
+ // forge-lint: disable-next-line(unsafe-typecast)
50
52
  uint48 start = uint48(block.timestamp + 1 days);
53
+ // forge-lint: disable-next-line(unsafe-typecast)
51
54
  uint48 queued = start - uint48(DURATION) + 1; // 1 second short of required gap
52
55
 
53
56
  JBRuleset memory ruleset = _makeRuleset({queuedAt: queued, start: start});
@@ -58,7 +61,9 @@ contract TestDeadlineFuzz_Local is JBTest {
58
61
  /// @notice Ruleset with exactly enough gap and deadline not yet passed returns ApprovalExpected.
59
62
  function test_exactGap_deadlineNotPassed_isApprovalExpected() external view {
60
63
  // queue far enough in advance, and start is still far in the future
64
+ // forge-lint: disable-next-line(unsafe-typecast)
61
65
  uint48 start = uint48(block.timestamp + 2 * DURATION + 100);
66
+ // forge-lint: disable-next-line(unsafe-typecast)
62
67
  uint48 queued = start - uint48(DURATION);
63
68
 
64
69
  JBRuleset memory ruleset = _makeRuleset({queuedAt: queued, start: start});
@@ -68,7 +73,9 @@ contract TestDeadlineFuzz_Local is JBTest {
68
73
 
69
74
  /// @notice Ruleset with enough gap and deadline passed returns Approved.
70
75
  function test_gapSufficient_deadlinePassed_isApproved() external view {
76
+ // forge-lint: disable-next-line(unsafe-typecast)
71
77
  uint48 start = uint48(block.timestamp + 1); // start is very soon
78
+ // forge-lint: disable-next-line(unsafe-typecast)
72
79
  uint48 queued = start - uint48(DURATION) - 1; // plenty of gap
73
80
 
74
81
  JBRuleset memory ruleset = _makeRuleset({queuedAt: queued, start: start});
@@ -123,7 +130,9 @@ contract TestDeadlineFuzz_Local is JBTest {
123
130
 
124
131
  // Warp to a timestamp large enough so that start >= gap always holds.
125
132
  vm.warp(gap + 1);
133
+ // forge-lint: disable-next-line(unsafe-typecast)
126
134
  uint48 start = uint48(block.timestamp);
135
+ // forge-lint: disable-next-line(unsafe-typecast)
127
136
  uint48 queuedAt = start - uint48(gap);
128
137
 
129
138
  JBRuleset memory ruleset = _makeRuleset({queuedAt: queuedAt, start: start});
@@ -166,7 +175,9 @@ contract TestDeadlineFuzz_Local is JBTest {
166
175
  // Ensure block.timestamp >= duration to avoid underflow.
167
176
  vm.warp(duration + 1);
168
177
 
178
+ // forge-lint: disable-next-line(unsafe-typecast)
169
179
  uint48 start = uint48(block.timestamp + 1);
180
+ // forge-lint: disable-next-line(unsafe-typecast)
170
181
  uint48 queuedAt = uint48(block.timestamp - duration);
171
182
 
172
183
  JBRuleset memory ruleset = _makeRuleset({queuedAt: queuedAt, start: start});
@@ -1,7 +1,10 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBDirectory} from "../../../../src/JBDirectory.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
7
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
5
8
  import {JBTest} from "../../../helpers/JBTest.sol";
6
9
 
7
10
  /*
@@ -1,7 +1,11 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IJBDirectoryAccessControl} from "../../../../src/interfaces/IJBDirectoryAccessControl.sol";
5
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
6
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
7
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
8
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
9
  import {JBDirectorySetup} from "./JBDirectorySetup.sol";
6
10
 
7
11
  contract TestPrimaryTerminalOf_Local is JBDirectorySetup {
@@ -1,7 +1,17 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {StdStorage, stdStorage} from "forge-std/StdStorage.sol";
5
+ import {JBDirectory} from "../../../../src/JBDirectory.sol";
6
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBDirectoryAccessControl} from "../../../../src/interfaces/IJBDirectoryAccessControl.sol";
9
+ import {IJBMigratable} from "../../../../src/interfaces/IJBMigratable.sol";
10
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
11
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
12
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
13
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
14
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
15
  import {JBDirectorySetup} from "./JBDirectorySetup.sol";
6
16
 
7
17
  contract TestSetControllerOf_Local is JBDirectorySetup {
@@ -1,7 +1,13 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {StdStorage, stdStorage} from "forge-std/StdStorage.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBDirectoryAccessControl} from "../../../../src/interfaces/IJBDirectoryAccessControl.sol";
7
+ import {IJBMigratable} from "../../../../src/interfaces/IJBMigratable.sol";
8
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
9
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
10
+ import {ERC165, IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
11
  import {JBDirectorySetup} from "./JBDirectorySetup.sol";
6
12
 
7
13
  /// @notice A mock controller that asserts the directory still points to it during migrate().
@@ -1,7 +1,17 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {StdStorage, stdStorage} from "forge-std/StdStorage.sol";
5
+ import {JBDirectory} from "../../../../src/JBDirectory.sol";
6
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBDirectoryAccessControl} from "../../../../src/interfaces/IJBDirectoryAccessControl.sol";
9
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
10
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
11
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
12
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
13
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
14
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
15
  import {JBDirectorySetup} from "./JBDirectorySetup.sol";
6
16
 
7
17
  contract TestSetPrimaryTerminalOf_Local is JBDirectorySetup {
@@ -1,7 +1,16 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {StdStorage, stdStorage} from "forge-std/StdStorage.sol";
5
+ import {JBDirectory} from "../../../../src/JBDirectory.sol";
6
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBDirectoryAccessControl} from "../../../../src/interfaces/IJBDirectoryAccessControl.sol";
9
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
10
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
11
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
12
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
13
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
14
  import {JBDirectorySetup} from "./JBDirectorySetup.sol";
6
15
 
7
16
  contract TestSetTerminalsOf_Local is JBDirectorySetup {
@@ -1,7 +1,8 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBERC20} from "../../../../src/JBERC20.sol";
5
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
5
6
  import {JBTest} from "../../../helpers/JBTest.sol";
6
7
 
7
8
  /*
@@ -2,8 +2,10 @@
2
2
  pragma solidity 0.8.26;
3
3
 
4
4
  contract SigUtils {
5
+ // forge-lint: disable-next-line(mixed-case-variable)
5
6
  bytes32 internal DOMAIN_SEPARATOR;
6
7
 
8
+ // forge-lint: disable-next-line(mixed-case-variable)
7
9
  constructor(bytes32 _DOMAIN_SEPARATOR) {
8
10
  DOMAIN_SEPARATOR = _DOMAIN_SEPARATOR;
9
11
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
  import {JBERC20Setup} from "./JBERC20Setup.sol";
6
6
  import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
7
7