@bananapus/core-v6 0.0.15 → 0.0.17

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 (231) hide show
  1. package/ADMINISTRATION.md +5 -1
  2. package/ARCHITECTURE.md +2 -1
  3. package/AUDIT_INSTRUCTIONS.md +342 -0
  4. package/CHANGE_LOG.md +375 -0
  5. package/README.md +6 -6
  6. package/RISKS.md +171 -50
  7. package/SKILLS.md +11 -6
  8. package/STYLE_GUIDE.md +16 -2
  9. package/USER_JOURNEYS.md +622 -0
  10. package/package.json +2 -2
  11. package/script/Deploy.s.sol +22 -13
  12. package/script/DeployPeriphery.s.sol +76 -52
  13. package/script/helpers/CoreDeploymentLib.sol +83 -35
  14. package/src/JBChainlinkV3PriceFeed.sol +1 -0
  15. package/src/JBController.sol +23 -3
  16. package/src/JBDeadline.sol +3 -0
  17. package/src/JBDirectory.sol +2 -1
  18. package/src/JBERC20.sol +12 -3
  19. package/src/JBFundAccessLimits.sol +12 -2
  20. package/src/JBMultiTerminal.sol +53 -10
  21. package/src/JBPermissions.sol +3 -0
  22. package/src/JBPrices.sol +8 -2
  23. package/src/JBProjects.sol +1 -1
  24. package/src/JBRulesets.sol +14 -0
  25. package/src/JBSplits.sol +14 -5
  26. package/src/JBTerminalStore.sol +57 -47
  27. package/src/JBTokens.sol +43 -4
  28. package/src/interfaces/IJBController.sol +6 -0
  29. package/src/interfaces/IJBPermitTerminal.sol +1 -0
  30. package/src/interfaces/IJBTerminalStore.sol +3 -0
  31. package/src/interfaces/IJBToken.sol +5 -0
  32. package/src/interfaces/IJBTokens.sol +13 -0
  33. package/src/libraries/JBFees.sol +2 -0
  34. package/src/libraries/JBMetadataResolver.sol +24 -7
  35. package/src/libraries/JBRulesetMetadataResolver.sol +21 -21
  36. package/src/structs/JBAccountingContext.sol +1 -0
  37. package/src/structs/JBAfterCashOutRecordedContext.sol +1 -0
  38. package/src/structs/JBAfterPayRecordedContext.sol +1 -0
  39. package/src/structs/JBBeforeCashOutRecordedContext.sol +5 -0
  40. package/src/structs/JBBeforePayRecordedContext.sol +1 -0
  41. package/src/structs/JBCashOutHookSpecification.sol +1 -0
  42. package/src/structs/JBCurrencyAmount.sol +1 -0
  43. package/src/structs/JBFee.sol +1 -0
  44. package/src/structs/JBFundAccessLimitGroup.sol +1 -0
  45. package/src/structs/JBPayHookSpecification.sol +1 -0
  46. package/src/structs/JBPermissionsData.sol +1 -0
  47. package/src/structs/JBRuleset.sol +1 -0
  48. package/src/structs/JBRulesetConfig.sol +1 -0
  49. package/src/structs/JBRulesetMetadata.sol +1 -0
  50. package/src/structs/JBRulesetWeightCache.sol +1 -0
  51. package/src/structs/JBRulesetWithMetadata.sol +1 -0
  52. package/src/structs/JBSingleAllowance.sol +1 -0
  53. package/src/structs/JBSplit.sol +1 -0
  54. package/src/structs/JBSplitGroup.sol +1 -0
  55. package/src/structs/JBSplitHookContext.sol +1 -0
  56. package/src/structs/JBTerminalConfig.sol +1 -0
  57. package/src/structs/JBTokenAmount.sol +1 -0
  58. package/test/ComprehensiveInvariant.t.sol +15 -2
  59. package/test/CoreExploitTests.t.sol +34 -1
  60. package/test/EconomicSimulation.t.sol +10 -2
  61. package/test/EntryPointPermutations.t.sol +17 -3
  62. package/test/FlashLoanAttacks.t.sol +12 -1
  63. package/test/PermissionEscalation.t.sol +53 -10
  64. package/test/RulesetTransitions.t.sol +15 -1
  65. package/test/SplitLoopTests.t.sol +25 -2
  66. package/test/TestAccessToFunds.sol +17 -2
  67. package/test/TestAuditResponseDesignProofs.sol +434 -0
  68. package/test/TestCashOut.sol +15 -1
  69. package/test/TestCashOutCountFor.sol +1 -1
  70. package/test/TestCashOutHooks.sol +47 -25
  71. package/test/TestCashOutTimingEdge.sol +13 -1
  72. package/test/TestDataHookFuzzing.sol +520 -0
  73. package/test/TestDurationUnderflow.sol +13 -1
  74. package/test/TestFeeFreeCashOutBypass.sol +617 -0
  75. package/test/TestFeeProcessingFailure.sol +16 -1
  76. package/test/TestFees.sol +14 -1
  77. package/test/TestInterfaceSupport.sol +20 -1
  78. package/test/TestJBERC20Inheritance.sol +11 -1
  79. package/test/TestL2SequencerPriceFeed.sol +292 -0
  80. package/test/TestLaunchProject.sol +13 -1
  81. package/test/TestMetaTx.sol +15 -1
  82. package/test/TestMetadataOffsetOverflow.sol +179 -0
  83. package/test/TestMetadataParserLib.sol +37 -4
  84. package/test/TestMigrationHeldFees.sol +16 -1
  85. package/test/TestMintTokensOf.sol +14 -1
  86. package/test/TestMultiTerminalSurplus.sol +348 -0
  87. package/test/TestMultiTokenSurplus.sol +14 -1
  88. package/test/TestMultipleAccessLimits.sol +23 -1
  89. package/test/TestPayBurnRedeemFlow.sol +16 -1
  90. package/test/TestPayHooks.sol +33 -14
  91. package/test/TestPermissions.sol +20 -1
  92. package/test/TestPermissionsEdge.sol +5 -1
  93. package/test/TestPermit2DataHook.t.sol +360 -0
  94. package/test/TestPermit2Terminal.sol +36 -3
  95. package/test/TestRulesetQueueing.sol +23 -1
  96. package/test/TestRulesetQueuingStress.sol +20 -1
  97. package/test/TestRulesetWeightCaching.sol +127 -125
  98. package/test/TestSplits.sol +23 -1
  99. package/test/TestTerminalMigration.sol +11 -1
  100. package/test/TestTokenFlow.sol +18 -1
  101. package/test/TestWeightCacheStaleAfterRejection.sol +15 -1
  102. package/test/WeirdTokenTests.t.sol +54 -1
  103. package/test/fork/TestChainlinkPriceFeedFork.sol +6 -1
  104. package/test/formal/BondingCurveProperties.t.sol +8 -1
  105. package/test/formal/FeeProperties.t.sol +7 -1
  106. package/test/helpers/JBTest.sol +1 -1
  107. package/test/helpers/TestBaseWorkflow.sol +84 -1
  108. package/test/invariants/Phase3DeepInvariant.t.sol +13 -2
  109. package/test/invariants/RulesetsInvariant.t.sol +12 -2
  110. package/test/invariants/TerminalStoreInvariant.t.sol +11 -2
  111. package/test/invariants/TokensInvariant.t.sol +13 -2
  112. package/test/invariants/handlers/ComprehensiveHandler.sol +19 -1
  113. package/test/invariants/handlers/EconomicHandler.sol +31 -1
  114. package/test/invariants/handlers/Phase3Handler.sol +31 -1
  115. package/test/invariants/handlers/RulesetsHandler.sol +5 -1
  116. package/test/invariants/handlers/TerminalStoreHandler.sol +6 -1
  117. package/test/invariants/handlers/TokensHandler.sol +1 -1
  118. package/test/mock/MockERC20.sol +0 -2
  119. package/test/mock/MockMaliciousBeneficiary.sol +2 -1
  120. package/test/mock/MockMaliciousSplitHook.sol +2 -1
  121. package/test/mock/MockPriceFeed.sol +1 -1
  122. package/test/regression/HoldFeesCashOutReserved.t.sol +415 -0
  123. package/test/regression/WeightCacheBoundary.t.sol +291 -0
  124. package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +0 -1
  125. package/test/units/static/JBController/JBControllerSetup.sol +10 -1
  126. package/test/units/static/JBController/TestBurnTokensOf.sol +8 -1
  127. package/test/units/static/JBController/TestClaimTokensFor.sol +4 -1
  128. package/test/units/static/JBController/TestDeployErc20For.sol +7 -1
  129. package/test/units/static/JBController/TestLaunchProjectFor.sol +21 -1
  130. package/test/units/static/JBController/TestLaunchRulesetsFor.sol +21 -1
  131. package/test/units/static/JBController/TestMigrateController.sol +10 -1
  132. package/test/units/static/JBController/TestMintTokensOfUnits.sol +10 -1
  133. package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +4 -1
  134. package/test/units/static/JBController/TestReceiveMigrationFrom.sol +5 -1
  135. package/test/units/static/JBController/TestRulesetViews.sol +7 -1
  136. package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +21 -1
  137. package/test/units/static/JBController/TestSetSplitGroupsOf.sol +6 -1
  138. package/test/units/static/JBController/TestSetTokenFor.sol +13 -1
  139. package/test/units/static/JBController/TestSetUriOf.sol +5 -1
  140. package/test/units/static/JBController/TestTransferCreditsFrom.sol +11 -1
  141. package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +12 -1
  142. package/test/units/static/JBDirectory/JBDirectorySetup.sol +4 -1
  143. package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +5 -1
  144. package/test/units/static/JBDirectory/TestSetControllerOf.sol +11 -1
  145. package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +7 -1
  146. package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +11 -1
  147. package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +10 -1
  148. package/test/units/static/JBERC20/JBERC20Setup.sol +2 -1
  149. package/test/units/static/JBERC20/SigUtils.sol +2 -0
  150. package/test/units/static/JBERC20/TestInitialize.sol +1 -1
  151. package/test/units/static/JBERC20/TestName.sol +1 -1
  152. package/test/units/static/JBERC20/TestNonces.sol +3 -1
  153. package/test/units/static/JBERC20/TestSymbol.sol +1 -1
  154. package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +2 -1
  155. package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +2 -1
  156. package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +1 -1
  157. package/test/units/static/JBFees/TestFeesFuzz.sol +1 -1
  158. package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +0 -1
  159. package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +0 -1
  160. package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +3 -1
  161. package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +4 -1
  162. package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +4 -1
  163. package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +8 -1
  164. package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +8 -1
  165. package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +4 -1
  166. package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +7 -1
  167. package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +1 -1
  168. package/test/units/static/JBMetadataResolver/TestMetadataResolverEdgeCases.sol +2 -1
  169. package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +2 -1
  170. package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +12 -1
  171. package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +9 -1
  172. package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +18 -2
  173. package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +44 -9
  174. package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +48 -23
  175. package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +18 -2
  176. package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +13 -3
  177. package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +21 -4
  178. package/test/units/static/JBMultiTerminal/TestPay.sol +35 -7
  179. package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +206 -19
  180. package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +15 -1
  181. package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +297 -1
  182. package/test/units/static/JBPermissions/JBPermissionsSetup.sol +2 -1
  183. package/test/units/static/JBPermissions/TestHasPermission.sol +1 -1
  184. package/test/units/static/JBPermissions/TestHasPermissions.sol +1 -1
  185. package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +3 -1
  186. package/test/units/static/JBPrices/JBPricesSetup.sol +6 -1
  187. package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +6 -1
  188. package/test/units/static/JBPrices/TestPricePerUnitOf.sol +4 -1
  189. package/test/units/static/JBPrices/TestPrices.sol +4 -1
  190. package/test/units/static/JBProjects/JBProjectsSetup.sol +2 -1
  191. package/test/units/static/JBProjects/TestCreateFor.sol +3 -1
  192. package/test/units/static/JBProjects/TestInitialProject.sol +2 -1
  193. package/test/units/static/JBProjects/TestInterfaces.sol +0 -1
  194. package/test/units/static/JBProjects/TestSetResolver.sol +2 -1
  195. package/test/units/static/JBProjects/TestTokenUri.sol +3 -1
  196. package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +9 -1
  197. package/test/units/static/JBRulesets/JBRulesetsSetup.sol +3 -1
  198. package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +9 -1
  199. package/test/units/static/JBRulesets/TestCurrentOf.sol +10 -1
  200. package/test/units/static/JBRulesets/TestGetRulesetOf.sol +7 -1
  201. package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +9 -1
  202. package/test/units/static/JBRulesets/TestRulesets.sol +12 -1
  203. package/test/units/static/JBRulesets/TestRulesetsOf.sol +1 -1
  204. package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +10 -1
  205. package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +6 -1
  206. package/test/units/static/JBSplits/JBSplitsSetup.sol +3 -1
  207. package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +63 -13
  208. package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +8 -1
  209. package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +6 -1
  210. package/test/units/static/JBSplits/TestSplitsOf.sol +1 -1
  211. package/test/units/static/JBSplits/TestSplitsPacking.sol +5 -2
  212. package/test/units/static/JBSurplus/TestSurplusFuzz.sol +3 -1
  213. package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +5 -1
  214. package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +14 -1
  215. package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +14 -1
  216. package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +3 -1
  217. package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +92 -1
  218. package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +15 -1
  219. package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +13 -1
  220. package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +8 -1
  221. package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +16 -1
  222. package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +15 -1
  223. package/test/units/static/JBTokens/JBTokensSetup.sol +5 -1
  224. package/test/units/static/JBTokens/TestBurnFrom.sol +4 -1
  225. package/test/units/static/JBTokens/TestClaimTokensFor.sol +4 -1
  226. package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +4 -1
  227. package/test/units/static/JBTokens/TestMintFor.sol +4 -1
  228. package/test/units/static/JBTokens/TestSetTokenFor.sol +4 -1
  229. package/test/units/static/JBTokens/TestTotalBalanceOf.sol +1 -1
  230. package/test/units/static/JBTokens/TestTotalSupplyOf.sol +1 -1
  231. package/test/units/static/JBTokens/TestTransferCreditsFrom.sol +3 -1
