@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,22 @@
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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
7
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
8
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
9
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
10
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
11
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
12
+ import {JBFees} from "../../../../src/libraries/JBFees.sol";
13
+ import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
14
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
15
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
16
+ import {JBSplitHookContext} from "../../../../src/structs/JBSplitHookContext.sol";
17
+ import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
18
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
19
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
20
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
21
 
7
22
  contract TestExecutePayout_Local is JBMultiTerminalSetup {
@@ -344,7 +359,8 @@ contract TestExecutePayout_Local is JBMultiTerminalSetup {
344
359
  });
345
360
 
346
361
  // needed for next mock call returns
347
- JBTokenAmount memory tokenAmount = JBTokenAmount(_usdc, 0, 0, _defaultAmount);
362
+ JBTokenAmount memory tokenAmount =
363
+ JBTokenAmount({token: _usdc, decimals: 0, currency: 0, value: _defaultAmount});
348
364
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
349
365
  JBRuleset memory returnedRuleset = JBRuleset({
350
366
  cycleNumber: 1,
@@ -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 {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
5
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
6
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
7
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
9
+ import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
10
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
11
+ import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
12
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
13
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
14
 
7
15
  contract TestExecuteProcessFee_Local is JBMultiTerminalSetup {
@@ -80,7 +88,8 @@ contract TestExecuteProcessFee_Local is JBMultiTerminalSetup {
80
88
  // it will call internal _pay
81
89
 
82
90
  // needed for next mock call returns
83
- JBTokenAmount memory tokenAmount = JBTokenAmount(_native, 0, 0, _defaultAmount);
91
+ JBTokenAmount memory tokenAmount =
92
+ JBTokenAmount({token: _native, decimals: 0, currency: 0, value: _defaultAmount});
84
93
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
85
94
  JBRuleset memory returnedRuleset = JBRuleset({
86
95
  cycleNumber: 1,
@@ -143,7 +152,8 @@ contract TestExecuteProcessFee_Local is JBMultiTerminalSetup {
143
152
  // it will call external pay with zero msgvalue
144
153
 
145
154
  // needed for next mock call returns
146
- JBTokenAmount memory tokenAmount = JBTokenAmount(_usdc, 0, 0, _defaultAmount);
155
+ JBTokenAmount memory tokenAmount =
156
+ JBTokenAmount({token: _usdc, decimals: 0, currency: 0, value: _defaultAmount});
147
157
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
148
158
  JBRuleset memory returnedRuleset = JBRuleset({
149
159
  cycleNumber: 1,
@@ -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 {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
5
+ import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
6
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
7
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
8
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
9
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
10
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
11
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
12
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
13
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
14
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
15
 
7
16
  contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
@@ -9,8 +18,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
9
18
  uint256 _defaultAmount = 1e18;
10
19
  address _bene = makeAddr("beneficiary");
11
20
  address _native = JBConstants.NATIVE_TOKEN;
21
+ // forge-lint: disable-next-line(unsafe-typecast)
12
22
  uint256 _nativeCurrency = uint32(uint160(_native));
13
23
  address _usdc = makeAddr("USDC");
24
+ // forge-lint: disable-next-line(unsafe-typecast)
14
25
  uint256 _usdcCurrency = uint32(uint160(_usdc));
15
26
 
16
27
  IJBTerminal _newTerminal = IJBTerminal(makeAddr("newTerminal"));
@@ -94,8 +105,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
94
105
  // it will safeIncreaseAllowance and addToBalanceOf
95
106
 
96
107
  // for next mock
108
+ // forge-lint: disable-next-line(unsafe-typecast)
97
109
  JBAccountingContext memory _context =
98
- JBAccountingContext({token: _usdc, decimals: 6, currency: uint32(_usdcCurrency)});
110
+ // forge-lint: disable-next-line(unsafe-typecast)
111
+ JBAccountingContext({token: _usdc, decimals: 6, currency: uint32(_usdcCurrency)});
99
112
 
100
113
  // mock call to the destination terminals accountingContextFor
101
114
  mockExpect(
@@ -131,8 +144,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
131
144
  // it will addToBalanceOf with value in msgvalue
132
145
 
133
146
  // for next mock
147
+ // forge-lint: disable-next-line(unsafe-typecast)
134
148
  JBAccountingContext memory _context =
135
- JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
149
+ // forge-lint: disable-next-line(unsafe-typecast)
150
+ JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
136
151
 
137
152
  // mock call to the destination terminals accountingContextFor
138
153
  mockExpect(
@@ -165,8 +180,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
165
180
  // it will not add to balance
166
181
 
167
182
  // for next mock
183
+ // forge-lint: disable-next-line(unsafe-typecast)
168
184
  JBAccountingContext memory _context =
169
- JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
185
+ // forge-lint: disable-next-line(unsafe-typecast)
186
+ JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
170
187
 
171
188
  // mock call to the destination terminals accountingContextFor
172
189
  mockExpect(
@@ -1,7 +1,24 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {MockERC20} from "../../../mock/MockERC20.sol";
5
+ import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
6
+ import {IJBController} from "../../../../src/interfaces/IJBController.sol";
7
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
8
+ import {IJBPayHook} from "../../../../src/interfaces/IJBPayHook.sol";
9
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
10
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
11
+ import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
12
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
13
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
14
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
15
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
16
+ import {JBAfterPayRecordedContext} from "../../../../src/structs/JBAfterPayRecordedContext.sol";
17
+ import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
18
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
19
+ import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
20
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
21
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
22
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
23
 
7
24
  contract TestPay_Local is JBMultiTerminalSetup {
@@ -9,8 +26,10 @@ contract TestPay_Local is JBMultiTerminalSetup {
9
26
  uint256 _defaultAmount = 1e18;
10
27
  address _bene = makeAddr("beneficiary");
11
28
  address _native = JBConstants.NATIVE_TOKEN;
29
+ // forge-lint: disable-next-line(unsafe-typecast)
12
30
  uint32 _nativeCurrency = uint32(uint160(_native));
13
31
  address _usdc = makeAddr("USDC");
32
+ // forge-lint: disable-next-line(unsafe-typecast)
14
33
  uint32 _usdcCurrency = uint32(uint160(_usdc));
15
34
 
16
35
  address _mockController = makeAddr("mc");
@@ -102,7 +121,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
102
121
  // it will revert UNDER_MIN_RETURNED_TOKENS
103
122
 
104
123
  // needed for next mock call returns
105
- JBTokenAmount memory tokenAmount = JBTokenAmount(_native, 18, uint32(_nativeCurrency), _defaultAmount);
124
+ JBTokenAmount memory tokenAmount =
125
+ JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
106
126
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
107
127
  JBRuleset memory returnedRuleset = JBRuleset({
108
128
  cycleNumber: 1,
@@ -143,7 +163,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
143
163
  // it will mint tokens and emit Pay
144
164
 
145
165
  // needed for next mock call returns
146
- JBTokenAmount memory tokenAmount = JBTokenAmount(_native, 18, uint32(_nativeCurrency), _defaultAmount);
166
+ JBTokenAmount memory tokenAmount =
167
+ JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
147
168
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
148
169
  JBRuleset memory returnedRuleset = JBRuleset({
149
170
  cycleNumber: 1,
@@ -230,7 +251,10 @@ contract TestPay_Local is JBMultiTerminalSetup {
230
251
 
231
252
  // needed for next mock call returns
232
253
  JBTokenAmount memory tokenAmount =
233
- JBTokenAmount(address(_mockToken), 6, uint32(_mockTokenCurrency), _defaultAmount);
254
+ // forge-lint: disable-next-line(unsafe-typecast)
255
+ JBTokenAmount({
256
+ token: address(_mockToken), decimals: 6, currency: uint32(_mockTokenCurrency), value: _defaultAmount
257
+ });
234
258
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](1);
235
259
  hookSpecifications[0] = JBPayHookSpecification({hook: _mockHook, amount: _defaultAmount, metadata: ""});
236
260
 
@@ -320,7 +344,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
320
344
  // it will send ETH to the hook and emit HookAfterRecordPay and Pay
321
345
 
322
346
  // needed for next mock call returns
323
- JBTokenAmount memory tokenAmount = JBTokenAmount(_native, 18, uint32(_nativeCurrency), _defaultAmount);
347
+ JBTokenAmount memory tokenAmount =
348
+ JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
324
349
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](1);
325
350
  hookSpecifications[0] = JBPayHookSpecification({hook: _mockHook, amount: _defaultAmount, metadata: ""});
326
351
 
@@ -452,7 +477,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
452
477
  // it will not transfer
453
478
 
454
479
  // needed for next mock call returns
455
- JBTokenAmount memory tokenAmount = JBTokenAmount(_native, 18, uint32(_nativeCurrency), _defaultAmount);
480
+ JBTokenAmount memory tokenAmount =
481
+ JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
456
482
  JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
457
483
 
458
484
  JBRuleset memory returnedRuleset = JBRuleset({
@@ -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 {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
5
 
7
6
  contract TestProcessHeldFeesOf_Local is JBMultiTerminalSetup {
@@ -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 {JBPermissioned} from "../../../../src/abstract/JBPermissioned.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 {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
10
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
11
+ import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
12
+ import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
13
+ import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
14
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
15
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
16
+ import {JBSplit} from "../../../../src/structs/JBSplit.sol";
17
+ import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
18
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
19
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
20
 
7
21
  contract TestSendPayoutsOf_Local is JBMultiTerminalSetup {
@@ -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 {