@bananapus/core-v6 0.0.37 → 0.0.39
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/foundry.lock +1 -7
- package/foundry.toml +1 -1
- package/package.json +19 -7
- package/src/JBChainlinkV3PriceFeed.sol +4 -1
- package/src/JBChainlinkV3SequencerPriceFeed.sol +4 -2
- package/src/JBController.sol +71 -44
- package/src/JBDeadline.sol +4 -4
- package/src/JBDirectory.sol +34 -32
- package/src/JBERC20.sol +5 -4
- package/src/JBFeelessAddresses.sol +6 -3
- package/src/JBFundAccessLimits.sol +25 -21
- package/src/JBMultiTerminal.sol +121 -84
- package/src/JBPermissions.sol +34 -37
- package/src/JBPrices.sol +23 -18
- package/src/JBProjects.sol +6 -3
- package/src/JBRulesets.sol +44 -41
- package/src/JBSplits.sol +18 -16
- package/src/JBTerminalStore.sol +32 -25
- package/src/JBTokens.sol +36 -26
- package/src/abstract/JBControlled.sol +3 -1
- package/src/abstract/JBPermissioned.sol +3 -1
- package/src/enums/JBApprovalStatus.sol +7 -1
- package/src/interfaces/IJBController.sol +7 -3
- package/src/interfaces/IJBDirectory.sol +3 -1
- package/src/interfaces/IJBMultiTerminal.sol +3 -2
- package/src/interfaces/IJBPermissions.sol +2 -1
- package/src/interfaces/IJBPrices.sol +3 -1
- package/src/interfaces/IJBRulesets.sol +2 -1
- package/src/interfaces/IJBSplits.sol +2 -1
- package/src/interfaces/IJBTerminal.sol +3 -1
- package/src/interfaces/IJBTerminalStore.sol +3 -1
- package/src/interfaces/IJBTokens.sol +2 -1
- package/src/libraries/JBCashOuts.sol +6 -1
- package/src/libraries/JBConstants.sol +12 -3
- package/src/libraries/JBCurrencyIds.sol +2 -0
- package/src/libraries/JBFees.sol +52 -10
- package/src/libraries/JBFixedPointNumber.sol +2 -0
- package/src/libraries/JBPayoutSplitGroupLib.sol +7 -4
- package/src/libraries/JBRulesetMetadataResolver.sol +4 -0
- package/src/libraries/JBSplitGroupIds.sol +2 -1
- package/src/libraries/JBSurplus.sol +3 -1
- package/src/periphery/JBMatchingPriceFeed.sol +3 -1
- package/src/structs/JBAccountingContext.sol +7 -4
- package/src/structs/JBFundAccessLimitGroup.sol +10 -17
- package/src/structs/JBRuleset.sol +18 -26
- package/src/structs/JBRulesetConfig.sol +13 -25
- package/src/structs/JBRulesetMetadata.sol +25 -32
- package/test/mock/MockMaliciousBeneficiary.sol +15 -15
- package/ADMINISTRATION.md +0 -103
- package/ARCHITECTURE.md +0 -133
- package/AUDIT_INSTRUCTIONS.md +0 -139
- package/RISKS.md +0 -215
- package/SKILLS.md +0 -55
- package/STYLE_GUIDE.md +0 -610
- package/USER_JOURNEYS.md +0 -215
- package/script/Deploy.s.sol +0 -124
- package/script/DeployPeriphery.s.sol +0 -354
- package/slither-ci.config.json +0 -10
- package/test/AuditFixes.t.sol +0 -808
- package/test/ComprehensiveInvariant.t.sol +0 -306
- package/test/CoreExploitTests.t.sol +0 -2741
- package/test/EconomicSimulation.t.sol +0 -348
- package/test/EntryPointPermutations.t.sol +0 -684
- package/test/FlashLoanAttacks.t.sol +0 -797
- package/test/PermissionEscalation.t.sol +0 -711
- package/test/PermissionsInvariant.t.sol +0 -403
- package/test/RulesetTransitions.t.sol +0 -713
- package/test/SplitLoopTests.t.sol +0 -752
- package/test/TestAccessToFunds.sol +0 -2683
- package/test/TestAuditResponseDesignProofs.sol +0 -434
- package/test/TestCashOut.sol +0 -198
- package/test/TestCashOutCountFor.sol +0 -271
- package/test/TestCashOutHooks.sol +0 -351
- package/test/TestCashOutTimingEdge.sol +0 -241
- package/test/TestDataHookFuzzing.sol +0 -524
- package/test/TestDurationUnderflow.sol +0 -233
- package/test/TestFeeFreeCashOutBypass.sol +0 -949
- package/test/TestFeeProcessingFailure.sol +0 -218
- package/test/TestFees.sol +0 -619
- package/test/TestForwardedTokenConsumption.sol +0 -425
- package/test/TestInterfaceSupport.sol +0 -81
- package/test/TestJBERC20Inheritance.sol +0 -103
- package/test/TestL2SequencerPriceFeed.sol +0 -292
- package/test/TestLaunchProject.sol +0 -188
- package/test/TestMetaTx.sol +0 -217
- package/test/TestMetadataOffsetOverflow.sol +0 -179
- package/test/TestMetadataParserLib.sol +0 -471
- package/test/TestMigrationHeldFees.sol +0 -255
- package/test/TestMintTokensOf.sol +0 -185
- package/test/TestMultiTerminalSurplus.sol +0 -348
- package/test/TestMultiTokenSurplus.sol +0 -202
- package/test/TestMultipleAccessLimits.sol +0 -664
- package/test/TestPayBurnRedeemFlow.sol +0 -195
- package/test/TestPayHooks.sol +0 -209
- package/test/TestPermissions.sol +0 -324
- package/test/TestPermissionsEdge.sol +0 -290
- package/test/TestPermit2DataHook.t.sol +0 -360
- package/test/TestPermit2Terminal.sol +0 -372
- package/test/TestRulesetQueueing.sol +0 -1025
- package/test/TestRulesetQueuingStress.sol +0 -806
- package/test/TestRulesetWeightCaching.sol +0 -178
- package/test/TestSplits.sol +0 -391
- package/test/TestTerminalMigration.sol +0 -274
- package/test/TestTerminalPreviewParity.sol +0 -208
- package/test/TestTokenFlow.sol +0 -191
- package/test/TestWeightCacheStaleAfterRejection.sol +0 -303
- package/test/WeirdTokenTests.t.sol +0 -817
- package/test/audit/CashOutReenterPay.t.sol +0 -501
- package/test/audit/CodexHeldFeeRounding.t.sol +0 -159
- package/test/audit/CodexMigrationFeeFailure.t.sol +0 -163
- package/test/audit/CrossTerminalSurplusSpoof.t.sol +0 -140
- package/test/audit/CycledSurplusAllowanceReset.t.sol +0 -184
- package/test/audit/FeeFreeSurplusLifecycle.t.sol +0 -399
- package/test/audit/FeeFreeSurplusStale.t.sol +0 -248
- package/test/audit/USDTVoidReturnCompat.t.sol +0 -525
- package/test/fork/TestChainlinkPriceFeedFork.sol +0 -254
- package/test/fork/TestSequencerPriceFeedFork.sol +0 -168
- package/test/fork/TestTerminalPreviewParityFork.sol +0 -108
- package/test/formal/BondingCurveProperties.t.sol +0 -420
- package/test/formal/FeeProperties.t.sol +0 -252
- package/test/invariants/Phase3DeepInvariant.t.sol +0 -412
- package/test/invariants/RulesetsInvariant.t.sol +0 -125
- package/test/invariants/TerminalStoreInvariant.t.sol +0 -227
- package/test/invariants/TokensInvariant.t.sol +0 -195
- package/test/invariants/handlers/ComprehensiveHandler.sol +0 -303
- package/test/invariants/handlers/EconomicHandler.sol +0 -377
- package/test/invariants/handlers/Phase3Handler.sol +0 -443
- package/test/invariants/handlers/RulesetsHandler.sol +0 -115
- package/test/invariants/handlers/TerminalStoreHandler.sol +0 -151
- package/test/invariants/handlers/TokensHandler.sol +0 -126
- package/test/regression/HoldFeesCashOutReserved.t.sol +0 -415
- package/test/regression/WeightCacheBoundary.t.sol +0 -291
- package/test/trees/JBController/burnTokensOf.tree +0 -9
- package/test/trees/JBController/claimTokensFor.tree +0 -5
- package/test/trees/JBController/deployERC20For.tree +0 -5
- package/test/trees/JBController/getRulesetOf.tree +0 -5
- package/test/trees/JBController/launchProjectFor.tree +0 -12
- package/test/trees/JBController/launchRulesetsFor.tree +0 -8
- package/test/trees/JBController/migrateController.tree +0 -12
- package/test/trees/JBController/mintTokensOf.tree +0 -12
- package/test/trees/JBController/payReservedTokenToTerminal.tree +0 -8
- package/test/trees/JBController/receiveMigrationFrom.tree +0 -4
- package/test/trees/JBController/sendReservedTokensToSplitsOf.tree +0 -12
- package/test/trees/JBController/setMetadataOf.tree +0 -5
- package/test/trees/JBController/setSplitGroupsOf.tree +0 -5
- package/test/trees/JBController/setTokenFor.tree +0 -5
- package/test/trees/JBController/transferCreditsFrom.tree +0 -8
- package/test/trees/JBDirectory/primaryTerminalOf.tree +0 -8
- package/test/trees/JBDirectory/setControllerOf.tree +0 -11
- package/test/trees/JBDirectory/setPrimaryTerminalOf.tree +0 -15
- package/test/trees/JBDirectory/setTerminalsOf.tree +0 -11
- package/test/trees/JBERC20/initialize.tree +0 -7
- package/test/trees/JBERC20/name.tree +0 -5
- package/test/trees/JBERC20/nonces.tree +0 -5
- package/test/trees/JBERC20/symbol.tree +0 -5
- package/test/trees/JBFeelessAddresses/setFeelessAddress.tree +0 -5
- package/test/trees/JBFeelessAddresses/supportsInterface.tree +0 -5
- package/test/trees/JBFundAccessLimits/payoutLimitOf.tree +0 -5
- package/test/trees/JBFundAccessLimits/payoutLimitsOf.tree +0 -8
- package/test/trees/JBFundAccessLimits/setFundAccessLimitsFor.tree +0 -18
- package/test/trees/JBFundAccessLimits/surplusAllowanceOf.tree +0 -5
- package/test/trees/JBFundAccessLimits/surplusAllowancesOf.tree +0 -8
- package/test/trees/JBMetadataResolver/getDataFor.tree +0 -8
- package/test/trees/JBMultiTerminal/accountingContextsOf.tree +0 -5
- package/test/trees/JBMultiTerminal/addAccountingContextsFor.tree +0 -10
- package/test/trees/JBMultiTerminal/addToBalanceOf.tree +0 -23
- package/test/trees/JBMultiTerminal/cashOutTokensOf.tree +0 -23
- package/test/trees/JBMultiTerminal/executePayout.tree +0 -32
- package/test/trees/JBMultiTerminal/executeProcessFee.tree +0 -14
- package/test/trees/JBMultiTerminal/migrateBalanceOf.tree +0 -12
- package/test/trees/JBMultiTerminal/pay.tree +0 -23
- package/test/trees/JBMultiTerminal/processHeldFeesOf.tree +0 -8
- package/test/trees/JBMultiTerminal/sendPayoutsOf.tree +0 -34
- package/test/trees/JBMultiTerminal/useAllowanceOf.tree +0 -16
- package/test/trees/JBPermissions/hasPermission.tree +0 -8
- package/test/trees/JBPermissions/hasPermissions.tree +0 -8
- package/test/trees/JBPermissions/setPermissionsFor.tree +0 -5
- package/test/trees/JBPrices/addPriceFeedFor.tree +0 -14
- package/test/trees/JBPrices/pricePerUnitOf.tree +0 -11
- package/test/trees/JBProjects/createFor.tree +0 -11
- package/test/trees/JBProjects/setTokenUriResolver.tree +0 -5
- package/test/trees/JBProjects/supportsInterface.tree +0 -9
- package/test/trees/JBProjects/tokenURI.tree +0 -5
- package/test/trees/JBRulesets/currentApprovalStatusForLatestRulesetOf.tree +0 -8
- package/test/trees/JBRulesets/currentOf.tree +0 -12
- package/test/trees/JBRulesets/getRulesetOf.tree +0 -5
- package/test/trees/JBRulesets/latestQueuedRulesetOf.tree +0 -10
- package/test/trees/JBRulesets/rulesetsOf.tree +0 -11
- package/test/trees/JBRulesets/upcomingRulesetOf.tree +0 -20
- package/test/trees/JBRulesets/updateRulesetWeightCache.tree +0 -5
- package/test/trees/JBSplits/setSplitGroupsOf.tree +0 -17
- package/test/trees/JBSplits/splitsOf.tree +0 -5
- package/test/trees/JBTerminalStore/currentReclaimableSurplusOf.tree +0 -16
- package/test/trees/JBTerminalStore/currentSurplusOf.tree +0 -25
- package/test/trees/JBTerminalStore/currentTotalSurplusOf.tree +0 -5
- package/test/trees/JBTerminalStore/recordCashOutsFor.tree +0 -16
- package/test/trees/JBTerminalStore/recordPaymentFrom.tree +0 -14
- package/test/trees/JBTerminalStore/recordPayoutFor.tree +0 -10
- package/test/trees/JBTerminalStore/recordTerminalMigration.tree +0 -5
- package/test/trees/JBTerminalStore/recordUsedAllowanceOf.tree +0 -10
- package/test/trees/JBTokens/burnFrom.tree +0 -10
- package/test/trees/JBTokens/claimTokensFor.tree +0 -10
- package/test/trees/JBTokens/deployERC20For.tree +0 -12
- package/test/trees/JBTokens/mintFor.tree +0 -10
- package/test/trees/JBTokens/setTokenFor.tree +0 -11
- package/test/trees/JBTokens/totalBalanceOf.tree +0 -5
- package/test/trees/JBTokens/totalSupplyOf.tree +0 -5
- package/test/trees/JBTokens/transferCreditsFrom.tree +0 -8
- package/test/trees/mintTokensOf.tree +0 -12
- package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +0 -223
- package/test/units/static/JBController/JBControllerSetup.sol +0 -50
- package/test/units/static/JBController/TestBurnTokensOf.sol +0 -114
- package/test/units/static/JBController/TestClaimTokensFor.sol +0 -63
- package/test/units/static/JBController/TestDeployErc20For.sol +0 -86
- package/test/units/static/JBController/TestLaunchProjectFor.sol +0 -302
- package/test/units/static/JBController/TestLaunchRulesetsFor.sol +0 -342
- package/test/units/static/JBController/TestMigrateController.sol +0 -157
- package/test/units/static/JBController/TestMintTokensOfUnits.sol +0 -111
- package/test/units/static/JBController/TestOmnichainRulesetOperator.sol +0 -324
- package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +0 -74
- package/test/units/static/JBController/TestPreviewMintOf.sol +0 -117
- package/test/units/static/JBController/TestReceiveMigrationFrom.sol +0 -99
- package/test/units/static/JBController/TestRulesetViews.sol +0 -225
- package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +0 -615
- package/test/units/static/JBController/TestSetSplitGroupsOf.sol +0 -68
- package/test/units/static/JBController/TestSetTokenFor.sol +0 -239
- package/test/units/static/JBController/TestSetUriOf.sol +0 -57
- package/test/units/static/JBController/TestTransferCreditsFrom.sol +0 -169
- package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +0 -211
- package/test/units/static/JBDirectory/JBDirectorySetup.sol +0 -26
- package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +0 -126
- package/test/units/static/JBDirectory/TestSetControllerOf.sol +0 -183
- package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +0 -104
- package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +0 -179
- package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +0 -137
- package/test/units/static/JBERC20/JBERC20Setup.sol +0 -34
- package/test/units/static/JBERC20/SigUtils.sol +0 -36
- package/test/units/static/JBERC20/TestInitialize.sol +0 -60
- package/test/units/static/JBERC20/TestName.sol +0 -30
- package/test/units/static/JBERC20/TestNonces.sol +0 -62
- package/test/units/static/JBERC20/TestSymbol.sol +0 -31
- package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +0 -22
- package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +0 -30
- package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +0 -35
- package/test/units/static/JBFees/TestFeesFuzz.sol +0 -79
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +0 -16
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +0 -71
- package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +0 -24
- package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +0 -163
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +0 -59
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +0 -101
- package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +0 -189
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +0 -64
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +0 -102
- package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +0 -90
- package/test/units/static/JBMetadataResolver/TestMetadataResolverEdgeCases.sol +0 -247
- package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +0 -229
- package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +0 -50
- package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +0 -72
- package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +0 -289
- package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +0 -474
- package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +0 -624
- package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +0 -578
- package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +0 -202
- package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +0 -222
- package/test/units/static/JBMultiTerminal/TestPay.sol +0 -604
- package/test/units/static/JBMultiTerminal/TestPreviewCashOutFrom.sol +0 -117
- package/test/units/static/JBMultiTerminal/TestPreviewPayFor.sol +0 -114
- package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +0 -228
- package/test/units/static/JBMultiTerminal/TestSelfPayRevert.sol +0 -55
- package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +0 -257
- package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +0 -611
- package/test/units/static/JBPermissions/JBPermissionsSetup.sol +0 -20
- package/test/units/static/JBPermissions/TestHasPermission.sol +0 -50
- package/test/units/static/JBPermissions/TestHasPermissions.sol +0 -93
- package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +0 -64
- package/test/units/static/JBPrices/JBPricesSetup.sol +0 -32
- package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +0 -107
- package/test/units/static/JBPrices/TestPricePerUnitOf.sol +0 -132
- package/test/units/static/JBPrices/TestPrices.sol +0 -265
- package/test/units/static/JBProjects/JBProjectsSetup.sol +0 -22
- package/test/units/static/JBProjects/TestCreateFor.sol +0 -71
- package/test/units/static/JBProjects/TestInitialProject.sol +0 -21
- package/test/units/static/JBProjects/TestInterfaces.sol +0 -26
- package/test/units/static/JBProjects/TestSetResolver.sol +0 -37
- package/test/units/static/JBProjects/TestTokenUri.sol +0 -40
- package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +0 -108
- package/test/units/static/JBRulesets/JBRulesetsSetup.sol +0 -24
- package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +0 -265
- package/test/units/static/JBRulesets/TestCurrentOf.sol +0 -242
- package/test/units/static/JBRulesets/TestGetRulesetOf.sol +0 -100
- package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +0 -260
- package/test/units/static/JBRulesets/TestRulesets.sol +0 -632
- package/test/units/static/JBRulesets/TestRulesetsOf.sol +0 -37
- package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +0 -522
- package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +0 -96
- package/test/units/static/JBSplits/JBSplitsSetup.sol +0 -26
- package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +0 -552
- package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +0 -377
- package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +0 -267
- package/test/units/static/JBSplits/TestSplitsOf.sol +0 -24
- package/test/units/static/JBSplits/TestSplitsPacking.sol +0 -36
- package/test/units/static/JBSurplus/TestSurplusFuzz.sol +0 -160
- package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +0 -45
- package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +0 -536
- package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +0 -463
- package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +0 -135
- package/test/units/static/JBTerminalStore/TestPreviewCashOutFrom.sol +0 -476
- package/test/units/static/JBTerminalStore/TestPreviewPayFrom.sol +0 -494
- package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +0 -652
- package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +0 -744
- package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +0 -289
- package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +0 -138
- package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +0 -415
- package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +0 -219
- package/test/units/static/JBTokens/JBTokensSetup.sol +0 -32
- package/test/units/static/JBTokens/TestBurnFrom.sol +0 -107
- package/test/units/static/JBTokens/TestClaimTokensFor.sol +0 -110
- package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +0 -92
- package/test/units/static/JBTokens/TestMintFor.sol +0 -100
- package/test/units/static/JBTokens/TestSetTokenFor.sol +0 -98
- package/test/units/static/JBTokens/TestTotalBalanceOf.sol +0 -65
- package/test/units/static/JBTokens/TestTotalSupplyOf.sol +0 -56
- package/test/units/static/JBTokens/TestTransferCreditsFrom.sol +0 -56
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity 0.8.28;
|
|
3
|
-
|
|
4
|
-
import {JBTerminalStore} from "../../../../src/JBTerminalStore.sol";
|
|
5
|
-
import {IJBController} from "../../../../src/interfaces/IJBController.sol";
|
|
6
|
-
import {IJBDirectory} from "../../../../src/interfaces/IJBDirectory.sol";
|
|
7
|
-
import {IJBFundAccessLimits} from "../../../../src/interfaces/IJBFundAccessLimits.sol";
|
|
8
|
-
import {IJBPrices} from "../../../../src/interfaces/IJBPrices.sol";
|
|
9
|
-
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
10
|
-
import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
|
|
11
|
-
import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
|
|
12
|
-
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
13
|
-
import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
|
|
14
|
-
import {JBAccountingContext} from "../../../../src/structs/JBAccountingContext.sol";
|
|
15
|
-
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
16
|
-
import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
|
|
17
|
-
import {JBTerminalStoreSetup} from "./JBTerminalStoreSetup.sol";
|
|
18
|
-
|
|
19
|
-
contract TestRecordPayoutFor_Local is JBTerminalStoreSetup {
|
|
20
|
-
// A library that parses the packed ruleset metadata into a friendlier format.
|
|
21
|
-
using JBRulesetMetadataResolver for JBRuleset;
|
|
22
|
-
|
|
23
|
-
uint256 _projectId = 1;
|
|
24
|
-
uint256 _defaultValue = 1e18;
|
|
25
|
-
uint256 _balance = 1e18;
|
|
26
|
-
|
|
27
|
-
// Mocks
|
|
28
|
-
IJBToken _token = IJBToken(makeAddr("token"));
|
|
29
|
-
IJBController _controller = IJBController(makeAddr("controller"));
|
|
30
|
-
IJBFundAccessLimits _accessLimits = IJBFundAccessLimits(makeAddr("funds"));
|
|
31
|
-
|
|
32
|
-
uint32 _currency = uint32(uint160(address(_token)));
|
|
33
|
-
uint32 _nativeCurrency = uint32(uint160(JBConstants.NATIVE_TOKEN));
|
|
34
|
-
|
|
35
|
-
function setUp() public {
|
|
36
|
-
super.terminalStoreSetup();
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/// @notice Helper to register an accounting context with the store (from address(this) as terminal).
|
|
40
|
-
function _registerContext(address token, uint32 currency) internal {
|
|
41
|
-
JBAccountingContext[] memory ctxs = new JBAccountingContext[](1);
|
|
42
|
-
ctxs[0] = JBAccountingContext({token: token, decimals: 18, currency: currency});
|
|
43
|
-
_store.recordAccountingContextOf(_projectId, ctxs);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
modifier whenThereIsAZeroUsedPayoutLimitOfTheSenderForCurrentRuleset() {
|
|
47
|
-
JBRulesetMetadata memory _metadata = JBRulesetMetadata({
|
|
48
|
-
reservedPercent: 0,
|
|
49
|
-
cashOutTaxRate: JBConstants.MAX_CASH_OUT_TAX_RATE,
|
|
50
|
-
baseCurrency: uint32(uint160(address(_token))),
|
|
51
|
-
pausePay: false,
|
|
52
|
-
pauseCreditTransfers: false,
|
|
53
|
-
allowOwnerMinting: false,
|
|
54
|
-
allowSetCustomToken: false,
|
|
55
|
-
allowTerminalMigration: false,
|
|
56
|
-
allowSetTerminals: false,
|
|
57
|
-
ownerMustSendPayouts: false,
|
|
58
|
-
allowSetController: false,
|
|
59
|
-
allowAddAccountingContext: true,
|
|
60
|
-
allowAddPriceFeed: false,
|
|
61
|
-
holdFees: false,
|
|
62
|
-
useTotalSurplusForCashOuts: false,
|
|
63
|
-
useDataHookForPay: false,
|
|
64
|
-
useDataHookForCashOut: false,
|
|
65
|
-
dataHook: address(0),
|
|
66
|
-
metadata: 0
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
uint256 _packedMetadata = JBRulesetMetadataResolver.packRulesetMetadata(_metadata);
|
|
70
|
-
|
|
71
|
-
// JBRulesets return calldata
|
|
72
|
-
JBRuleset memory _returnedRuleset = JBRuleset({
|
|
73
|
-
cycleNumber: uint48(block.timestamp),
|
|
74
|
-
id: uint48(block.timestamp),
|
|
75
|
-
basedOnId: 0,
|
|
76
|
-
start: uint48(block.timestamp),
|
|
77
|
-
duration: uint32(block.timestamp + 1000),
|
|
78
|
-
weight: 1e18,
|
|
79
|
-
weightCutPercent: 0,
|
|
80
|
-
approvalHook: IJBRulesetApprovalHook(address(0)),
|
|
81
|
-
metadata: _packedMetadata
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
// mock call to JBRulesets currentOf
|
|
85
|
-
mockExpect(address(rulesets), abi.encodeCall(IJBRulesets.currentOf, (_projectId)), abi.encode(_returnedRuleset));
|
|
86
|
-
|
|
87
|
-
// mock call to JBDirectory controllerOf
|
|
88
|
-
mockExpect(address(directory), abi.encodeCall(IJBDirectory.controllerOf, (_projectId)), abi.encode(_controller));
|
|
89
|
-
|
|
90
|
-
// mock call to controller FUND_ACCESS_LIMITS
|
|
91
|
-
mockExpect(
|
|
92
|
-
address(_controller), abi.encodeCall(IJBController.FUND_ACCESS_LIMITS, ()), abi.encode(_accessLimits)
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
_;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
modifier whenThereIsAZeroUsedPayoutLimitOfTheSenderForCurrentRulesetAndAccessLimitsIsntCalled() {
|
|
99
|
-
JBRulesetMetadata memory _metadata = JBRulesetMetadata({
|
|
100
|
-
reservedPercent: 0,
|
|
101
|
-
cashOutTaxRate: JBConstants.MAX_CASH_OUT_TAX_RATE,
|
|
102
|
-
baseCurrency: uint32(uint160(address(_token))),
|
|
103
|
-
pausePay: false,
|
|
104
|
-
pauseCreditTransfers: false,
|
|
105
|
-
allowOwnerMinting: false,
|
|
106
|
-
allowSetCustomToken: false,
|
|
107
|
-
allowTerminalMigration: false,
|
|
108
|
-
allowSetTerminals: false,
|
|
109
|
-
ownerMustSendPayouts: false,
|
|
110
|
-
allowSetController: false,
|
|
111
|
-
allowAddAccountingContext: true,
|
|
112
|
-
allowAddPriceFeed: false,
|
|
113
|
-
holdFees: false,
|
|
114
|
-
useTotalSurplusForCashOuts: false,
|
|
115
|
-
useDataHookForPay: false,
|
|
116
|
-
useDataHookForCashOut: false,
|
|
117
|
-
dataHook: address(0),
|
|
118
|
-
metadata: 0
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
uint256 _packedMetadata = JBRulesetMetadataResolver.packRulesetMetadata(_metadata);
|
|
122
|
-
|
|
123
|
-
// JBRulesets return calldata
|
|
124
|
-
JBRuleset memory _returnedRuleset = JBRuleset({
|
|
125
|
-
cycleNumber: uint48(block.timestamp),
|
|
126
|
-
id: uint48(block.timestamp),
|
|
127
|
-
basedOnId: 0,
|
|
128
|
-
start: uint48(block.timestamp),
|
|
129
|
-
duration: uint32(block.timestamp + 1000),
|
|
130
|
-
weight: 1e18,
|
|
131
|
-
weightCutPercent: 0,
|
|
132
|
-
approvalHook: IJBRulesetApprovalHook(address(0)),
|
|
133
|
-
metadata: _packedMetadata
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
// mock call to JBRulesets currentOf
|
|
137
|
-
mockExpect(address(rulesets), abi.encodeCall(IJBRulesets.currentOf, (_projectId)), abi.encode(_returnedRuleset));
|
|
138
|
-
|
|
139
|
-
/* // mock call to JBDirectory controllerOf
|
|
140
|
-
mockExpect(address(directory), abi.encodeCall(IJBDirectory.controllerOf, (_projectId)),
|
|
141
|
-
abi.encode(_controller));
|
|
142
|
-
|
|
143
|
-
// mock call to controller FUND_ACCESS_LIMITS
|
|
144
|
-
mockExpect(
|
|
145
|
-
address(_controller), abi.encodeCall(IJBController.FUND_ACCESS_LIMITS, ()), abi.encode(_accessLimits)
|
|
146
|
-
); */
|
|
147
|
-
|
|
148
|
-
_;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
function test_GivenTheCallingAmountGtWhatIsAvailableToPayout()
|
|
152
|
-
external
|
|
153
|
-
whenThereIsAZeroUsedPayoutLimitOfTheSenderForCurrentRulesetAndAccessLimitsIsntCalled
|
|
154
|
-
{
|
|
155
|
-
// it will revert JBTerminalStore_InadequateTerminalStoreBalance
|
|
156
|
-
|
|
157
|
-
// Register accounting context so the store can look up decimals/currency for the token.
|
|
158
|
-
_registerContext(address(_token), _currency);
|
|
159
|
-
|
|
160
|
-
// setup calldata
|
|
161
|
-
JBAccountingContext[] memory _contexts = new JBAccountingContext[](1);
|
|
162
|
-
_contexts[0] = JBAccountingContext({token: address(_token), decimals: 18, currency: _currency});
|
|
163
|
-
|
|
164
|
-
vm.expectRevert(
|
|
165
|
-
abi.encodeWithSelector(
|
|
166
|
-
JBTerminalStore.JBTerminalStore_InadequateTerminalStoreBalance.selector, _defaultValue, 0
|
|
167
|
-
)
|
|
168
|
-
);
|
|
169
|
-
_store.recordPayoutFor(_projectId, _contexts[0].token, _defaultValue, _currency);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
function test_GivenTheCallingCurrencyEqTheContextCurrency()
|
|
173
|
-
external
|
|
174
|
-
whenThereIsAZeroUsedPayoutLimitOfTheSenderForCurrentRuleset
|
|
175
|
-
{
|
|
176
|
-
// it will not convert prices, update balances and return
|
|
177
|
-
|
|
178
|
-
// Register accounting context so the store can look up decimals/currency for the token.
|
|
179
|
-
_registerContext(address(_token), _currency);
|
|
180
|
-
|
|
181
|
-
// Find the storage slot
|
|
182
|
-
bytes32 balanceOfSlot = keccak256(abi.encode(address(this), uint256(0)));
|
|
183
|
-
bytes32 projectSlot = keccak256(abi.encode(_projectId, uint256(balanceOfSlot)));
|
|
184
|
-
bytes32 slot = keccak256(abi.encode(address(_token), uint256(projectSlot)));
|
|
185
|
-
|
|
186
|
-
bytes32 balanceBytes = bytes32(_balance);
|
|
187
|
-
|
|
188
|
-
// Set balance
|
|
189
|
-
vm.store(address(_store), slot, balanceBytes);
|
|
190
|
-
|
|
191
|
-
// Ensure balance is set correctly
|
|
192
|
-
uint256 _balanceCallReturn = _store.balanceOf(address(this), _projectId, address(_token));
|
|
193
|
-
assertEq(_balanceCallReturn, _balance);
|
|
194
|
-
|
|
195
|
-
// setup calldata
|
|
196
|
-
JBAccountingContext[] memory _contexts = new JBAccountingContext[](1);
|
|
197
|
-
_contexts[0] = JBAccountingContext({token: address(_token), decimals: 18, currency: _currency});
|
|
198
|
-
|
|
199
|
-
// mock call to JBFundAccessLimits payoutLimitOf
|
|
200
|
-
bytes memory _payoutsCall = abi.encodeCall(
|
|
201
|
-
IJBFundAccessLimits.payoutLimitOf, (_projectId, block.timestamp, address(this), address(_token), _currency)
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
bytes memory _payoutsReturn = abi.encode(_defaultValue);
|
|
205
|
-
mockExpect(address(_accessLimits), _payoutsCall, _payoutsReturn);
|
|
206
|
-
|
|
207
|
-
uint256 balanceBefore = _store.balanceOf(address(this), _projectId, address(_token));
|
|
208
|
-
|
|
209
|
-
(, uint256 amountPaid) = _store.recordPayoutFor(_projectId, _contexts[0].token, _defaultValue, _currency);
|
|
210
|
-
assertEq(amountPaid, _defaultValue);
|
|
211
|
-
|
|
212
|
-
// check usedPayoutLimit updated correctly
|
|
213
|
-
uint256 usedAfter =
|
|
214
|
-
_store.usedPayoutLimitOf(address(this), _projectId, address(_token), block.timestamp, _currency);
|
|
215
|
-
assertEq(usedAfter, _defaultValue);
|
|
216
|
-
|
|
217
|
-
// check balance updated correctly
|
|
218
|
-
uint256 expectedBalanceAfter = balanceBefore - _defaultValue;
|
|
219
|
-
uint256 balanceAfter = _store.balanceOf(address(this), _projectId, address(_token));
|
|
220
|
-
assertEq(balanceAfter, expectedBalanceAfter);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
function test_GivenTheCallingCurrencyDneqTheContextCurrency()
|
|
224
|
-
external
|
|
225
|
-
whenThereIsAZeroUsedPayoutLimitOfTheSenderForCurrentRuleset
|
|
226
|
-
{
|
|
227
|
-
// it will convert prices and return
|
|
228
|
-
|
|
229
|
-
// Register accounting context with _nativeCurrency so currency != accountingContext.currency triggers
|
|
230
|
-
// conversion.
|
|
231
|
-
_registerContext(address(_token), _nativeCurrency);
|
|
232
|
-
|
|
233
|
-
// Find the storage slot
|
|
234
|
-
bytes32 balanceOfSlot = keccak256(abi.encode(address(this), uint256(0)));
|
|
235
|
-
bytes32 projectSlot = keccak256(abi.encode(_projectId, uint256(balanceOfSlot)));
|
|
236
|
-
bytes32 slot = keccak256(abi.encode(address(_token), uint256(projectSlot)));
|
|
237
|
-
|
|
238
|
-
bytes32 balanceBytes = bytes32(_balance);
|
|
239
|
-
|
|
240
|
-
// Set balance
|
|
241
|
-
vm.store(address(_store), slot, balanceBytes);
|
|
242
|
-
|
|
243
|
-
// Ensure balance is set correctly
|
|
244
|
-
uint256 _balanceCallReturn = _store.balanceOf(address(this), _projectId, address(_token));
|
|
245
|
-
assertEq(_balanceCallReturn, _balance);
|
|
246
|
-
|
|
247
|
-
// setup calldata
|
|
248
|
-
JBAccountingContext[] memory _contexts = new JBAccountingContext[](1);
|
|
249
|
-
_contexts[0] = JBAccountingContext({token: address(_token), decimals: 18, currency: _nativeCurrency});
|
|
250
|
-
|
|
251
|
-
// mock call to JBFundAccessLimits payoutLimitOf
|
|
252
|
-
bytes memory _payoutsCall = abi.encodeCall(
|
|
253
|
-
IJBFundAccessLimits.payoutLimitOf, (_projectId, block.timestamp, address(this), address(_token), _currency)
|
|
254
|
-
);
|
|
255
|
-
|
|
256
|
-
bytes memory _payoutsReturn = abi.encode(_defaultValue);
|
|
257
|
-
mockExpect(address(_accessLimits), _payoutsCall, _payoutsReturn);
|
|
258
|
-
|
|
259
|
-
// mock call to JBPrices pricePerUnitOf
|
|
260
|
-
bytes memory _pricesCall =
|
|
261
|
-
abi.encodeCall(IJBPrices.pricePerUnitOf, (_projectId, _currency, _nativeCurrency, 18));
|
|
262
|
-
bytes memory _pricesReturn = abi.encode(2e18);
|
|
263
|
-
mockExpect(address(prices), _pricesCall, _pricesReturn);
|
|
264
|
-
|
|
265
|
-
(, uint256 amountPaid) = _store.recordPayoutFor(_projectId, _contexts[0].token, _defaultValue, _currency);
|
|
266
|
-
assertEq(amountPaid, _defaultValue / 2);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
function test_GivenTheAmountPaidOutExceedsBalance()
|
|
270
|
-
external
|
|
271
|
-
whenThereIsAZeroUsedPayoutLimitOfTheSenderForCurrentRulesetAndAccessLimitsIsntCalled
|
|
272
|
-
{
|
|
273
|
-
// it will revert INADEQUATE_TERMINAL_STORE_BALANCE
|
|
274
|
-
|
|
275
|
-
// Register accounting context so the store can look up decimals/currency for the token.
|
|
276
|
-
_registerContext(address(_token), _currency);
|
|
277
|
-
|
|
278
|
-
// setup calldata
|
|
279
|
-
JBAccountingContext[] memory _contexts = new JBAccountingContext[](1);
|
|
280
|
-
_contexts[0] = JBAccountingContext({token: address(_token), decimals: 18, currency: _currency});
|
|
281
|
-
|
|
282
|
-
vm.expectRevert(
|
|
283
|
-
abi.encodeWithSelector(
|
|
284
|
-
JBTerminalStore.JBTerminalStore_InadequateTerminalStoreBalance.selector, _defaultValue, 0
|
|
285
|
-
)
|
|
286
|
-
);
|
|
287
|
-
_store.recordPayoutFor(_projectId, _contexts[0].token, _defaultValue, _currency);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity 0.8.28;
|
|
3
|
-
|
|
4
|
-
import {JBTerminalStore} from "../../../../src/JBTerminalStore.sol";
|
|
5
|
-
import {IJBRulesetApprovalHook} from "../../../../src/interfaces/IJBRulesetApprovalHook.sol";
|
|
6
|
-
import {IJBRulesets} from "../../../../src/interfaces/IJBRulesets.sol";
|
|
7
|
-
import {IJBToken} from "../../../../src/interfaces/IJBToken.sol";
|
|
8
|
-
import {JBConstants} from "../../../../src/libraries/JBConstants.sol";
|
|
9
|
-
import {JBRulesetMetadataResolver} from "../../../../src/libraries/JBRulesetMetadataResolver.sol";
|
|
10
|
-
import {JBRuleset} from "../../../../src/structs/JBRuleset.sol";
|
|
11
|
-
import {JBRulesetMetadata} from "../../../../src/structs/JBRulesetMetadata.sol";
|
|
12
|
-
import {JBTerminalStoreSetup} from "./JBTerminalStoreSetup.sol";
|
|
13
|
-
|
|
14
|
-
contract TestRecordTerminalMigration_Local is JBTerminalStoreSetup {
|
|
15
|
-
uint256 _projectId = 1;
|
|
16
|
-
uint256 _balance = 1e19;
|
|
17
|
-
|
|
18
|
-
// Mocks
|
|
19
|
-
IJBToken _token = IJBToken(makeAddr("token"));
|
|
20
|
-
|
|
21
|
-
function setUp() public {
|
|
22
|
-
super.terminalStoreSetup();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function test_WhenRulesetAllowsMigration() external {
|
|
26
|
-
// it will return the current balance and reset balance to zero
|
|
27
|
-
|
|
28
|
-
// Find the storage slot
|
|
29
|
-
bytes32 balanceOfSlot = keccak256(abi.encode(address(this), uint256(0)));
|
|
30
|
-
bytes32 projectSlot = keccak256(abi.encode(_projectId, uint256(balanceOfSlot)));
|
|
31
|
-
bytes32 slot = keccak256(abi.encode(address(_token), uint256(projectSlot)));
|
|
32
|
-
|
|
33
|
-
bytes32 balanceBytes = bytes32(_balance);
|
|
34
|
-
|
|
35
|
-
// Set balance
|
|
36
|
-
vm.store(address(_store), slot, balanceBytes);
|
|
37
|
-
|
|
38
|
-
// Ensure balance is set correctly
|
|
39
|
-
uint256 _balanceCallReturn = _store.balanceOf(address(this), _projectId, address(_token));
|
|
40
|
-
assertEq(_balanceCallReturn, _balance);
|
|
41
|
-
|
|
42
|
-
JBRulesetMetadata memory _metadata = JBRulesetMetadata({
|
|
43
|
-
reservedPercent: 0,
|
|
44
|
-
cashOutTaxRate: JBConstants.MAX_CASH_OUT_TAX_RATE,
|
|
45
|
-
baseCurrency: uint32(uint160(JBConstants.NATIVE_TOKEN)),
|
|
46
|
-
pausePay: false,
|
|
47
|
-
pauseCreditTransfers: false,
|
|
48
|
-
allowOwnerMinting: false,
|
|
49
|
-
allowSetCustomToken: false,
|
|
50
|
-
allowTerminalMigration: true,
|
|
51
|
-
allowSetTerminals: false,
|
|
52
|
-
ownerMustSendPayouts: false,
|
|
53
|
-
allowSetController: false,
|
|
54
|
-
allowAddAccountingContext: true,
|
|
55
|
-
allowAddPriceFeed: false,
|
|
56
|
-
holdFees: false,
|
|
57
|
-
useTotalSurplusForCashOuts: false,
|
|
58
|
-
useDataHookForPay: false,
|
|
59
|
-
useDataHookForCashOut: false,
|
|
60
|
-
dataHook: address(0),
|
|
61
|
-
metadata: 0
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
uint256 _packedMetadata = JBRulesetMetadataResolver.packRulesetMetadata(_metadata);
|
|
65
|
-
|
|
66
|
-
// JBRulesets return calldata
|
|
67
|
-
JBRuleset memory _returnedRuleset = JBRuleset({
|
|
68
|
-
cycleNumber: uint48(block.timestamp),
|
|
69
|
-
id: uint48(block.timestamp),
|
|
70
|
-
basedOnId: 0,
|
|
71
|
-
start: uint48(block.timestamp),
|
|
72
|
-
duration: uint32(block.timestamp + 1000),
|
|
73
|
-
weight: 1e18,
|
|
74
|
-
weightCutPercent: 0,
|
|
75
|
-
approvalHook: IJBRulesetApprovalHook(address(0)),
|
|
76
|
-
metadata: _packedMetadata
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
// mock call to JBRulesets currentOf
|
|
80
|
-
mockExpect(address(rulesets), abi.encodeCall(IJBRulesets.currentOf, (_projectId)), abi.encode(_returnedRuleset));
|
|
81
|
-
|
|
82
|
-
// It will return the balance before migration
|
|
83
|
-
uint256 balanceReturned = _store.recordTerminalMigration(_projectId, address(_token));
|
|
84
|
-
assertEq(balanceReturned, _balance);
|
|
85
|
-
|
|
86
|
-
// Then it will set the balance to zero
|
|
87
|
-
uint256 resetBalance = _store.balanceOf(address(this), _projectId, address(_token));
|
|
88
|
-
assertEq(resetBalance, 0);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function test_WhenRulesetDnAllowMigration() external {
|
|
92
|
-
// it will revert TERMINAL_MIGRATION_NOT_ALLOWED
|
|
93
|
-
|
|
94
|
-
JBRulesetMetadata memory _metadata = JBRulesetMetadata({
|
|
95
|
-
reservedPercent: 0,
|
|
96
|
-
cashOutTaxRate: JBConstants.MAX_CASH_OUT_TAX_RATE,
|
|
97
|
-
baseCurrency: uint32(uint160(JBConstants.NATIVE_TOKEN)),
|
|
98
|
-
pausePay: false,
|
|
99
|
-
pauseCreditTransfers: false,
|
|
100
|
-
allowOwnerMinting: false,
|
|
101
|
-
allowSetCustomToken: false,
|
|
102
|
-
// not allowed
|
|
103
|
-
allowTerminalMigration: false,
|
|
104
|
-
allowSetTerminals: false,
|
|
105
|
-
ownerMustSendPayouts: false,
|
|
106
|
-
allowSetController: false,
|
|
107
|
-
allowAddAccountingContext: true,
|
|
108
|
-
allowAddPriceFeed: false,
|
|
109
|
-
holdFees: false,
|
|
110
|
-
useTotalSurplusForCashOuts: false,
|
|
111
|
-
useDataHookForPay: false,
|
|
112
|
-
useDataHookForCashOut: false,
|
|
113
|
-
dataHook: address(0),
|
|
114
|
-
metadata: 0
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
uint256 _packedMetadata = JBRulesetMetadataResolver.packRulesetMetadata(_metadata);
|
|
118
|
-
|
|
119
|
-
// JBRulesets return calldata
|
|
120
|
-
JBRuleset memory _returnedRuleset = JBRuleset({
|
|
121
|
-
cycleNumber: uint48(block.timestamp),
|
|
122
|
-
id: uint48(block.timestamp),
|
|
123
|
-
basedOnId: 0,
|
|
124
|
-
start: uint48(block.timestamp),
|
|
125
|
-
duration: uint32(block.timestamp + 1000),
|
|
126
|
-
weight: 1e18,
|
|
127
|
-
weightCutPercent: 0,
|
|
128
|
-
approvalHook: IJBRulesetApprovalHook(address(0)),
|
|
129
|
-
metadata: _packedMetadata
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
// mock call to JBRulesets currentOf
|
|
133
|
-
mockExpect(address(rulesets), abi.encodeCall(IJBRulesets.currentOf, (_projectId)), abi.encode(_returnedRuleset));
|
|
134
|
-
|
|
135
|
-
vm.expectRevert(JBTerminalStore.JBTerminalStore_TerminalMigrationNotAllowed.selector);
|
|
136
|
-
_store.recordTerminalMigration(_projectId, address(_token));
|
|
137
|
-
}
|
|
138
|
-
}
|