@bananapus/core-v6 0.0.14 → 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 (216) 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 +150 -43
  5. package/foundry.toml +3 -3
  6. package/package.json +4 -4
  7. package/remappings.txt +1 -1
  8. package/script/Deploy.s.sol +23 -16
  9. package/script/DeployPeriphery.s.sol +71 -66
  10. package/script/helpers/CoreDeploymentLib.sol +84 -37
  11. package/src/JBChainlinkV3PriceFeed.sol +1 -0
  12. package/src/JBController.sol +19 -4
  13. package/src/JBERC20.sol +12 -3
  14. package/src/JBFundAccessLimits.sol +12 -2
  15. package/src/JBMultiTerminal.sol +3 -1
  16. package/src/JBPermissions.sol +1 -0
  17. package/src/JBProjects.sol +1 -1
  18. package/src/JBRulesets.sol +11 -0
  19. package/src/JBSplits.sol +5 -0
  20. package/src/JBTerminalStore.sol +3 -0
  21. package/src/JBTokens.sol +40 -4
  22. package/src/interfaces/IJBController.sol +6 -1
  23. package/src/interfaces/IJBPayoutTerminal.sol +0 -1
  24. package/src/interfaces/IJBPermitTerminal.sol +1 -0
  25. package/src/interfaces/IJBToken.sol +5 -0
  26. package/src/interfaces/IJBTokens.sol +13 -0
  27. package/src/libraries/JBMetadataResolver.sol +7 -3
  28. package/src/libraries/JBRulesetMetadataResolver.sol +21 -21
  29. package/src/structs/JBAccountingContext.sol +1 -0
  30. package/src/structs/JBAfterCashOutRecordedContext.sol +1 -0
  31. package/src/structs/JBAfterPayRecordedContext.sol +1 -0
  32. package/src/structs/JBBeforeCashOutRecordedContext.sol +1 -0
  33. package/src/structs/JBBeforePayRecordedContext.sol +1 -0
  34. package/src/structs/JBCashOutHookSpecification.sol +1 -0
  35. package/src/structs/JBCurrencyAmount.sol +1 -0
  36. package/src/structs/JBFee.sol +1 -0
  37. package/src/structs/JBFundAccessLimitGroup.sol +1 -0
  38. package/src/structs/JBPayHookSpecification.sol +1 -0
  39. package/src/structs/JBPermissionsData.sol +1 -0
  40. package/src/structs/JBRuleset.sol +1 -0
  41. package/src/structs/JBRulesetConfig.sol +1 -0
  42. package/src/structs/JBRulesetMetadata.sol +1 -0
  43. package/src/structs/JBRulesetWeightCache.sol +1 -0
  44. package/src/structs/JBRulesetWithMetadata.sol +1 -0
  45. package/src/structs/JBSingleAllowance.sol +1 -0
  46. package/src/structs/JBSplit.sol +1 -0
  47. package/src/structs/JBSplitGroup.sol +1 -0
  48. package/src/structs/JBSplitHookContext.sol +1 -0
  49. package/src/structs/JBTerminalConfig.sol +1 -0
  50. package/src/structs/JBTokenAmount.sol +1 -0
  51. package/test/ComprehensiveInvariant.t.sol +15 -5
  52. package/test/{AuditExploits.t.sol → CoreExploitTests.t.sol} +35 -4
  53. package/test/EconomicSimulation.t.sol +10 -2
  54. package/test/EntryPointPermutations.t.sol +18 -5
  55. package/test/FlashLoanAttacks.t.sol +12 -2
  56. package/test/PermissionEscalation.t.sol +54 -22
  57. package/test/RulesetTransitions.t.sol +15 -1
  58. package/test/SplitLoopTests.t.sol +26 -5
  59. package/test/TestAccessToFunds.sol +17 -2
  60. package/test/TestCashOut.sol +15 -2
  61. package/test/TestCashOutCountFor.sol +1 -2
  62. package/test/TestCashOutHooks.sol +47 -25
  63. package/test/TestCashOutTimingEdge.sol +13 -1
  64. package/test/TestDurationUnderflow.sol +13 -1
  65. package/test/TestFeeProcessingFailure.sol +17 -7
  66. package/test/TestFees.sol +14 -1
  67. package/test/TestInterfaceSupport.sol +20 -1
  68. package/test/TestJBERC20Inheritance.sol +11 -1
  69. package/test/TestLaunchProject.sol +13 -1
  70. package/test/TestMetaTx.sol +15 -1
  71. package/test/TestMetadataParserLib.sol +37 -4
  72. package/test/TestMigrationHeldFees.sol +17 -11
  73. package/test/TestMintTokensOf.sol +14 -1
  74. package/test/TestMultiTokenSurplus.sol +14 -1
  75. package/test/TestMultipleAccessLimits.sol +23 -1
  76. package/test/TestPayBurnRedeemFlow.sol +16 -1
  77. package/test/TestPayHooks.sol +33 -14
  78. package/test/TestPermissions.sol +20 -1
  79. package/test/TestPermissionsEdge.sol +5 -1
  80. package/test/TestPermit2Terminal.sol +36 -3
  81. package/test/TestRulesetQueueing.sol +24 -1
  82. package/test/TestRulesetQueuingStress.sol +28 -2
  83. package/test/TestRulesetWeightCaching.sol +5 -2
  84. package/test/TestSplits.sol +23 -1
  85. package/test/TestTerminalMigration.sol +11 -1
  86. package/test/TestTokenFlow.sol +18 -1
  87. package/test/TestWeightCacheStaleAfterRejection.sol +15 -1
  88. package/test/WeirdTokenTests.t.sol +18 -2
  89. package/test/fork/TestChainlinkPriceFeedFork.sol +254 -0
  90. package/test/formal/BondingCurveProperties.t.sol +8 -2
  91. package/test/formal/FeeProperties.t.sol +7 -1
  92. package/test/helpers/JBTest.sol +7 -7
  93. package/test/helpers/TestBaseWorkflow.sol +84 -1
  94. package/test/invariants/Phase3DeepInvariant.t.sol +13 -5
  95. package/test/invariants/RulesetsInvariant.t.sol +12 -2
  96. package/test/invariants/TerminalStoreInvariant.t.sol +11 -2
  97. package/test/invariants/TokensInvariant.t.sol +13 -2
  98. package/test/invariants/handlers/ComprehensiveHandler.sol +19 -1
  99. package/test/invariants/handlers/EconomicHandler.sol +31 -1
  100. package/test/invariants/handlers/Phase3Handler.sol +31 -2
  101. package/test/invariants/handlers/RulesetsHandler.sol +5 -1
  102. package/test/invariants/handlers/TerminalStoreHandler.sol +6 -1
  103. package/test/invariants/handlers/TokensHandler.sol +1 -2
  104. package/test/mock/ERC2771ForwarderMock.sol +1 -1
  105. package/test/mock/MockERC20.sol +1 -3
  106. package/test/mock/MockMaliciousBeneficiary.sol +2 -2
  107. package/test/mock/MockMaliciousSplitHook.sol +2 -1
  108. package/test/mock/MockPriceFeed.sol +1 -1
  109. package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +0 -1
  110. package/test/units/static/JBController/JBControllerSetup.sol +10 -1
  111. package/test/units/static/JBController/TestBurnTokensOf.sol +8 -1
  112. package/test/units/static/JBController/TestClaimTokensFor.sol +4 -1
  113. package/test/units/static/JBController/TestDeployErc20For.sol +7 -1
  114. package/test/units/static/JBController/TestLaunchProjectFor.sol +21 -1
  115. package/test/units/static/JBController/TestLaunchRulesetsFor.sol +21 -1
  116. package/test/units/static/JBController/TestMigrateController.sol +10 -1
  117. package/test/units/static/JBController/TestMintTokensOfUnits.sol +10 -1
  118. package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +4 -1
  119. package/test/units/static/JBController/TestReceiveMigrationFrom.sol +5 -1
  120. package/test/units/static/JBController/TestRulesetViews.sol +7 -1
  121. package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +21 -1
  122. package/test/units/static/JBController/TestSetSplitGroupsOf.sol +6 -1
  123. package/test/units/static/JBController/TestSetTokenFor.sol +13 -1
  124. package/test/units/static/JBController/TestSetUriOf.sol +5 -1
  125. package/test/units/static/JBController/TestTransferCreditsFrom.sol +11 -1
  126. package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +15 -4
  127. package/test/units/static/JBDirectory/JBDirectorySetup.sol +4 -1
  128. package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +5 -1
  129. package/test/units/static/JBDirectory/TestSetControllerOf.sol +11 -1
  130. package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +7 -1
  131. package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +11 -1
  132. package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +10 -1
  133. package/test/units/static/JBERC20/JBERC20Setup.sol +2 -1
  134. package/test/units/static/JBERC20/SigUtils.sol +2 -0
  135. package/test/units/static/JBERC20/TestInitialize.sol +1 -1
  136. package/test/units/static/JBERC20/TestName.sol +1 -1
  137. package/test/units/static/JBERC20/TestNonces.sol +3 -1
  138. package/test/units/static/JBERC20/TestSymbol.sol +1 -1
  139. package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +2 -1
  140. package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +2 -1
  141. package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +1 -1
  142. package/test/units/static/JBFees/TestFeesFuzz.sol +1 -1
  143. package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +0 -1
  144. package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +0 -1
  145. package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +3 -1
  146. package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +4 -1
  147. package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +4 -1
  148. package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +8 -1
  149. package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +8 -1
  150. package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +4 -1
  151. package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +7 -1
  152. package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +1 -1
  153. package/test/units/static/JBMetadataResolver/{TestMetadataResolverM20M21.sol → TestMetadataResolverEdgeCases.sol} +6 -5
  154. package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +2 -1
  155. package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +12 -1
  156. package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +9 -1
  157. package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +18 -2
  158. package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +42 -7
  159. package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +30 -6
  160. package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +18 -2
  161. package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +13 -3
  162. package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +21 -4
  163. package/test/units/static/JBMultiTerminal/TestPay.sol +32 -6
  164. package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +0 -1
  165. package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +15 -1
  166. package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +17 -1
  167. package/test/units/static/JBPermissions/JBPermissionsSetup.sol +2 -1
  168. package/test/units/static/JBPermissions/TestHasPermission.sol +1 -1
  169. package/test/units/static/JBPermissions/TestHasPermissions.sol +1 -1
  170. package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +3 -1
  171. package/test/units/static/JBPrices/JBPricesSetup.sol +6 -1
  172. package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +6 -1
  173. package/test/units/static/JBPrices/TestPricePerUnitOf.sol +4 -1
  174. package/test/units/static/JBPrices/TestPrices.sol +4 -1
  175. package/test/units/static/JBProjects/JBProjectsSetup.sol +2 -1
  176. package/test/units/static/JBProjects/TestCreateFor.sol +3 -1
  177. package/test/units/static/JBProjects/TestInitialProject.sol +2 -1
  178. package/test/units/static/JBProjects/TestInterfaces.sol +0 -1
  179. package/test/units/static/JBProjects/TestSetResolver.sol +2 -1
  180. package/test/units/static/JBProjects/TestTokenUri.sol +3 -1
  181. package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +9 -1
  182. package/test/units/static/JBRulesets/JBRulesetsSetup.sol +3 -1
  183. package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +9 -1
  184. package/test/units/static/JBRulesets/TestCurrentOf.sol +10 -1
  185. package/test/units/static/JBRulesets/TestGetRulesetOf.sol +7 -1
  186. package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +9 -1
  187. package/test/units/static/JBRulesets/TestRulesets.sol +12 -2
  188. package/test/units/static/JBRulesets/TestRulesetsOf.sol +1 -1
  189. package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +10 -1
  190. package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +6 -1
  191. package/test/units/static/JBSplits/JBSplitsSetup.sol +3 -1
  192. package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +8 -1
  193. package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +8 -1
  194. package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +6 -1
  195. package/test/units/static/JBSplits/TestSplitsOf.sol +1 -1
  196. package/test/units/static/JBSplits/TestSplitsPacking.sol +5 -2
  197. package/test/units/static/JBSurplus/TestSurplusFuzz.sol +4 -2
  198. package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +5 -1
  199. package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +14 -1
  200. package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +14 -1
  201. package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +3 -1
  202. package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +20 -1
  203. package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +15 -1
  204. package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +13 -1
  205. package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +8 -1
  206. package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +16 -1
  207. package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +15 -1
  208. package/test/units/static/JBTokens/JBTokensSetup.sol +5 -1
  209. package/test/units/static/JBTokens/TestBurnFrom.sol +4 -1
  210. package/test/units/static/JBTokens/TestClaimTokensFor.sol +4 -1
  211. package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +4 -1
  212. package/test/units/static/JBTokens/TestMintFor.sol +4 -1
  213. package/test/units/static/JBTokens/TestSetTokenFor.sol +4 -1
  214. package/test/units/static/JBTokens/TestTotalBalanceOf.sol +1 -1
  215. package/test/units/static/JBTokens/TestTotalSupplyOf.sol +1 -1
  216. package/test/units/static/JBTokens/TestTransferCreditsFrom.sol +3 -1
