@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.
- package/ADMINISTRATION.md +4 -0
- package/README.md +2 -2
- package/SKILLS.md +2 -0
- package/STYLE_GUIDE.md +16 -2
- package/package.json +2 -2
- package/script/Deploy.s.sol +22 -13
- package/script/DeployPeriphery.s.sol +70 -52
- package/script/helpers/CoreDeploymentLib.sol +83 -35
- package/src/JBChainlinkV3PriceFeed.sol +1 -0
- package/src/JBController.sol +18 -3
- package/src/JBERC20.sol +12 -3
- package/src/JBFundAccessLimits.sol +12 -2
- package/src/JBMultiTerminal.sol +3 -1
- package/src/JBPermissions.sol +1 -0
- package/src/JBProjects.sol +1 -1
- package/src/JBRulesets.sol +11 -0
- package/src/JBSplits.sol +5 -0
- package/src/JBTerminalStore.sol +3 -0
- package/src/JBTokens.sol +40 -4
- package/src/interfaces/IJBController.sol +6 -0
- package/src/interfaces/IJBPermitTerminal.sol +1 -0
- package/src/interfaces/IJBToken.sol +5 -0
- package/src/interfaces/IJBTokens.sol +13 -0
- package/src/libraries/JBMetadataResolver.sol +7 -3
- 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 +1 -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/TestCashOut.sol +15 -1
- package/test/TestCashOutCountFor.sol +1 -1
- package/test/TestCashOutHooks.sol +47 -25
- package/test/TestCashOutTimingEdge.sol +13 -1
- package/test/TestDurationUnderflow.sol +13 -1
- 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/TestLaunchProject.sol +13 -1
- package/test/TestMetaTx.sol +15 -1
- package/test/TestMetadataParserLib.sol +37 -4
- package/test/TestMigrationHeldFees.sol +16 -1
- package/test/TestMintTokensOf.sol +14 -1
- 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/TestPermit2Terminal.sol +36 -3
- package/test/TestRulesetQueueing.sol +24 -1
- package/test/TestRulesetQueuingStress.sol +20 -1
- package/test/TestRulesetWeightCaching.sol +5 -1
- 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 +17 -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/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 +42 -7
- package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +30 -6
- 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 +32 -6
- package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +0 -1
- package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +15 -1
- package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +17 -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 +8 -1
- 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 +20 -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,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);
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.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 {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
10
|
+
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
11
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
12
|
+
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
|
5
13
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
14
|
|
|
7
15
|
contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
8
16
|
uint256 _projectId = 1;
|
|
9
17
|
address _usdc = makeAddr("USDC");
|
|
18
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
10
19
|
uint256 _usdcCurrency = uint32(uint160(_usdc));
|
|
11
20
|
|
|
12
21
|
function setUp() public {
|
|
@@ -35,8 +44,10 @@ contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
|
35
44
|
// it will revert ACCOUNTING_CONTEXT_ALREADY_SET
|
|
36
45
|
|
|
37
46
|
// Accounting Context to set
|
|
47
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
38
48
|
JBAccountingContext memory _context =
|
|
39
|
-
|
|
49
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
50
|
+
JBAccountingContext({token: _usdc, decimals: 18, currency: uint32(_usdcCurrency)});
|
|
40
51
|
|
|
41
52
|
// Find the storage slot
|
|
42
53
|
bytes32 contextSlot = keccak256(abi.encode(_projectId, uint256(0)));
|
|
@@ -65,6 +76,7 @@ contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
|
65
76
|
|
|
66
77
|
// call params
|
|
67
78
|
JBAccountingContext[] memory _tokens = new JBAccountingContext[](1);
|
|
79
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
68
80
|
_tokens[0] = JBAccountingContext({token: _usdc, decimals: 6, currency: uint32(uint160(_usdc))});
|
|
69
81
|
|
|
70
82
|
vm.expectRevert(
|
|
@@ -97,6 +109,7 @@ contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
|
97
109
|
|
|
98
110
|
// call params
|
|
99
111
|
JBAccountingContext[] memory _tokens = new JBAccountingContext[](1);
|
|
112
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
100
113
|
_tokens[0] = JBAccountingContext({token: _usdc, decimals: 6, currency: uint32(uint160(_usdc))});
|
|
101
114
|
|
|
102
115
|
_terminal.addAccountingContextsFor(_projectId, _tokens);
|
|
@@ -104,6 +117,7 @@ contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
|
104
117
|
JBAccountingContext memory _storedContext = _terminal.accountingContextForTokenOf(_projectId, _usdc);
|
|
105
118
|
assertEq(_storedContext.token, _usdc);
|
|
106
119
|
assertEq(_storedContext.decimals, 6);
|
|
120
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
107
121
|
assertEq(_storedContext.currency, uint32(uint160(_usdc)));
|
|
108
122
|
}
|
|
109
123
|
|
|
@@ -263,6 +277,7 @@ contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
|
263
277
|
_tokens[0] = JBAccountingContext({
|
|
264
278
|
token: someToken,
|
|
265
279
|
decimals: 17, // invalid- we will mock a return of 18 decimals
|
|
280
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
266
281
|
currency: uint32(uint160(someToken))
|
|
267
282
|
});
|
|
268
283
|
|
|
@@ -296,6 +311,7 @@ contract TestAddAccountingContextsFor_Local is JBMultiTerminalSetup {
|
|
|
296
311
|
|
|
297
312
|
// call params
|
|
298
313
|
JBAccountingContext[] memory _tokens = new JBAccountingContext[](1);
|
|
314
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
299
315
|
_tokens[0] = JBAccountingContext({token: someToken, decimals: 18, currency: uint32(uint160(0))});
|
|
300
316
|
|
|
301
317
|
// setup: return data
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
|
|
5
|
+
import {IJBFeeTerminal} from "../../../../src/interfaces/IJBFeeTerminal.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 {JBFees} from "../../../../src/libraries/JBFees.sol";
|
|
10
|
+
import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
11
|
+
import {JBFee} from "../../../../src/structs/JBFee.sol";
|
|
12
|
+
import {JBSingleAllowance} from "../../../../src/structs/JBSingleAllowance.sol";
|
|
13
|
+
import {IAllowanceTransfer, IPermit2} from "@uniswap/permit2/src/interfaces/IPermit2.sol";
|
|
5
14
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
15
|
|
|
7
16
|
contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
@@ -11,9 +20,12 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
11
20
|
// global constants
|
|
12
21
|
uint256 _projectId = 1;
|
|
13
22
|
address _native = JBConstants.NATIVE_TOKEN;
|
|
23
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
14
24
|
uint256 _nativeCurrency = uint32(uint160(_native));
|
|
15
25
|
address _usdc = makeAddr("USDC");
|
|
26
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
16
27
|
uint256 _usdcCurrency = uint32(uint160(_usdc));
|
|
28
|
+
// forge-lint: disable-next-line(mixed-case-variable)
|
|
17
29
|
uint256 _terminalUSDCBalance = 1e18;
|
|
18
30
|
|
|
19
31
|
// set by modifiers
|
|
@@ -25,6 +37,7 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
25
37
|
bool _shouldReturnHeldFees;
|
|
26
38
|
|
|
27
39
|
// Permit2 params.
|
|
40
|
+
// forge-lint: disable-next-line(mixed-case-variable)
|
|
28
41
|
bytes32 DOMAIN_SEPARATOR;
|
|
29
42
|
address from;
|
|
30
43
|
uint256 fromPrivateKey = 0x12341234;
|
|
@@ -37,8 +50,10 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
37
50
|
|
|
38
51
|
modifier whenNativeTokenIsAccepted() {
|
|
39
52
|
// Accounting Context to set
|
|
53
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
40
54
|
JBAccountingContext memory _context =
|
|
41
|
-
|
|
55
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
56
|
+
JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
|
|
42
57
|
|
|
43
58
|
// Find the storage slot
|
|
44
59
|
bytes32 contextSlot = keccak256(abi.encode(_projectId, uint256(0)));
|
|
@@ -55,8 +70,10 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
55
70
|
|
|
56
71
|
modifier whenShouldReturnHeldFeesEqTrue() {
|
|
57
72
|
// Accounting Context to set
|
|
73
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
58
74
|
JBAccountingContext memory _context =
|
|
59
|
-
|
|
75
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
76
|
+
JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
|
|
60
77
|
|
|
61
78
|
// Find the storage slot
|
|
62
79
|
bytes32 contextSlot = keccak256(abi.encode(_projectId, uint256(0)));
|
|
@@ -222,8 +239,10 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
222
239
|
// it will revert NO_MSG_VALUE_ALLOWED
|
|
223
240
|
|
|
224
241
|
// Accounting Context to set
|
|
242
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
225
243
|
JBAccountingContext memory _context =
|
|
226
|
-
|
|
244
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
245
|
+
JBAccountingContext({token: _usdc, decimals: 18, currency: uint32(_usdcCurrency)});
|
|
227
246
|
|
|
228
247
|
// Find the storage slot
|
|
229
248
|
bytes32 contextSlot = keccak256(abi.encode(_projectId, uint256(0)));
|
|
@@ -249,8 +268,10 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
249
268
|
|
|
250
269
|
modifier whenPayMetadataContainsPermitData() {
|
|
251
270
|
// Accounting Context to set
|
|
271
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
252
272
|
JBAccountingContext memory _context =
|
|
253
|
-
|
|
273
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
274
|
+
JBAccountingContext({token: _usdc, decimals: 18, currency: uint32(_usdcCurrency)});
|
|
254
275
|
|
|
255
276
|
// Find the storage slot
|
|
256
277
|
bytes32 contextSlot = keccak256(abi.encode(_projectId, uint256(0)));
|
|
@@ -333,8 +354,15 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
333
354
|
payAmount = 1e18;
|
|
334
355
|
|
|
335
356
|
// Setup: prepare permit details for signing.
|
|
357
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
336
358
|
IAllowanceTransfer.PermitDetails memory details = IAllowanceTransfer.PermitDetails({
|
|
337
|
-
|
|
359
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
360
|
+
token: address(_usdc),
|
|
361
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
362
|
+
amount: uint160(payAmount),
|
|
363
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
364
|
+
expiration: uint48(expiration),
|
|
365
|
+
nonce: 0
|
|
338
366
|
});
|
|
339
367
|
|
|
340
368
|
IAllowanceTransfer.PermitSingle memory permit =
|
|
@@ -343,8 +371,15 @@ contract TestAddToBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
343
371
|
// Setup: sign permit details.
|
|
344
372
|
bytes memory sig = getPermitSignature(permit, fromPrivateKey, DOMAIN_SEPARATOR);
|
|
345
373
|
|
|
374
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
346
375
|
JBSingleAllowance memory permitData = JBSingleAllowance({
|
|
347
|
-
|
|
376
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
377
|
+
sigDeadline: deadline,
|
|
378
|
+
amount: uint160(1),
|
|
379
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
380
|
+
expiration: uint48(expiration),
|
|
381
|
+
nonce: uint48(0),
|
|
382
|
+
signature: sig
|
|
348
383
|
});
|
|
349
384
|
|
|
350
385
|
// Setup: prepare data for metadata helper.
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {MockERC20} from "../../../mock/MockERC20.sol";
|
|
5
|
+
import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
|
|
6
|
+
import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
|
|
7
|
+
import {IJBCashOutHook} from "../../../../src/interfaces/IJBCashOutHook.sol";
|
|
8
|
+
import {IJBCashOutTerminal} from "../../../../src/interfaces/IJBCashOutTerminal.sol";
|
|
9
|
+
import {IJBController} from "../../../../src/interfaces/IJBController.sol";
|
|
10
|
+
import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
|
|
11
|
+
import {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
|
|
12
|
+
import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
|
|
13
|
+
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
14
|
+
import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
|
|
15
|
+
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
16
|
+
import {JBFees} from "../../../../src/libraries/JBFees.sol";
|
|
17
|
+
import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
18
|
+
import {JBAfterCashOutRecordedContext} from "../../../../src/structs/JBAfterCashOutRecordedContext.sol";
|
|
19
|
+
import {JBCashOutHookSpecification} from "../../../../src/structs/JBCashOutHookSpecification.sol";
|
|
20
|
+
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
21
|
+
import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
|
|
22
|
+
import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
|
|
23
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
5
24
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
25
|
|
|
7
26
|
contract TestCashOutTokensOf_Local is JBMultiTerminalSetup {
|
|
@@ -329,8 +348,10 @@ contract TestCashOutTokensOf_Local is JBMultiTerminalSetup {
|
|
|
329
348
|
abi.encode(true)
|
|
330
349
|
);
|
|
331
350
|
|
|
332
|
-
JBTokenAmount memory reclaimedAmount =
|
|
333
|
-
|
|
351
|
+
JBTokenAmount memory reclaimedAmount =
|
|
352
|
+
JBTokenAmount({token: address(_mockToken2), decimals: 0, currency: 0, value: reclaimAmount});
|
|
353
|
+
JBTokenAmount memory forwardedAmount =
|
|
354
|
+
JBTokenAmount({token: address(_mockToken2), decimals: 0, currency: 0, value: _defaultAmount});
|
|
334
355
|
|
|
335
356
|
// needed for hook call
|
|
336
357
|
JBAfterCashOutRecordedContext memory context = JBAfterCashOutRecordedContext({
|
|
@@ -433,9 +454,12 @@ contract TestCashOutTokensOf_Local is JBMultiTerminalSetup {
|
|
|
433
454
|
uint256 hookTax = JBFees.feeAmountFrom(_defaultAmount, 25);
|
|
434
455
|
uint256 passedAfterTax = _defaultAmount - hookTax;
|
|
435
456
|
|
|
436
|
-
JBTokenAmount memory reclaimedAmount =
|
|
437
|
-
|
|
438
|
-
JBTokenAmount memory
|
|
457
|
+
JBTokenAmount memory reclaimedAmount =
|
|
458
|
+
JBTokenAmount({token: address(_mockToken2), decimals: 0, currency: 0, value: reclaimAmount});
|
|
459
|
+
JBTokenAmount memory forwardedAmount =
|
|
460
|
+
JBTokenAmount({token: address(_mockToken2), decimals: 0, currency: 0, value: passedAfterTax});
|
|
461
|
+
JBTokenAmount memory feeRepayAmount =
|
|
462
|
+
JBTokenAmount({token: address(_mockToken2), decimals: 0, currency: 0, value: hookTax});
|
|
439
463
|
|
|
440
464
|
// needed for hook call
|
|
441
465
|
JBAfterCashOutRecordedContext memory context = JBAfterCashOutRecordedContext({
|