@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.
- package/ADMINISTRATION.md +5 -1
- package/ARCHITECTURE.md +2 -1
- package/AUDIT_INSTRUCTIONS.md +342 -0
- package/CHANGE_LOG.md +375 -0
- package/README.md +6 -6
- package/RISKS.md +171 -50
- package/SKILLS.md +11 -6
- package/STYLE_GUIDE.md +16 -2
- package/USER_JOURNEYS.md +622 -0
- package/package.json +2 -2
- package/script/Deploy.s.sol +22 -13
- package/script/DeployPeriphery.s.sol +76 -52
- package/script/helpers/CoreDeploymentLib.sol +83 -35
- package/src/JBChainlinkV3PriceFeed.sol +1 -0
- package/src/JBController.sol +23 -3
- package/src/JBDeadline.sol +3 -0
- package/src/JBDirectory.sol +2 -1
- package/src/JBERC20.sol +12 -3
- package/src/JBFundAccessLimits.sol +12 -2
- package/src/JBMultiTerminal.sol +53 -10
- package/src/JBPermissions.sol +3 -0
- package/src/JBPrices.sol +8 -2
- package/src/JBProjects.sol +1 -1
- package/src/JBRulesets.sol +14 -0
- package/src/JBSplits.sol +14 -5
- package/src/JBTerminalStore.sol +57 -47
- package/src/JBTokens.sol +43 -4
- package/src/interfaces/IJBController.sol +6 -0
- package/src/interfaces/IJBPermitTerminal.sol +1 -0
- package/src/interfaces/IJBTerminalStore.sol +3 -0
- package/src/interfaces/IJBToken.sol +5 -0
- package/src/interfaces/IJBTokens.sol +13 -0
- package/src/libraries/JBFees.sol +2 -0
- package/src/libraries/JBMetadataResolver.sol +24 -7
- package/src/libraries/JBRulesetMetadataResolver.sol +21 -21
- package/src/structs/JBAccountingContext.sol +1 -0
- package/src/structs/JBAfterCashOutRecordedContext.sol +1 -0
- package/src/structs/JBAfterPayRecordedContext.sol +1 -0
- package/src/structs/JBBeforeCashOutRecordedContext.sol +5 -0
- package/src/structs/JBBeforePayRecordedContext.sol +1 -0
- package/src/structs/JBCashOutHookSpecification.sol +1 -0
- package/src/structs/JBCurrencyAmount.sol +1 -0
- package/src/structs/JBFee.sol +1 -0
- package/src/structs/JBFundAccessLimitGroup.sol +1 -0
- package/src/structs/JBPayHookSpecification.sol +1 -0
- package/src/structs/JBPermissionsData.sol +1 -0
- package/src/structs/JBRuleset.sol +1 -0
- package/src/structs/JBRulesetConfig.sol +1 -0
- package/src/structs/JBRulesetMetadata.sol +1 -0
- package/src/structs/JBRulesetWeightCache.sol +1 -0
- package/src/structs/JBRulesetWithMetadata.sol +1 -0
- package/src/structs/JBSingleAllowance.sol +1 -0
- package/src/structs/JBSplit.sol +1 -0
- package/src/structs/JBSplitGroup.sol +1 -0
- package/src/structs/JBSplitHookContext.sol +1 -0
- package/src/structs/JBTerminalConfig.sol +1 -0
- package/src/structs/JBTokenAmount.sol +1 -0
- package/test/ComprehensiveInvariant.t.sol +15 -2
- package/test/CoreExploitTests.t.sol +34 -1
- package/test/EconomicSimulation.t.sol +10 -2
- package/test/EntryPointPermutations.t.sol +17 -3
- package/test/FlashLoanAttacks.t.sol +12 -1
- package/test/PermissionEscalation.t.sol +53 -10
- package/test/RulesetTransitions.t.sol +15 -1
- package/test/SplitLoopTests.t.sol +25 -2
- package/test/TestAccessToFunds.sol +17 -2
- package/test/TestAuditResponseDesignProofs.sol +434 -0
- package/test/TestCashOut.sol +15 -1
- package/test/TestCashOutCountFor.sol +1 -1
- package/test/TestCashOutHooks.sol +47 -25
- package/test/TestCashOutTimingEdge.sol +13 -1
- package/test/TestDataHookFuzzing.sol +520 -0
- package/test/TestDurationUnderflow.sol +13 -1
- package/test/TestFeeFreeCashOutBypass.sol +617 -0
- package/test/TestFeeProcessingFailure.sol +16 -1
- package/test/TestFees.sol +14 -1
- package/test/TestInterfaceSupport.sol +20 -1
- package/test/TestJBERC20Inheritance.sol +11 -1
- package/test/TestL2SequencerPriceFeed.sol +292 -0
- package/test/TestLaunchProject.sol +13 -1
- package/test/TestMetaTx.sol +15 -1
- package/test/TestMetadataOffsetOverflow.sol +179 -0
- package/test/TestMetadataParserLib.sol +37 -4
- package/test/TestMigrationHeldFees.sol +16 -1
- package/test/TestMintTokensOf.sol +14 -1
- package/test/TestMultiTerminalSurplus.sol +348 -0
- package/test/TestMultiTokenSurplus.sol +14 -1
- package/test/TestMultipleAccessLimits.sol +23 -1
- package/test/TestPayBurnRedeemFlow.sol +16 -1
- package/test/TestPayHooks.sol +33 -14
- package/test/TestPermissions.sol +20 -1
- package/test/TestPermissionsEdge.sol +5 -1
- package/test/TestPermit2DataHook.t.sol +360 -0
- package/test/TestPermit2Terminal.sol +36 -3
- package/test/TestRulesetQueueing.sol +23 -1
- package/test/TestRulesetQueuingStress.sol +20 -1
- package/test/TestRulesetWeightCaching.sol +127 -125
- package/test/TestSplits.sol +23 -1
- package/test/TestTerminalMigration.sol +11 -1
- package/test/TestTokenFlow.sol +18 -1
- package/test/TestWeightCacheStaleAfterRejection.sol +15 -1
- package/test/WeirdTokenTests.t.sol +54 -1
- package/test/fork/TestChainlinkPriceFeedFork.sol +6 -1
- package/test/formal/BondingCurveProperties.t.sol +8 -1
- package/test/formal/FeeProperties.t.sol +7 -1
- package/test/helpers/JBTest.sol +1 -1
- package/test/helpers/TestBaseWorkflow.sol +84 -1
- package/test/invariants/Phase3DeepInvariant.t.sol +13 -2
- package/test/invariants/RulesetsInvariant.t.sol +12 -2
- package/test/invariants/TerminalStoreInvariant.t.sol +11 -2
- package/test/invariants/TokensInvariant.t.sol +13 -2
- package/test/invariants/handlers/ComprehensiveHandler.sol +19 -1
- package/test/invariants/handlers/EconomicHandler.sol +31 -1
- package/test/invariants/handlers/Phase3Handler.sol +31 -1
- package/test/invariants/handlers/RulesetsHandler.sol +5 -1
- package/test/invariants/handlers/TerminalStoreHandler.sol +6 -1
- package/test/invariants/handlers/TokensHandler.sol +1 -1
- package/test/mock/MockERC20.sol +0 -2
- package/test/mock/MockMaliciousBeneficiary.sol +2 -1
- package/test/mock/MockMaliciousSplitHook.sol +2 -1
- package/test/mock/MockPriceFeed.sol +1 -1
- package/test/regression/HoldFeesCashOutReserved.t.sol +415 -0
- package/test/regression/WeightCacheBoundary.t.sol +291 -0
- package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +0 -1
- package/test/units/static/JBController/JBControllerSetup.sol +10 -1
- package/test/units/static/JBController/TestBurnTokensOf.sol +8 -1
- package/test/units/static/JBController/TestClaimTokensFor.sol +4 -1
- package/test/units/static/JBController/TestDeployErc20For.sol +7 -1
- package/test/units/static/JBController/TestLaunchProjectFor.sol +21 -1
- package/test/units/static/JBController/TestLaunchRulesetsFor.sol +21 -1
- package/test/units/static/JBController/TestMigrateController.sol +10 -1
- package/test/units/static/JBController/TestMintTokensOfUnits.sol +10 -1
- package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +4 -1
- package/test/units/static/JBController/TestReceiveMigrationFrom.sol +5 -1
- package/test/units/static/JBController/TestRulesetViews.sol +7 -1
- package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +21 -1
- package/test/units/static/JBController/TestSetSplitGroupsOf.sol +6 -1
- package/test/units/static/JBController/TestSetTokenFor.sol +13 -1
- package/test/units/static/JBController/TestSetUriOf.sol +5 -1
- package/test/units/static/JBController/TestTransferCreditsFrom.sol +11 -1
- package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +12 -1
- package/test/units/static/JBDirectory/JBDirectorySetup.sol +4 -1
- package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +5 -1
- package/test/units/static/JBDirectory/TestSetControllerOf.sol +11 -1
- package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +7 -1
- package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +11 -1
- package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +10 -1
- package/test/units/static/JBERC20/JBERC20Setup.sol +2 -1
- package/test/units/static/JBERC20/SigUtils.sol +2 -0
- package/test/units/static/JBERC20/TestInitialize.sol +1 -1
- package/test/units/static/JBERC20/TestName.sol +1 -1
- package/test/units/static/JBERC20/TestNonces.sol +3 -1
- package/test/units/static/JBERC20/TestSymbol.sol +1 -1
- package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +2 -1
- package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +2 -1
- package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +1 -1
- package/test/units/static/JBFees/TestFeesFuzz.sol +1 -1
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +0 -1
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +0 -1
- package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +3 -1
- package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +4 -1
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +4 -1
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +8 -1
- package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +8 -1
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +4 -1
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +7 -1
- package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +1 -1
- package/test/units/static/JBMetadataResolver/TestMetadataResolverEdgeCases.sol +2 -1
- package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +2 -1
- package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +12 -1
- package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +9 -1
- package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +18 -2
- package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +44 -9
- package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +48 -23
- package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +18 -2
- package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +13 -3
- package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +21 -4
- package/test/units/static/JBMultiTerminal/TestPay.sol +35 -7
- package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +206 -19
- package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +15 -1
- package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +297 -1
- package/test/units/static/JBPermissions/JBPermissionsSetup.sol +2 -1
- package/test/units/static/JBPermissions/TestHasPermission.sol +1 -1
- package/test/units/static/JBPermissions/TestHasPermissions.sol +1 -1
- package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +3 -1
- package/test/units/static/JBPrices/JBPricesSetup.sol +6 -1
- package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +6 -1
- package/test/units/static/JBPrices/TestPricePerUnitOf.sol +4 -1
- package/test/units/static/JBPrices/TestPrices.sol +4 -1
- package/test/units/static/JBProjects/JBProjectsSetup.sol +2 -1
- package/test/units/static/JBProjects/TestCreateFor.sol +3 -1
- package/test/units/static/JBProjects/TestInitialProject.sol +2 -1
- package/test/units/static/JBProjects/TestInterfaces.sol +0 -1
- package/test/units/static/JBProjects/TestSetResolver.sol +2 -1
- package/test/units/static/JBProjects/TestTokenUri.sol +3 -1
- package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +9 -1
- package/test/units/static/JBRulesets/JBRulesetsSetup.sol +3 -1
- package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +9 -1
- package/test/units/static/JBRulesets/TestCurrentOf.sol +10 -1
- package/test/units/static/JBRulesets/TestGetRulesetOf.sol +7 -1
- package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +9 -1
- package/test/units/static/JBRulesets/TestRulesets.sol +12 -1
- package/test/units/static/JBRulesets/TestRulesetsOf.sol +1 -1
- package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +10 -1
- package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +6 -1
- package/test/units/static/JBSplits/JBSplitsSetup.sol +3 -1
- package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +63 -13
- package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +8 -1
- package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +6 -1
- package/test/units/static/JBSplits/TestSplitsOf.sol +1 -1
- package/test/units/static/JBSplits/TestSplitsPacking.sol +5 -2
- package/test/units/static/JBSurplus/TestSurplusFuzz.sol +3 -1
- package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +5 -1
- package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +14 -1
- package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +14 -1
- package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +3 -1
- package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +92 -1
- package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +15 -1
- package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +13 -1
- package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +8 -1
- package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +16 -1
- package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +15 -1
- package/test/units/static/JBTokens/JBTokensSetup.sol +5 -1
- package/test/units/static/JBTokens/TestBurnFrom.sol +4 -1
- package/test/units/static/JBTokens/TestClaimTokensFor.sol +4 -1
- package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +4 -1
- package/test/units/static/JBTokens/TestMintFor.sol +4 -1
- package/test/units/static/JBTokens/TestSetTokenFor.sol +4 -1
- package/test/units/static/JBTokens/TestTotalBalanceOf.sol +1 -1
- package/test/units/static/JBTokens/TestTotalSupplyOf.sol +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,9 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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);
|