@@ -1,7 +1,21 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
5
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
8
+ import {IJBPayoutTerminal} from "../../../../src/interfaces/IJBPayoutTerminal.sol";
9
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
10
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
11
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
12
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
13
+ import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
14
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
15
+ import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
16
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
17
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
18
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
19
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
20
 
7
21
  contract TestUseAllowanceOf_Local is JBMultiTerminalSetup {
@@ -177,6 +191,7 @@ contract TestUseAllowanceOf_Local is JBMultiTerminalSetup {
177
191
  // Weight for a fee calculation that would take place in terminal store
178
192
  uint112 weight = 1000 * 10 ** 18;
179
193
 
194
+ // forge-lint: disable-next-line(unsafe-typecast)
180
195
  uint32 currencyId = uint32(uint160(mockToken));
181
196
 
182
197
  // Start the cascade of issuing project tokens to the fee beneficiary. (recieving platform tokens for paying a
@@ -288,6 +303,7 @@ contract TestUseAllowanceOf_Local is JBMultiTerminalSetup {
288
303
  });
289
304
  }
290
305
 
306
+ // forge-lint: disable-next-line(mixed-case-function)
291
307
  modifier whenMsgSenderDNEQFeeless() {
292
308
  _;
293
309
  }
@@ -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 {JBPermissions} from "../../../../src/JBPermissions.sol";
5
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
5
6
  import {JBTest} from "../../../helpers/JBTest.sol";
