@bananapus/core-v6 0.0.26 → 0.0.27
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/AUDIT_INSTRUCTIONS.md +2 -2
- package/CHANGE_LOG.md +2 -2
- package/README.md +1 -1
- package/SKILLS.md +1 -1
- package/STYLE_GUIDE.md +2 -2
- package/foundry.toml +1 -1
- package/package.json +3 -3
- package/script/Deploy.s.sol +1 -1
- package/script/DeployPeriphery.s.sol +1 -1
- package/script/helpers/CoreDeploymentLib.sol +1 -1
- package/src/JBChainlinkV3PriceFeed.sol +1 -1
- package/src/JBChainlinkV3SequencerPriceFeed.sol +1 -1
- package/src/JBController.sol +1 -1
- package/src/JBDeadline.sol +1 -1
- package/src/JBDirectory.sol +1 -1
- package/src/JBERC20.sol +1 -1
- package/src/JBFeelessAddresses.sol +1 -1
- package/src/JBFundAccessLimits.sol +1 -1
- package/src/JBMultiTerminal.sol +1 -1
- package/src/JBPermissions.sol +1 -1
- package/src/JBPrices.sol +1 -1
- package/src/JBProjects.sol +1 -1
- package/src/JBRulesets.sol +1 -1
- package/src/JBSplits.sol +1 -1
- package/src/JBTerminalStore.sol +1 -1
- package/src/JBTokens.sol +1 -1
- package/src/libraries/JBPayoutSplitGroupLib.sol +1 -1
- package/src/periphery/JBDeadline1Day.sol +1 -1
- package/src/periphery/JBDeadline3Days.sol +1 -1
- package/src/periphery/JBDeadline3Hours.sol +1 -1
- package/src/periphery/JBDeadline7Days.sol +1 -1
- package/src/periphery/JBMatchingPriceFeed.sol +1 -1
- package/test/TestJBERC20Inheritance.sol +1 -1
- package/test/TestMetadataOffsetOverflow.sol +1 -1
- package/test/TestMetadataParserLib.sol +1 -1
- package/test/TestTerminalPreviewParity.sol +1 -1
- package/test/audit/FeeFreeSurplusLifecycle.t.sol +6 -2
- package/test/audit/FeeFreeSurplusStale.t.sol +11 -5
- package/test/audit/USDTVoidReturnCompat.t.sol +6 -0
- package/test/fork/TestChainlinkPriceFeedFork.sol +1 -1
- package/test/fork/TestSequencerPriceFeedFork.sol +1 -1
- package/test/fork/TestTerminalPreviewParityFork.sol +1 -1
- package/test/helpers/JBTest.sol +1 -1
- package/test/helpers/MetadataResolverHelper.sol +1 -1
- package/test/mock/MockERC20.sol +1 -1
- package/test/mock/MockMaliciousBeneficiary.sol +1 -1
- package/test/mock/MockMaliciousSplitHook.sol +1 -1
- package/test/mock/MockPriceFeed.sol +1 -1
- package/test/mock/MockUSDT.sol +1 -1
- package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +1 -1
- package/test/units/static/JBController/JBControllerSetup.sol +1 -1
- package/test/units/static/JBController/TestBurnTokensOf.sol +1 -1
- package/test/units/static/JBController/TestClaimTokensFor.sol +1 -1
- package/test/units/static/JBController/TestDeployErc20For.sol +1 -1
- package/test/units/static/JBController/TestLaunchProjectFor.sol +1 -1
- package/test/units/static/JBController/TestLaunchRulesetsFor.sol +1 -1
- package/test/units/static/JBController/TestMigrateController.sol +1 -1
- package/test/units/static/JBController/TestMintTokensOfUnits.sol +1 -1
- package/test/units/static/JBController/TestOmnichainRulesetOperator.sol +1 -1
- package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +1 -1
- package/test/units/static/JBController/TestPreviewMintOf.sol +1 -1
- package/test/units/static/JBController/TestReceiveMigrationFrom.sol +1 -1
- package/test/units/static/JBController/TestRulesetViews.sol +1 -1
- package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +1 -1
- package/test/units/static/JBController/TestSetSplitGroupsOf.sol +1 -1
- package/test/units/static/JBController/TestSetTokenFor.sol +1 -1
- package/test/units/static/JBController/TestSetUriOf.sol +1 -1
- package/test/units/static/JBController/TestTransferCreditsFrom.sol +1 -1
- package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +1 -1
- package/test/units/static/JBDirectory/JBDirectorySetup.sol +1 -1
- package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +1 -1
- package/test/units/static/JBDirectory/TestSetControllerOf.sol +1 -1
- package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +1 -1
- package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +1 -1
- package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +1 -1
- package/test/units/static/JBERC20/JBERC20Setup.sol +1 -1
- package/test/units/static/JBERC20/SigUtils.sol +1 -1
- 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 +1 -1
- package/test/units/static/JBERC20/TestSymbol.sol +1 -1
- package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +1 -1
- package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +1 -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 +1 -1
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +1 -1
- package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +1 -1
- package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +1 -1
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +1 -1
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +1 -1
- package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +1 -1
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +1 -1
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +1 -1
- package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +1 -1
- package/test/units/static/JBMetadataResolver/TestMetadataResolverEdgeCases.sol +1 -1
- package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +1 -1
- package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestPay.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestPreviewCashOutFrom.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestPreviewPayFor.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +1 -1
- package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +1 -1
- package/test/units/static/JBPermissions/JBPermissionsSetup.sol +1 -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 +1 -1
- package/test/units/static/JBPrices/JBPricesSetup.sol +1 -1
- package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +1 -1
- package/test/units/static/JBPrices/TestPricePerUnitOf.sol +1 -1
- package/test/units/static/JBPrices/TestPrices.sol +1 -1
- package/test/units/static/JBProjects/JBProjectsSetup.sol +1 -1
- package/test/units/static/JBProjects/TestCreateFor.sol +1 -1
- package/test/units/static/JBProjects/TestInitialProject.sol +1 -1
- package/test/units/static/JBProjects/TestInterfaces.sol +1 -1
- package/test/units/static/JBProjects/TestSetResolver.sol +1 -1
- package/test/units/static/JBProjects/TestTokenUri.sol +1 -1
- package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +1 -1
- package/test/units/static/JBRulesets/JBRulesetsSetup.sol +1 -1
- package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +1 -1
- package/test/units/static/JBRulesets/TestCurrentOf.sol +1 -1
- package/test/units/static/JBRulesets/TestGetRulesetOf.sol +1 -1
- package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +1 -1
- package/test/units/static/JBRulesets/TestRulesets.sol +1 -1
- package/test/units/static/JBRulesets/TestRulesetsOf.sol +1 -1
- package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +1 -1
- package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +1 -1
- package/test/units/static/JBSplits/JBSplitsSetup.sol +1 -1
- package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +1 -1
- package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +1 -1
- package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +1 -1
- package/test/units/static/JBSplits/TestSplitsOf.sol +1 -1
- package/test/units/static/JBSplits/TestSplitsPacking.sol +1 -1
- package/test/units/static/JBSurplus/TestSurplusFuzz.sol +1 -1
- package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +1 -1
- package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +1 -1
- package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +1 -1
- package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +1 -1
- package/test/units/static/JBTerminalStore/TestPreviewCashOutFrom.sol +1 -1
- package/test/units/static/JBTerminalStore/TestPreviewPayFrom.sol +1 -1
- package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +1 -1
- package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +1 -1
- package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +1 -1
- package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +1 -1
- package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +1 -1
- package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +1 -1
- package/test/units/static/JBTokens/JBTokensSetup.sol +1 -1
- package/test/units/static/JBTokens/TestBurnFrom.sol +1 -1
- package/test/units/static/JBTokens/TestClaimTokensFor.sol +1 -1
- package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +1 -1
- package/test/units/static/JBTokens/TestMintFor.sol +1 -1
- package/test/units/static/JBTokens/TestSetTokenFor.sol +1 -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 +1 -1
package/AUDIT_INSTRUCTIONS.md
CHANGED
|
@@ -6,7 +6,7 @@ Read [RISKS.md](./RISKS.md) for known risks, trust model, and reentrancy analysi
|
|
|
6
6
|
|
|
7
7
|
## Architecture Overview
|
|
8
8
|
|
|
9
|
-
16 contracts, ~8,100 lines in main contracts. All contracts use Solidity
|
|
9
|
+
16 contracts, ~8,100 lines in main contracts. All contracts use Solidity 0.8.28.
|
|
10
10
|
|
|
11
11
|
```
|
|
12
12
|
JBProjects (ERC-721)
|
|
@@ -420,7 +420,7 @@ The 185 test files cover most flows, but these areas have limited or no coverage
|
|
|
420
420
|
|
|
421
421
|
## Compiler and Version Info
|
|
422
422
|
|
|
423
|
-
- **Solidity**:
|
|
423
|
+
- **Solidity**: 0.8.28
|
|
424
424
|
- **EVM target**: Cancun (uses transient storage opcodes)
|
|
425
425
|
- **Optimizer**: 200 runs (no via-IR)
|
|
426
426
|
- **Dependencies**: OpenZeppelin 5.x, Solady, forge-std
|
package/CHANGE_LOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# nana-core-v6 Changelog (v5 -> v6)
|
|
2
2
|
|
|
3
|
-
This document describes all changes between `nana-core` (v5, Solidity 0.8.23) and `nana-core-v6` (v6, Solidity
|
|
3
|
+
This document describes all changes between `nana-core` (v5, Solidity 0.8.23) and `nana-core-v6` (v6, Solidity 0.8.28).
|
|
4
4
|
|
|
5
5
|
## Summary
|
|
6
6
|
|
|
@@ -375,7 +375,7 @@ No changes.
|
|
|
375
375
|
|
|
376
376
|
### 8.10 Solidity Version
|
|
377
377
|
|
|
378
|
-
All contracts upgraded from `pragma solidity 0.8.23` to `pragma solidity
|
|
378
|
+
All contracts upgraded from `pragma solidity 0.8.23` to `pragma solidity 0.8.28`.
|
|
379
379
|
|
|
380
380
|
### 8.11 Named Arguments
|
|
381
381
|
|
package/README.md
CHANGED
|
@@ -100,7 +100,7 @@ Projects can migrate between controllers using the `IJBMigratable` interface. Th
|
|
|
100
100
|
|
|
101
101
|
Juicebox V6 separates concerns across specialized contracts that coordinate through a central directory. Projects are represented as ERC-721 NFTs. Each project configures rulesets that dictate how payments, payouts, cash outs, and token minting behave over time.
|
|
102
102
|
|
|
103
|
-
All contracts use Solidity
|
|
103
|
+
All contracts use Solidity `0.8.28`.
|
|
104
104
|
|
|
105
105
|
```mermaid
|
|
106
106
|
graph TD;
|
package/SKILLS.md
CHANGED
|
@@ -417,7 +417,7 @@ Returns whether `addr` is allowed to mint tokens for the project. Called by `JBC
|
|
|
417
417
|
|
|
418
418
|
```solidity
|
|
419
419
|
// SPDX-License-Identifier: MIT
|
|
420
|
-
pragma solidity
|
|
420
|
+
pragma solidity 0.8.28;
|
|
421
421
|
|
|
422
422
|
import {IJBController} from "@bananapus/core-v6/src/interfaces/IJBController.sol";
|
|
423
423
|
import {IJBDirectory} from "@bananapus/core-v6/src/interfaces/IJBDirectory.sol";
|
package/STYLE_GUIDE.md
CHANGED
|
@@ -21,7 +21,7 @@ One contract/interface/struct/enum per file. Name the file after the type it con
|
|
|
21
21
|
|
|
22
22
|
```solidity
|
|
23
23
|
// Contracts — pin to exact version
|
|
24
|
-
pragma solidity
|
|
24
|
+
pragma solidity 0.8.28;
|
|
25
25
|
|
|
26
26
|
// Interfaces, structs, enums — caret for forward compatibility
|
|
27
27
|
pragma solidity ^0.8.0;
|
|
@@ -331,7 +331,7 @@ Standard config across all repos:
|
|
|
331
331
|
|
|
332
332
|
```toml
|
|
333
333
|
[profile.default]
|
|
334
|
-
solc = '0.8.
|
|
334
|
+
solc = '0.8.28'
|
|
335
335
|
evm_version = 'cancun'
|
|
336
336
|
optimizer_runs = 200
|
|
337
337
|
libs = ["node_modules", "lib"]
|
package/foundry.toml
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bananapus/core-v6",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"artifacts": "source ./.env && npx sphinx artifacts --org-id 'ea165b21-7cdc-4d7b-be59-ecdd4c26bee4' --project-name 'nana-core-v6'"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@bananapus/address-registry-v6": "^0.0.
|
|
30
|
-
"@bananapus/permission-ids-v6": "^0.0.
|
|
29
|
+
"@bananapus/address-registry-v6": "^0.0.15",
|
|
30
|
+
"@bananapus/permission-ids-v6": "^0.0.14",
|
|
31
31
|
"@chainlink/contracts": "^1.3.0",
|
|
32
32
|
"@openzeppelin/contracts": "^5.6.1",
|
|
33
33
|
"@prb/math": "^4.1.1",
|
package/script/Deploy.s.sol
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity
|
|
2
|
+
pragma solidity 0.8.28;
|
|
3
3
|
|
|
4
4
|
import {AggregatorV2V3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV2V3Interface.sol";
|
|
5
5
|
import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol";
|
package/src/JBController.sol
CHANGED
package/src/JBDeadline.sol
CHANGED
package/src/JBDirectory.sol
CHANGED
package/src/JBERC20.sol
CHANGED
package/src/JBMultiTerminal.sol
CHANGED
package/src/JBPermissions.sol
CHANGED
package/src/JBPrices.sol
CHANGED
package/src/JBProjects.sol
CHANGED
package/src/JBRulesets.sol
CHANGED
package/src/JBSplits.sol
CHANGED
package/src/JBTerminalStore.sol
CHANGED
package/src/JBTokens.sol
CHANGED
|
@@ -114,6 +114,7 @@ contract FeeFreeSurplusLifecycleTest is TestBaseWorkflow {
|
|
|
114
114
|
splits[0] = JBSplit({
|
|
115
115
|
preferAddToBalance: true,
|
|
116
116
|
percent: JBConstants.SPLITS_TOTAL_PERCENT,
|
|
117
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
117
118
|
projectId: uint64(_recipientProjectId),
|
|
118
119
|
beneficiary: payable(address(0)),
|
|
119
120
|
lockedUntil: 0,
|
|
@@ -126,8 +127,11 @@ contract FeeFreeSurplusLifecycleTest is TestBaseWorkflow {
|
|
|
126
127
|
|
|
127
128
|
// Payout limit: allow paying out the full PAY_AMOUNT each cycle.
|
|
128
129
|
JBCurrencyAmount[] memory payoutLimits = new JBCurrencyAmount[](1);
|
|
129
|
-
payoutLimits[0] =
|
|
130
|
-
|
|
130
|
+
payoutLimits[0] = JBCurrencyAmount({
|
|
131
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
132
|
+
amount: uint224(PAY_AMOUNT),
|
|
133
|
+
currency: uint32(uint160(JBConstants.NATIVE_TOKEN))
|
|
134
|
+
});
|
|
131
135
|
|
|
132
136
|
// Fund access limits with the payout limit defined above.
|
|
133
137
|
JBFundAccessLimitGroup[] memory payerLimits = new JBFundAccessLimitGroup[](1);
|
|
@@ -16,7 +16,6 @@ import {JBRulesetMetadata} from "../../src/structs/JBRulesetMetadata.sol";
|
|
|
16
16
|
import {JBSplit} from "../../src/structs/JBSplit.sol";
|
|
17
17
|
import {JBSplitGroup} from "../../src/structs/JBSplitGroup.sol";
|
|
18
18
|
import {JBTerminalConfig} from "../../src/structs/JBTerminalConfig.sol";
|
|
19
|
-
import {mulDiv} from "@prb/math/src/Common.sol";
|
|
20
19
|
|
|
21
20
|
contract FeeFreeSurplusStaleTest is TestBaseWorkflow {
|
|
22
21
|
IJBController private _controller;
|
|
@@ -63,8 +62,11 @@ contract FeeFreeSurplusStaleTest is TestBaseWorkflow {
|
|
|
63
62
|
});
|
|
64
63
|
|
|
65
64
|
JBCurrencyAmount[] memory surplusAllowances = new JBCurrencyAmount[](1);
|
|
66
|
-
surplusAllowances[0] =
|
|
67
|
-
|
|
65
|
+
surplusAllowances[0] = JBCurrencyAmount({
|
|
66
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
67
|
+
amount: uint224(PAY_AMOUNT),
|
|
68
|
+
currency: uint32(uint160(JBConstants.NATIVE_TOKEN))
|
|
69
|
+
});
|
|
68
70
|
|
|
69
71
|
JBFundAccessLimitGroup[] memory fundAccessLimitGroups = new JBFundAccessLimitGroup[](1);
|
|
70
72
|
fundAccessLimitGroups[0] = JBFundAccessLimitGroup({
|
|
@@ -91,6 +93,7 @@ contract FeeFreeSurplusStaleTest is TestBaseWorkflow {
|
|
|
91
93
|
splits[0] = JBSplit({
|
|
92
94
|
preferAddToBalance: true,
|
|
93
95
|
percent: JBConstants.SPLITS_TOTAL_PERCENT,
|
|
96
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
94
97
|
projectId: uint64(_projectIdB),
|
|
95
98
|
beneficiary: payable(address(0)),
|
|
96
99
|
lockedUntil: 0,
|
|
@@ -101,8 +104,11 @@ contract FeeFreeSurplusStaleTest is TestBaseWorkflow {
|
|
|
101
104
|
splitGroups[0] = JBSplitGroup({groupId: uint32(uint160(JBConstants.NATIVE_TOKEN)), splits: splits});
|
|
102
105
|
|
|
103
106
|
JBCurrencyAmount[] memory payoutLimits = new JBCurrencyAmount[](1);
|
|
104
|
-
payoutLimits[0] =
|
|
105
|
-
|
|
107
|
+
payoutLimits[0] = JBCurrencyAmount({
|
|
108
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
109
|
+
amount: uint224(PAY_AMOUNT),
|
|
110
|
+
currency: uint32(uint160(JBConstants.NATIVE_TOKEN))
|
|
111
|
+
});
|
|
106
112
|
|
|
107
113
|
JBFundAccessLimitGroup[] memory projectALimits = new JBFundAccessLimitGroup[](1);
|
|
108
114
|
projectALimits[0] = JBFundAccessLimitGroup({
|
|
@@ -150,6 +150,7 @@ contract USDTVoidReturnCompat is TestBaseWorkflow {
|
|
|
150
150
|
|
|
151
151
|
// Grant Permit2 allowance for the terminal to pull tokens.
|
|
152
152
|
vm.prank(payer);
|
|
153
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
153
154
|
permit2().approve(address(usdt), address(jbMultiTerminal()), uint160(payAmount), type(uint48).max);
|
|
154
155
|
|
|
155
156
|
// Execute the payment — this is the critical call that must handle void returns.
|
|
@@ -196,6 +197,7 @@ contract USDTVoidReturnCompat is TestBaseWorkflow {
|
|
|
196
197
|
|
|
197
198
|
// Grant Permit2 allowance for the terminal.
|
|
198
199
|
vm.prank(payer);
|
|
200
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
199
201
|
permit2().approve(address(usdt), address(jbMultiTerminal()), uint160(payAmount), type(uint48).max);
|
|
200
202
|
|
|
201
203
|
// Pay into the project to fund it.
|
|
@@ -254,6 +256,7 @@ contract USDTVoidReturnCompat is TestBaseWorkflow {
|
|
|
254
256
|
|
|
255
257
|
// Grant Permit2 allowance for the terminal.
|
|
256
258
|
vm.prank(payer);
|
|
259
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
257
260
|
permit2().approve(address(usdt), address(jbMultiTerminal()), uint160(payAmount), type(uint48).max);
|
|
258
261
|
|
|
259
262
|
// Pay into the project to receive project tokens.
|
|
@@ -316,6 +319,7 @@ contract USDTVoidReturnCompat is TestBaseWorkflow {
|
|
|
316
319
|
|
|
317
320
|
// Grant Permit2 allowance for the terminal.
|
|
318
321
|
vm.prank(payer);
|
|
322
|
+
// forge-lint: disable-next-line(unsafe-typecast)
|
|
319
323
|
permit2().approve(address(usdt), address(jbMultiTerminal()), uint160(payAmount), type(uint48).max);
|
|
320
324
|
|
|
321
325
|
// Step 1: Pay into the project.
|
|
@@ -367,6 +371,7 @@ contract USDTVoidReturnCompat is TestBaseWorkflow {
|
|
|
367
371
|
// =========================================================================
|
|
368
372
|
|
|
369
373
|
/// @notice Launches a project that accepts MockUSDT with no splits and no payout limits.
|
|
374
|
+
// forge-lint: disable-next-line(mixed-case-function)
|
|
370
375
|
function _launchUSDTProject() internal returns (uint256) {
|
|
371
376
|
// Create a single-element array for the ruleset configuration.
|
|
372
377
|
JBRulesetConfig[] memory rulesetConfig = new JBRulesetConfig[](1);
|
|
@@ -428,6 +433,7 @@ contract USDTVoidReturnCompat is TestBaseWorkflow {
|
|
|
428
433
|
}
|
|
429
434
|
|
|
430
435
|
/// @notice Launches a project that accepts MockUSDT with a 100% split to splitBeneficiary.
|
|
436
|
+
// forge-lint: disable-next-line(mixed-case-function)
|
|
431
437
|
function _launchUSDTProjectWithSplit() internal returns (uint256) {
|
|
432
438
|
// Create a single-element array for the ruleset configuration.
|
|
433
439
|
JBRulesetConfig[] memory rulesetConfig = new JBRulesetConfig[](1);
|
package/test/helpers/JBTest.sol
CHANGED
package/test/mock/MockERC20.sol
CHANGED
package/test/mock/MockUSDT.sol
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity
|
|
2
|
+
pragma solidity 0.8.28;
|
|
3
3
|
|
|
4
4
|
/// @notice Mimics Tether (USDT) whose transfer/transferFrom/approve return void instead of bool.
|
|
5
5
|
/// @dev Uses inline assembly to return empty data (no bool), matching USDT's on-chain behavior.
|