@@ -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
 
@@ -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
 
7
7
  contract TestName_Local is JBERC20Setup {
@@ -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 {IERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol";
5
5
  import {JBERC20Setup} from "./JBERC20Setup.sol";
6
6
  import {SigUtils} from "./SigUtils.sol";
7
7
 
@@ -9,7 +9,9 @@ contract TestNonces_Local is JBERC20Setup {
9
9
  IERC20Permit _token;
10
10
  SigUtils sigUtils;
11
11
 
12
+ // forge-lint: disable-next-line(screaming-snake-case-immutable)
12
13
  bytes32 private immutable _hashedName = keccak256(bytes("JBToken"));
14
+ // forge-lint: disable-next-line(screaming-snake-case-immutable)
13
15
  bytes32 private immutable _hashedVersion = keccak256(bytes("1"));
14
16
 
15
17
  bytes32 _domain;
@@ -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
 
7
7
  contract TestSymbol_Local is JBERC20Setup {
@@ -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 {JBFeelessAddresses} from "../../../../src/JBFeelessAddresses.sol";
5
+ import {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
5
6
  import {JBTest} from "../../../helpers/JBTest.sol";
6
7
 
7
8
  /*
@@ -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 {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
5
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
5
6
  import {JBFeelessSetup} from "./JBFeelessSetup.sol";
6
7
 
7
8
  contract TestSupportsInterface_Local is JBFeelessSetup {
@@ -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 {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
5
5
  import {JBFeelessSetup} from "./JBFeelessSetup.sol";
6
6
 
7
7
  contract TestSetFeelessAddress_Local is JBFeelessSetup {
@@ -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 {JBConstants} from "../../../../src/libraries/JBConstants.sol";
5
5
  import {JBTest} from "../../../helpers/JBTest.sol";
6
6
  import {JBFees} from "../../../../src/libraries/JBFees.sol";
7
7
 
@@ -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 {JBFixedPointNumber} from "../../../../src/libraries/JBFixedPointNumber.sol";
7
6
 
@@ -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 {JBFixedPointNumber} from "../../../../src/libraries/JBFixedPointNumber.sol";
7
6
 
@@ -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 {JBFundAccessLimits} from "../../../../src/JBFundAccessLimits.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
5
7
  import {JBTest} from "../../../helpers/JBTest.sol";
6
8
 
7
9
  /*
@@ -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 {JBFundAccessLimits} from "../../../../src/JBFundAccessLimits.sol";
5
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
6
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
7
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
5
8
  import {JBTest} from "../../../helpers/JBTest.sol";
6
9
 
7
10
  /// @notice Edge case tests for JBFundAccessLimits append behavior and packing.
@@ -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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
6
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
7
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
5
8
  import {JBFundAccessSetup} from "./JBFundAccessSetup.sol";
6
9
 
7
10
  contract TestPayoutLimitOf_Local is JBFundAccessSetup {
@@ -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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
6
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
7
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
5
8
  import {JBFundAccessSetup} from "./JBFundAccessSetup.sol";
6
9
 
7
10
  contract TestPayoutLimitsOf_Local is JBFundAccessSetup {
@@ -28,6 +31,7 @@ contract TestPayoutLimitsOf_Local is JBFundAccessSetup {
28
31
  JBCurrencyAmount({amount: _payoutLimit, currency: uint32(uint160(JBConstants.NATIVE_TOKEN))});
29
32
 
30
33
  // Specify a second payout limit.
34
+ // forge-lint: disable-next-line(unsafe-typecast)
31
35
  _payoutLimits[1] = JBCurrencyAmount({amount: _payoutLimit2, currency: uint32(uint160(_someToken))});
32
36
 
33
37
  // Specify a surplus allowance.
@@ -66,6 +70,7 @@ contract TestPayoutLimitsOf_Local is JBFundAccessSetup {
66
70
 
67
71
  assertEq(payoutLimits[0].currency, uint32(uint160(JBConstants.NATIVE_TOKEN)));
68
72
  assertEq(payoutLimits[0].amount, _payoutLimit);
73
+ // forge-lint: disable-next-line(unsafe-typecast)
69
74
  assertEq(payoutLimits[1].currency, uint32(uint160(_someToken)));
70
75
  assertEq(payoutLimits[1].amount, _payoutLimit2);
71
76
  }
@@ -77,6 +82,7 @@ contract TestPayoutLimitsOf_Local is JBFundAccessSetup {
77
82
 
78
83
  assertEq(payoutLimits[0].currency, uint32(uint160(JBConstants.NATIVE_TOKEN)));
79
84
  assertEq(payoutLimits[0].amount, _payoutLimit);
85
+ // forge-lint: disable-next-line(unsafe-typecast)
80
86
  assertEq(payoutLimits[1].currency, uint32(uint160(_someToken)));
81
87
  assertEq(payoutLimits[1].amount, _payoutLimit2);
82
88
  }
@@ -88,6 +94,7 @@ contract TestPayoutLimitsOf_Local is JBFundAccessSetup {
88
94
 
89
95
  assertEq(payoutLimits[0].currency, uint32(uint160(JBConstants.NATIVE_TOKEN)));
90
96
  assertEq(payoutLimits[0].amount, _payoutLimit);
97
+ // forge-lint: disable-next-line(unsafe-typecast)
91
98
  assertEq(payoutLimits[1].currency, uint32(uint160(_someToken)));
92
99
  assertEq(payoutLimits[1].amount, _payoutLimit2);
93
100
  }
@@ -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 {JBFundAccessLimits} from "../../../../src/JBFundAccessLimits.sol";
5
+ import {JBControlled} from "../../../../src/abstract/JBControlled.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
8
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
9
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
10
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
5
11
  import {JBFundAccessSetup} from "./JBFundAccessSetup.sol";
6
12
 
7
13
  contract TestSetFundAccessLimitsFor_Local is JBFundAccessSetup {
@@ -113,6 +119,7 @@ contract TestSetFundAccessLimitsFor_Local is JBFundAccessSetup {
113
119
  JBCurrencyAmount({amount: _validLimit, currency: uint32(uint160(JBConstants.NATIVE_TOKEN))});
114
120
 
115
121
  // Specify a second payout limit.
122
+ // forge-lint: disable-next-line(unsafe-typecast)
116
123
  _payoutLimits[1] = JBCurrencyAmount({amount: _validLimit, currency: uint32(uint160(_someToken))});
117
124
 
118
125
  // Specify a surplus allowance.
@@ -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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
6
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
7
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
5
8
  import {JBFundAccessSetup} from "./JBFundAccessSetup.sol";
6
9
 
7
10
  contract TestSurplusAllowanceOf_Local is JBFundAccessSetup {
@@ -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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
6
+ import {JBCurrencyAmount} from "../../../../src/structs/JBCurrencyAmount.sol";
7
+ import {JBFundAccessLimitGroup} from "../../../../src/structs/JBFundAccessLimitGroup.sol";
5
8
  import {JBFundAccessSetup} from "./JBFundAccessSetup.sol";
6
9
 
7
10
  contract TestSurplusAllowancesOf_Local is JBFundAccessSetup {
@@ -31,6 +34,7 @@ contract TestSurplusAllowancesOf_Local is JBFundAccessSetup {
31
34
  _surplusAllowances[0] =
32
35
  JBCurrencyAmount({amount: 1e18, currency: uint32(uint160(JBConstants.NATIVE_TOKEN))});
33
36
 
37
+ // forge-lint: disable-next-line(unsafe-typecast)
34
38
  _surplusAllowances[1] = JBCurrencyAmount({amount: 2e18, currency: uint32(uint160(_someToken))});
35
39
 
36
40
  _fundAccessLimitGroup[0] = JBFundAccessLimitGroup({
@@ -65,11 +69,13 @@ contract TestSurplusAllowancesOf_Local is JBFundAccessSetup {
65
69
 
66
70
  assertEq(surplusLimits[0].currency, uint32(uint160(JBConstants.NATIVE_TOKEN)));
67
71
  assertEq(surplusLimits[0].amount, 1e18);
72
+ // forge-lint: disable-next-line(unsafe-typecast)
68
73
  assertEq(surplusLimits[1].currency, uint32(uint160(_someToken)));
69
74
  assertEq(surplusLimits[1].amount, 2e18);
70
75
 
71
76
  assertEq(surplusLimits2[0].currency, uint32(uint160(JBConstants.NATIVE_TOKEN)));
72
77
  assertEq(surplusLimits2[0].amount, 1e18);
78
+ // forge-lint: disable-next-line(unsafe-typecast)
73
79
  assertEq(surplusLimits2[1].currency, uint32(uint160(_someToken)));
74
80
  assertEq(surplusLimits2[1].amount, 2e18);
75
81
  }
@@ -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 {JBMetadataResolver} from "../../../../src/libraries/JBMetadataResolver.sol";
7
6
 
@@ -24,6 +23,7 @@ contract TestGetDataFor_Local is JBTest {
24
23
  assertEq("", _data);
25
24
  }
26
25
 
26
+ // forge-lint: disable-next-line(mixed-case-function)
27
27
  modifier whenMetadataLengthGTMIN_METADATA_LENGTH() {
28
28
  _;
29
29
  }
@@ -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 {JBMetadataResolver} from "../../../../src/libraries/JBMetadataResolver.sol";
7
6
 
@@ -197,6 +196,7 @@ contract TestMetadataResolverEdgeCases is JBTest {
197
196
  // 5 entries of 42 words (1344 bytes) + 1 entry of 43 words (1376 bytes)
198
197
  for (uint256 i; i < 5; i++) {
199
198
  datas[i] = new bytes(1344);
199
+ // forge-lint: disable-next-line(unsafe-typecast)
200
200
  datas[i][0] = bytes1(uint8(i + 1));
201
201
  }
202
202
  datas[5] = new bytes(1376);
@@ -228,6 +228,7 @@ contract TestMetadataResolverEdgeCases is JBTest {
228
228
  bytes[] memory datas = new bytes[](6);
229
229
  for (uint256 i; i < 6; i++) {
230
230
  datas[i] = new bytes(1344); // 42 words each
231
+ // forge-lint: disable-next-line(unsafe-typecast)
231
232
  datas[i][0] = bytes1(uint8(i + 1));
232
233
  }
233
234
 
@@ -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 {JBMetadataResolver} from "../../../../src/libraries/JBMetadataResolver.sol";
7
6
 
@@ -182,7 +181,9 @@ contract TestMetadataResolverFuzz_Local is JBTest {
182
181
  /// @dev Only tests addresses that differ in the first 4 bytes to avoid XOR collision.
183
182
  function testFuzz_getId_differentTargets(uint256 seed1, uint256 seed2) external view {
184
183
  vm.assume(seed1 != seed2);
184
+ // forge-lint: disable-next-line(unsafe-typecast)
185
185
  address target1 = address(uint160(seed1));
186
+ // forge-lint: disable-next-line(unsafe-typecast)
186
187
  address target2 = address(uint160(seed2));
187
188
  vm.assume(target1 != target2);
188
189
 
@@ -1,7 +1,18 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity 0.8.26;
3
3
 
4
- import /* {*} from */ "../../../helpers/TestBaseWorkflow.sol";
4
+ import {MetadataResolverHelper} from "../../../helpers/MetadataResolverHelper.sol";
5
+ import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
6
+ import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
7
+ import {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
8
+ import {IJBMultiTerminal} from "../../../../src/interfaces/IJBMultiTerminal.sol";
9
+ import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.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 {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
14
+ import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
15
+ import {IPermit2} from "@uniswap/permit2/src/interfaces/IPermit2.sol";
5
16
  import {JBTest} from "../../../helpers/JBTest.sol";
6
17
 
7
18
  /*
@@ -1,12 +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 {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
5
+ import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
6
+ import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
7
+ import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
8
+ import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
9
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
10
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
5
11
  import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
6
12
 
7
13
  contract TestAccountingContextsOf_Local is JBMultiTerminalSetup {
8
14
  uint256 _projectId = 1;
9
15
  address _usdc = makeAddr("USDC");
16
+ // forge-lint: disable-next-line(unsafe-typecast)
10
17
  uint256 _usdcCurrency = uint32(uint160(_usdc));
11
18
 
12
19
  function setUp() public {
@@ -47,6 +54,7 @@ contract TestAccountingContextsOf_Local is JBMultiTerminalSetup {
47
54
 
48
55
  // call params
49
56
  JBAccountingContext[] memory _tokens = new JBAccountingContext[](1);
57
+ // forge-lint: disable-next-line(unsafe-typecast)
50
58
  _tokens[0] = JBAccountingContext({token: _usdc, decimals: 6, currency: uint32(uint160(_usdc))});
51
59
 
52
60
  _terminal.addAccountingContextsFor(_projectId, _tokens);