6
7
 
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 {JBPermissions} from "../../../../src/JBPermissions.sol";
5
5
  import {JBPermissionsSetup} from "./JBPermissionsSetup.sol";
6
6
 
7
7
  contract TestHasPermissions_Local is JBPermissionsSetup {
@@ -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 {JBPermissions} from "../../../../src/JBPermissions.sol";
5
5
  import {JBPermissionsSetup} from "./JBPermissionsSetup.sol";
6
6
 
7
7
  contract TestHasPermissions_Local is JBPermissionsSetup {
@@ -1,7 +1,9 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBPermissions} from "../../../../src/JBPermissions.sol";
5
+ import {JBPermissionsData} from "../../../../src/structs/JBPermissionsData.sol";
6
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
5
7
  import {JBPermissionsSetup} from "./JBPermissionsSetup.sol";
6
8
 
7
9
  contract TestSetPermissionsFor_Local is JBPermissionsSetup {
@@ -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 {JBPrices} from "../../../../src/JBPrices.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
7
+ import {IJBPrices} from "../../../../src/interfaces/IJBPrices.sol";
8
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
9
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
5
10
  import {JBTest} from "../../../helpers/JBTest.sol";
6
11
 
7
12
  /*
@@ -1,11 +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 {JBPrices} from "../../../../src/JBPrices.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBPriceFeed} from "../../../../src/interfaces/IJBPriceFeed.sol";
7
+ import {IJBPrices} from "../../../../src/interfaces/IJBPrices.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
5
9
  import {JBPricesSetup} from "./JBPricesSetup.sol";
6
10
 
7
11
  contract TestAddPriceFeedFor_Local is JBPricesSetup {
8
12
  IJBPriceFeed _feed = IJBPriceFeed(makeAddr("feed"));
13
+ // forge-lint: disable-next-line(mixed-case-variable)
9
14
  uint256 DEFAULT_PROJECT_ID = 0;
10
15
  uint256 _projectId = 1;
11
16
  address _projectOneOwner = makeAddr("oneOwner");
@@ -1,11 +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 {JBPrices} from "../../../../src/JBPrices.sol";
5
+ import {IJBPriceFeed} from "../../../../src/interfaces/IJBPriceFeed.sol";
6
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
5
7
  import {JBPricesSetup} from "./JBPricesSetup.sol";
6
8
 
7
9
  contract TestPricePerUnitOf_Local is JBPricesSetup {
8
10
  IJBPriceFeed _feed = IJBPriceFeed(makeAddr("priceFeed"));
11
+ // forge-lint: disable-next-line(mixed-case-variable)
9
12
  uint256 DEFAULT_PROJECT_ID = 0;
10
13
  uint256 _projectId = 1;
11
14
  uint256 _defaultDirectPrice = 1_000_000_000;
@@ -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 {JBPrices} from "../../../../src/JBPrices.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
7
+ import {mulDiv} from "@prb/math/src/Common.sol";
5
8
  import {JBPricesSetup} from "./JBPricesSetup.sol";
6
9
  import {MockPriceFeed} from "../../../mock/MockPriceFeed.sol";
7
10
 
@@ -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 {JBProjects} from "../../../../src/JBProjects.sol";
5
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
5
6
  import {JBTest} from "../../../helpers/JBTest.sol";
6
7
 
7
8
  /*
@@ -1,7 +1,9 @@
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 {stdError} from "forge-std/StdError.sol";
6
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
5
7
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
8
  import {JBProjectsSetup} from "./JBProjectsSetup.sol";
7
9
 
@@ -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 {JBProjects} from "../../../../src/JBProjects.sol";
5
+ import {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
5
6
  import {JBTest} from "../../../helpers/JBTest.sol";
6
7
 
7
8
  contract TestInitialProject_Local is JBTest {
@@ -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 {JBProjectsSetup} from "./JBProjectsSetup.sol";
6
5
 
7
6
  contract TestSupportsInterface_Local is JBProjectsSetup {
@@ -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 {IJBProjects} from "../../../../src/interfaces/IJBProjects.sol";
5
+ import {IJBTokenUriResolver} from "../../../../src/interfaces/IJBTokenUriResolver.sol";
5
6
  import {JBProjectsSetup} from "./JBProjectsSetup.sol";
6
7
 
7
8
  contract TestSetTokenURIResolver_Local is JBProjectsSetup {
@@ -1,7 +1,9 @@
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 {IJBTokenUriResolver} from "../../../../src/interfaces/IJBTokenUriResolver.sol";
6
+ import {IERC721Metadata} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
5
7
  import {JBProjectsSetup} from "./JBProjectsSetup.sol";
6
8
 
7
9
  contract TestTokenURI_Local is JBProjectsSetup {
@@ -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 {JBConstants} from "../../../../src/libraries/JBConstants.sol";
5
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
6
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
7
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
5
8
  import {JBTest} from "../../../helpers/JBTest.sol";
6
9
 
7
10
  contract TestSetCashOutTaxRateTo_Local is JBTest {
@@ -50,24 +53,29 @@ contract TestSetCashOutTaxRateTo_Local is JBTest {
50
53
  uint256 _packed = _rulesMetadata.packRulesetMetadata();
51
54
 
52
55
  // Reserved Rate
56
+ // forge-lint: disable-next-line(unsafe-typecast)
53
57
  uint256 _reservedPercent = uint256(uint16(_packed >> 4));
54
58
 
55
59
  // Cash out tax rate
60
+ // forge-lint: disable-next-line(unsafe-typecast)
56
61
  uint256 _cashOutTaxRate = uint256(uint16(_packed >> 20));
57
62
 
58
63
  assertEq(_reservedPercent, _fuzzReservedPercent);
59
64
  assertEq(_cashOutTaxRate, _fuzzCashOutTaxRate);
60
65
 
61
66
  for (uint256 _i = 68; _i < 81; _i++) {
67
+ // forge-lint: disable-next-line(unsafe-typecast)
62
68
  uint256 _flag = uint256(uint16(_packed >> _i) & 1);
63
69
  assertEq(_flag, 1);
64
70
  }
65
71
 
66
72
  // Data source address
73
+ // forge-lint: disable-next-line(unsafe-typecast)
67
74
  address _packedDataHook = address(uint160(_packed >> 82));
68
75
  assertEq(_packedDataHook, _hookAddress);
69
76
 
70
77
  // Metadata
78
+ // forge-lint: disable-next-line(unsafe-typecast)
71
79
  uint256 _packedMetadata = uint256(uint16(_packed >> 242));
72
80
  assertEq(_packedMetadata, uint256(_fuzzMetadata));
73
81
  }
@@ -1,7 +1,9 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBRulesets} from "../../../../src/JBRulesets.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
5
7
  import {JBTest} from "../../../helpers/JBTest.sol";
6
8
 
7
9
  /*
@@ -1,7 +1,15 @@
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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
7
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
9
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
10
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
11
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
12
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
13
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
14
 
7
15
  contract TestCurrentApprovalStatusForLatestRulesetOf_Local is JBRulesetsSetup {
@@ -1,7 +1,15 @@
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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
7
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
9
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
10
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
11
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
12
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
13
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
14
 
7
15
  contract TestCurrentOf_Local is JBRulesetsSetup {
@@ -79,6 +87,7 @@ contract TestCurrentOf_Local is JBRulesetsSetup {
79
87
  assertEq(_ruleset.id, 0);
80
88
  }
81
89
 
90
+ // forge-lint: disable-next-line(mixed-case-function)
82
91
  modifier whenLatestRulesetIdDNEQZero() {
83
92
  // put code at hook address
84
93
  vm.etch(address(_mockApprovalHook), abi.encode(1));
@@ -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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
6
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
7
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
8
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
9
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
10
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
5
11
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
12
 
7
13
  contract TestGetRulesetOf_Local is JBRulesetsSetup {
@@ -1,7 +1,15 @@
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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
7
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
9
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
10
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
11
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
12
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
13
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
14
 
7
15
  contract TestLatestQueuedRulesetOf_Local is JBRulesetsSetup {
@@ -1,9 +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 {stdError} from "forge-std/StdError.sol";
5
+ import {JBRulesets} from "../../../../src/JBRulesets.sol";
6
+ import {JBApprovalStatus} from "../../../../src/enums/JBApprovalStatus.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
9
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
10
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.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 {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
16
  import {JBTest} from "../../../helpers/JBTest.sol";
6
- import {JBRulesetWeightCache} from "src/structs/JBRulesetWeightCache.sol";
7
17
 
8
18
  contract TestJBRulesetsUnits_Local is JBTest {
9
19
  // Contracts
@@ -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 {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
5
5
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
6
 
7
7
  contract TestRulesetsOf_Local is JBRulesetsSetup {
@@ -1,7 +1,15 @@
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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
7
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
9
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
10
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
11
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
12
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
13
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
14
 
7
15
  contract TestUpcomingOf_Local is JBRulesetsSetup {
@@ -79,6 +87,7 @@ contract TestUpcomingOf_Local is JBRulesetsSetup {
79
87
  assertEq(_upcoming.id, 0);
80
88
  }
81
89
 
90
+ // forge-lint: disable-next-line(mixed-case-function)
82
91
  modifier whenUpcomingRulesetIdDNEQZero() {
83
92
  // put code at hook address
84
93
  vm.etch(address(_mockApprovalHook), abi.encode(1));
@@ -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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
6
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
7
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
8
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
9
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
5
10
  import {JBRulesetsSetup} from "./JBRulesetsSetup.sol";
6
11
 
7
12
  contract TestUpdateRulesetWeightCache_Local is JBRulesetsSetup {
@@ -1,7 +1,9 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {JBSplits} from "../../../../src/JBSplits.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
5
7
  import {JBTest} from "../../../helpers/JBTest.sol";
6
8
 
7
9
  /*
@@ -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 {JBSplits} from "../../../../src/JBSplits.sol";
5
+ import {JBControlled} from "../../../../src/abstract/JBControlled.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
8
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
9
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
10
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
11
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
5
12
  import {JBSplitsSetup} from "./JBSplitsSetup.sol";
6
13
 
7
14
  contract TestSelfManagedSplitGroups_Local is JBSplitsSetup {
@@ -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 {JBSplits} from "../../../../src/JBSplits.sol";
5
+ import {JBControlled} from "../../../../src/abstract/JBControlled.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
8
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
9
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
10
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
11
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
5
12
  import {JBSplitsSetup} from "./JBSplitsSetup.sol";
6
13
 
7
14
  contract TestSetSplitGroupsOf_Local is JBSplitsSetup {
@@ -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 {JBSplits} from "../../../../src/JBSplits.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
7
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
8
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
9
+ import {JBSplitGroup} from "../../../../src/structs/JBSplitGroup.sol";
5
10
  import {JBSplitsSetup} from "./JBSplitsSetup.sol";
6
11
 
7
12
  /// @notice Edge case tests for JBSplits lock enforcement.
@@ -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 {JBSplit} from "../../../../src/structs/JBSplit.sol";
5
5
  import {JBSplitsSetup} from "./JBSplitsSetup.sol";
6
6
 
7
7
  contract TestSplitsOf_Local is JBSplitsSetup {
@@ -1,8 +1,11 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import "src/JBSplits.sol";
5
- import "forge-std/Test.sol";
4
+ import {JBSplits} from "src/JBSplits.sol";
5
+ import {IJBDirectory} from "src/interfaces/IJBDirectory.sol";
6
+ import {JBConstants} from "src/libraries/JBConstants.sol";
7
+ import {JBSplit} from "src/structs/JBSplit.sol";
8
+ import {Test} from "forge-std/Test.sol";
6
9
 
7
10
  contract TestSplitsPacking_Local is JBSplits, Test {
8
11
  constructor() JBSplits(IJBDirectory(address(0))) {}
@@ -1,7 +1,9 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
5
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
6
+ import {ERC165, IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
7
  import {JBTest} from "../../../helpers/JBTest.sol";
6
8
  import {JBSurplus} from "../../../../src/libraries/JBSurplus.sol";
7
9
 
@@ -53,7 +55,7 @@ contract MockSurplusTerminal is ERC165, IJBTerminal {
53
55
  override
54
56
  {}
55
57
 
56
- function migrateBalanceOf(uint256, address, IJBTerminal) external override returns (uint256) {
58
+ function migrateBalanceOf(uint256, address, IJBTerminal) external pure override returns (uint256) {
57
59
  return 0;
58
60
  }
59
61
 
@@ -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 {JBTerminalStore} from "../../../../src/JBTerminalStore.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBPrices} from "../../../../src/interfaces/IJBPrices.sol";
7
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
8
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
5
9
  import {JBTest} from "../../../helpers/JBTest.sol";
6
10
 
7
11
  /*
@@ -1,7 +1,20 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
7
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
8
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
9
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
10
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
11
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
12
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
13
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
14
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
15
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
16
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
17
+ import {mulDiv} from "@prb/math/src/Common.sol";
5
18
  import {JBTerminalStoreSetup} from "./JBTerminalStoreSetup.sol";
6
19
  import {JBCashOuts} from "../../../../src/libraries/JBCashOuts.sol";
7
20
 
@@ -1,7 +1,20 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
7
+ import {IJBPrices} from "../../../../src/interfaces/IJBPrices.sol";
8
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
9
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
10
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
11
+ import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
12
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
13
+ import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
14
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
15
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
16
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
17
+ import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
5
18
  import {JBTerminalStoreSetup} from "./JBTerminalStoreSetup.sol";
6
19
 
7
20
  contract TestCurrentSurplusOf_Local is JBTerminalStoreSetup {
@@ -1,7 +1,9 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
6
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
5
7
  import {JBTerminalStoreSetup} from "./JBTerminalStoreSetup.sol";
6
8
 
7
9
  contract TestCurrentTotalSurplusOf_Local is JBTerminalStoreSetup {