@bananapus/core-v6 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ADMINISTRATION.md +4 -0
- package/README.md +2 -2
- package/SKILLS.md +2 -0
- package/STYLE_GUIDE.md +150 -43
- package/foundry.toml +3 -3
- package/package.json +4 -4
- package/remappings.txt +1 -1
- package/script/Deploy.s.sol +23 -16
- package/script/DeployPeriphery.s.sol +71 -66
- package/script/helpers/CoreDeploymentLib.sol +84 -37
- package/src/JBChainlinkV3PriceFeed.sol +1 -0
- package/src/JBController.sol +19 -4
- 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 -1
- package/src/interfaces/IJBPayoutTerminal.sol +0 -1
- 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 -5
- package/test/{AuditExploits.t.sol → CoreExploitTests.t.sol} +35 -4
- package/test/EconomicSimulation.t.sol +10 -2
- package/test/EntryPointPermutations.t.sol +18 -5
- package/test/FlashLoanAttacks.t.sol +12 -2
- package/test/PermissionEscalation.t.sol +54 -22
- package/test/RulesetTransitions.t.sol +15 -1
- package/test/SplitLoopTests.t.sol +26 -5
- package/test/TestAccessToFunds.sol +17 -2
- package/test/TestCashOut.sol +15 -2
- package/test/TestCashOutCountFor.sol +1 -2
- package/test/TestCashOutHooks.sol +47 -25
- package/test/TestCashOutTimingEdge.sol +13 -1
- package/test/TestDurationUnderflow.sol +13 -1
- package/test/TestFeeProcessingFailure.sol +17 -7
- 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 +17 -11
- 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 +28 -2
- package/test/TestRulesetWeightCaching.sol +5 -2
- 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 +18 -2
- package/test/fork/TestChainlinkPriceFeedFork.sol +254 -0
- package/test/formal/BondingCurveProperties.t.sol +8 -2
- package/test/formal/FeeProperties.t.sol +7 -1
- package/test/helpers/JBTest.sol +7 -7
- package/test/helpers/TestBaseWorkflow.sol +84 -1
- package/test/invariants/Phase3DeepInvariant.t.sol +13 -5
- 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 -2
- package/test/invariants/handlers/RulesetsHandler.sol +5 -1
- package/test/invariants/handlers/TerminalStoreHandler.sol +6 -1
- package/test/invariants/handlers/TokensHandler.sol +1 -2
- package/test/mock/ERC2771ForwarderMock.sol +1 -1
- package/test/mock/MockERC20.sol +1 -3
- package/test/mock/MockMaliciousBeneficiary.sol +2 -2
- 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 +15 -4
- 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/{TestMetadataResolverM20M21.sol → TestMetadataResolverEdgeCases.sol} +6 -5
- 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 -2
- 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 +4 -2
- 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,13 +1,12 @@
|
|
|
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
|
|
|
8
7
|
/// @notice Harness that exposes JBMetadataResolver internals and adds a combined operation
|
|
9
8
|
/// to test memory corruption from _sliceBytes within a single execution context.
|
|
10
|
-
contract
|
|
9
|
+
contract MetadataResolverEdgeCaseHarness {
|
|
11
10
|
function createMetadata(bytes4[] memory ids, bytes[] memory datas) external pure returns (bytes memory) {
|
|
12
11
|
return JBMetadataResolver.createMetadata(ids, datas);
|
|
13
12
|
}
|
|
@@ -64,11 +63,11 @@ contract M20M21Harness {
|
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
/// @notice Tests for _sliceBytes over-copy and addToMetadata offset overflow.
|
|
67
|
-
contract
|
|
68
|
-
|
|
66
|
+
contract TestMetadataResolverEdgeCases is JBTest {
|
|
67
|
+
MetadataResolverEdgeCaseHarness harness;
|
|
69
68
|
|
|
70
69
|
function setUp() external {
|
|
71
|
-
harness = new
|
|
70
|
+
harness = new MetadataResolverEdgeCaseHarness();
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
//*********************************************************************//
|
|
@@ -197,6 +196,7 @@ contract TestMetadataResolverM20M21 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 TestMetadataResolverM20M21 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({
|
|
@@ -1,7 +1,22 @@
|
|
|
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 {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
|
|
7
|
+
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
8
|
+
import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
|
|
9
|
+
import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
|
|
10
|
+
import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
|
|
11
|
+
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
12
|
+
import {JBFees} from "../../../../src/libraries/JBFees.sol";
|
|
13
|
+
import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
|
|
14
|
+
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
15
|
+
import {JBSplit} from "../../../../src/structs/JBSplit.sol";
|
|
16
|
+
import {JBSplitHookContext} from "../../../../src/structs/JBSplitHookContext.sol";
|
|
17
|
+
import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
|
|
18
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
19
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
|
|
5
20
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
21
|
|
|
7
22
|
contract TestExecutePayout_Local is JBMultiTerminalSetup {
|
|
@@ -344,7 +359,8 @@ contract TestExecutePayout_Local is JBMultiTerminalSetup {
|
|
|
344
359
|
});
|
|
345
360
|
|
|
346
361
|
// needed for next mock call returns
|
|
347
|
-
JBTokenAmount memory tokenAmount =
|
|
362
|
+
JBTokenAmount memory tokenAmount =
|
|
363
|
+
JBTokenAmount({token: _usdc, decimals: 0, currency: 0, value: _defaultAmount});
|
|
348
364
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
|
|
349
365
|
JBRuleset memory returnedRuleset = JBRuleset({
|
|
350
366
|
cycleNumber: 1,
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
|
|
5
|
+
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
6
|
+
import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
|
|
7
|
+
import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
|
|
8
|
+
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
9
|
+
import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
|
|
10
|
+
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
11
|
+
import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
|
|
12
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
5
13
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
14
|
|
|
7
15
|
contract TestExecuteProcessFee_Local is JBMultiTerminalSetup {
|
|
@@ -80,7 +88,8 @@ contract TestExecuteProcessFee_Local is JBMultiTerminalSetup {
|
|
|
80
88
|
// it will call internal _pay
|
|
81
89
|
|
|
82
90
|
// needed for next mock call returns
|
|
83
|
-
JBTokenAmount memory tokenAmount =
|
|
91
|
+
JBTokenAmount memory tokenAmount =
|
|
92
|
+
JBTokenAmount({token: _native, decimals: 0, currency: 0, value: _defaultAmount});
|
|
84
93
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
|
|
85
94
|
JBRuleset memory returnedRuleset = JBRuleset({
|
|
86
95
|
cycleNumber: 1,
|
|
@@ -143,7 +152,8 @@ contract TestExecuteProcessFee_Local is JBMultiTerminalSetup {
|
|
|
143
152
|
// it will call external pay with zero msgvalue
|
|
144
153
|
|
|
145
154
|
// needed for next mock call returns
|
|
146
|
-
JBTokenAmount memory tokenAmount =
|
|
155
|
+
JBTokenAmount memory tokenAmount =
|
|
156
|
+
JBTokenAmount({token: _usdc, decimals: 0, currency: 0, value: _defaultAmount});
|
|
147
157
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
|
|
148
158
|
JBRuleset memory returnedRuleset = JBRuleset({
|
|
149
159
|
cycleNumber: 1,
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
|
|
5
|
+
import {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
|
|
6
|
+
import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
|
|
7
|
+
import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
|
|
8
|
+
import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
|
|
9
|
+
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
10
|
+
import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
11
|
+
import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
|
|
12
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
13
|
+
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
|
5
14
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
15
|
|
|
7
16
|
contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
|
|
@@ -9,8 +18,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
9
18
|
uint256 _defaultAmount = 1e18;
|
|
10
19
|
address _bene = makeAddr("beneficiary");
|
|
11
20
|
address _native = JBConstants.NATIVE_TOKEN;
|
|
21
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
12
22
|
uint256 _nativeCurrency = uint32(uint160(_native));
|
|
13
23
|
address _usdc = makeAddr("USDC");
|
|
24
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
14
25
|
uint256 _usdcCurrency = uint32(uint160(_usdc));
|
|
15
26
|
|
|
16
27
|
IJBTerminal _newTerminal = IJBTerminal(makeAddr("newTerminal"));
|
|
@@ -94,8 +105,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
94
105
|
// it will safeIncreaseAllowance and addToBalanceOf
|
|
95
106
|
|
|
96
107
|
// for next mock
|
|
108
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
97
109
|
JBAccountingContext memory _context =
|
|
98
|
-
|
|
110
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
111
|
+
JBAccountingContext({token: _usdc, decimals: 6, currency: uint32(_usdcCurrency)});
|
|
99
112
|
|
|
100
113
|
// mock call to the destination terminals accountingContextFor
|
|
101
114
|
mockExpect(
|
|
@@ -131,8 +144,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
131
144
|
// it will addToBalanceOf with value in msgvalue
|
|
132
145
|
|
|
133
146
|
// for next mock
|
|
147
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
134
148
|
JBAccountingContext memory _context =
|
|
135
|
-
|
|
149
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
150
|
+
JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
|
|
136
151
|
|
|
137
152
|
// mock call to the destination terminals accountingContextFor
|
|
138
153
|
mockExpect(
|
|
@@ -165,8 +180,10 @@ contract TestMigrateBalanceOf_Local is JBMultiTerminalSetup {
|
|
|
165
180
|
// it will not add to balance
|
|
166
181
|
|
|
167
182
|
// for next mock
|
|
183
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
168
184
|
JBAccountingContext memory _context =
|
|
169
|
-
|
|
185
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
186
|
+
JBAccountingContext({token: _native, decimals: 18, currency: uint32(_nativeCurrency)});
|
|
170
187
|
|
|
171
188
|
// mock call to the destination terminals accountingContextFor
|
|
172
189
|
mockExpect(
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity 0.8.26;
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {MockERC20} from "../../../mock/MockERC20.sol";
|
|
5
|
+
import {JBMultiTerminal} from "../../../../src/JBMultiTerminal.sol";
|
|
6
|
+
import {IJBController} from "../../../../src/interfaces/IJBController.sol";
|
|
7
|
+
import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
|
|
8
|
+
import {IJBPayHook} from "../../../../src/interfaces/IJBPayHook.sol";
|
|
9
|
+
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
10
|
+
import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
|
|
11
|
+
import {IJBTerminal} from "../../../../src/interfaces/IJBTerminal.sol";
|
|
12
|
+
import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
|
|
13
|
+
import {IJBTokens} from "../../../../src/interfaces/IJBTokens.sol";
|
|
14
|
+
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
15
|
+
import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
16
|
+
import {JBAfterPayRecordedContext} from "../../../../src/structs/JBAfterPayRecordedContext.sol";
|
|
17
|
+
import {JBPayHookSpecification} from "../../../../src/structs/JBPayHookSpecification.sol";
|
|
18
|
+
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
19
|
+
import {JBTokenAmount} from "../../../../src/structs/JBTokenAmount.sol";
|
|
20
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
21
|
+
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
|
5
22
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
23
|
|
|
7
24
|
contract TestPay_Local is JBMultiTerminalSetup {
|
|
@@ -9,8 +26,10 @@ contract TestPay_Local is JBMultiTerminalSetup {
|
|
|
9
26
|
uint256 _defaultAmount = 1e18;
|
|
10
27
|
address _bene = makeAddr("beneficiary");
|
|
11
28
|
address _native = JBConstants.NATIVE_TOKEN;
|
|
29
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
12
30
|
uint32 _nativeCurrency = uint32(uint160(_native));
|
|
13
31
|
address _usdc = makeAddr("USDC");
|
|
32
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
14
33
|
uint32 _usdcCurrency = uint32(uint160(_usdc));
|
|
15
34
|
|
|
16
35
|
address _mockController = makeAddr("mc");
|
|
@@ -102,7 +121,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
|
|
|
102
121
|
// it will revert UNDER_MIN_RETURNED_TOKENS
|
|
103
122
|
|
|
104
123
|
// needed for next mock call returns
|
|
105
|
-
JBTokenAmount memory tokenAmount =
|
|
124
|
+
JBTokenAmount memory tokenAmount =
|
|
125
|
+
JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
|
|
106
126
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
|
|
107
127
|
JBRuleset memory returnedRuleset = JBRuleset({
|
|
108
128
|
cycleNumber: 1,
|
|
@@ -143,7 +163,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
|
|
|
143
163
|
// it will mint tokens and emit Pay
|
|
144
164
|
|
|
145
165
|
// needed for next mock call returns
|
|
146
|
-
JBTokenAmount memory tokenAmount =
|
|
166
|
+
JBTokenAmount memory tokenAmount =
|
|
167
|
+
JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
|
|
147
168
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
|
|
148
169
|
JBRuleset memory returnedRuleset = JBRuleset({
|
|
149
170
|
cycleNumber: 1,
|
|
@@ -230,7 +251,10 @@ contract TestPay_Local is JBMultiTerminalSetup {
|
|
|
230
251
|
|
|
231
252
|
// needed for next mock call returns
|
|
232
253
|
JBTokenAmount memory tokenAmount =
|
|
233
|
-
|
|
254
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
255
|
+
JBTokenAmount({
|
|
256
|
+
token: address(_mockToken), decimals: 6, currency: uint32(_mockTokenCurrency), value: _defaultAmount
|
|
257
|
+
});
|
|
234
258
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](1);
|
|
235
259
|
hookSpecifications[0] = JBPayHookSpecification({hook: _mockHook, amount: _defaultAmount, metadata: ""});
|
|
236
260
|
|
|
@@ -320,7 +344,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
|
|
|
320
344
|
// it will send ETH to the hook and emit HookAfterRecordPay and Pay
|
|
321
345
|
|
|
322
346
|
// needed for next mock call returns
|
|
323
|
-
JBTokenAmount memory tokenAmount =
|
|
347
|
+
JBTokenAmount memory tokenAmount =
|
|
348
|
+
JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
|
|
324
349
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](1);
|
|
325
350
|
hookSpecifications[0] = JBPayHookSpecification({hook: _mockHook, amount: _defaultAmount, metadata: ""});
|
|
326
351
|
|
|
@@ -452,7 +477,8 @@ contract TestPay_Local is JBMultiTerminalSetup {
|
|
|
452
477
|
// it will not transfer
|
|
453
478
|
|
|
454
479
|
// needed for next mock call returns
|
|
455
|
-
JBTokenAmount memory tokenAmount =
|
|
480
|
+
JBTokenAmount memory tokenAmount =
|
|
481
|
+
JBTokenAmount({token: _native, decimals: 18, currency: uint32(_nativeCurrency), value: _defaultAmount});
|
|
456
482
|
JBPayHookSpecification[] memory hookSpecifications = new JBPayHookSpecification[](0);
|
|
457
483
|
|
|
458
484
|
JBRuleset memory returnedRuleset = JBRuleset({
|
|
@@ -1,7 +1,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 {JBPermissioned} from "../../../../src/abstract/JBPermissioned.sol";
|
|
6
|
+
import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
|
|
7
|
+
import {IJBFeelessAddresses} from "../../../../src/interfaces/IJBFeelessAddresses.sol";
|
|
8
|
+
import {IJBPayoutTerminal} from "../../../../src/interfaces/IJBPayoutTerminal.sol";
|
|
9
|
+
import {IJBPermissions} from "../../../../src/interfaces/IJBPermissions.sol";
|
|
10
|
+
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
11
|
+
import {IJBSplitHook} from "../../../../src/interfaces/IJBSplitHook.sol";
|
|
12
|
+
import {IJBSplits} from "../../../../src/interfaces/IJBSplits.sol";
|
|
13
|
+
import {IJBTerminalStore} from "../../../../src/interfaces/IJBTerminalStore.sol";
|
|
14
|
+
import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
15
|
+
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
16
|
+
import {JBSplit} from "../../../../src/structs/JBSplit.sol";
|
|
17
|
+
import {JBPermissionIds} from "@bananapus/permission-ids-v6/src/JBPermissionIds.sol";
|
|
18
|
+
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
|
5
19
|
import {JBMultiTerminalSetup} from "./JBMultiTerminalSetup.sol";
|
|
6
20
|
|
|
7
21
|
contract TestSendPayoutsOf_Local is JBMultiTerminalSetup {
|