@bananapus/core-v6 0.0.1
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/LICENSE +21 -0
- package/README.md +112 -0
- package/SKILLS.md +151 -0
- package/docs/book.css +13 -0
- package/docs/book.toml +12 -0
- package/docs/solidity.min.js +74 -0
- package/docs/src/README.md +703 -0
- package/docs/src/SUMMARY.md +94 -0
- package/docs/src/src/JBChainlinkV3PriceFeed.sol/contract.JBChainlinkV3PriceFeed.md +83 -0
- package/docs/src/src/JBChainlinkV3SequencerPriceFeed.sol/contract.JBChainlinkV3SequencerPriceFeed.md +88 -0
- package/docs/src/src/JBController.sol/contract.JBController.md +1121 -0
- package/docs/src/src/JBDeadline.sol/contract.JBDeadline.md +84 -0
- package/docs/src/src/JBDirectory.sol/contract.JBDirectory.md +294 -0
- package/docs/src/src/JBERC20.sol/contract.JBERC20.md +190 -0
- package/docs/src/src/JBFeelessAddresses.sol/contract.JBFeelessAddresses.md +80 -0
- package/docs/src/src/JBFundAccessLimits.sol/contract.JBFundAccessLimits.md +253 -0
- package/docs/src/src/JBMultiTerminal.sol/contract.JBMultiTerminal.md +1472 -0
- package/docs/src/src/JBPermissions.sol/contract.JBPermissions.md +199 -0
- package/docs/src/src/JBPrices.sol/contract.JBPrices.md +154 -0
- package/docs/src/src/JBProjects.sol/contract.JBProjects.md +131 -0
- package/docs/src/src/JBRulesets.sol/contract.JBRulesets.md +677 -0
- package/docs/src/src/JBSplits.sol/contract.JBSplits.md +237 -0
- package/docs/src/src/JBTerminalStore.sol/contract.JBTerminalStore.md +591 -0
- package/docs/src/src/JBTokens.sol/contract.JBTokens.md +353 -0
- package/docs/src/src/README.md +25 -0
- package/docs/src/src/abstract/JBControlled.sol/abstract.JBControlled.md +64 -0
- package/docs/src/src/abstract/JBPermissioned.sol/abstract.JBPermissioned.md +84 -0
- package/docs/src/src/abstract/README.md +5 -0
- package/docs/src/src/enums/JBApprovalStatus.sol/enum.JBApprovalStatus.md +17 -0
- package/docs/src/src/enums/README.md +4 -0
- package/docs/src/src/interfaces/IJBCashOutHook.sol/interface.IJBCashOutHook.md +29 -0
- package/docs/src/src/interfaces/IJBCashOutTerminal.sol/interface.IJBCashOutTerminal.md +57 -0
- package/docs/src/src/interfaces/IJBControlled.sol/interface.IJBControlled.md +12 -0
- package/docs/src/src/interfaces/IJBController.sol/interface.IJBController.md +334 -0
- package/docs/src/src/interfaces/IJBDirectory.sol/interface.IJBDirectory.md +108 -0
- package/docs/src/src/interfaces/IJBDirectoryAccessControl.sol/interface.IJBDirectoryAccessControl.md +19 -0
- package/docs/src/src/interfaces/IJBFeeTerminal.sol/interface.IJBFeeTerminal.md +91 -0
- package/docs/src/src/interfaces/IJBFeelessAddresses.sol/interface.IJBFeelessAddresses.md +26 -0
- package/docs/src/src/interfaces/IJBFundAccessLimits.sol/interface.IJBFundAccessLimits.md +88 -0
- package/docs/src/src/interfaces/IJBMigratable.sol/interface.IJBMigratable.md +29 -0
- package/docs/src/src/interfaces/IJBMultiTerminal.sol/interface.IJBMultiTerminal.md +50 -0
- package/docs/src/src/interfaces/IJBPayHook.sol/interface.IJBPayHook.md +28 -0
- package/docs/src/src/interfaces/IJBPayoutTerminal.sol/interface.IJBPayoutTerminal.md +105 -0
- package/docs/src/src/interfaces/IJBPermissioned.sol/interface.IJBPermissioned.md +12 -0
- package/docs/src/src/interfaces/IJBPermissions.sol/interface.IJBPermissions.md +74 -0
- package/docs/src/src/interfaces/IJBPermitTerminal.sol/interface.IJBPermitTerminal.md +15 -0
- package/docs/src/src/interfaces/IJBPriceFeed.sol/interface.IJBPriceFeed.md +12 -0
- package/docs/src/src/interfaces/IJBPrices.sol/interface.IJBPrices.md +74 -0
- package/docs/src/src/interfaces/IJBProjectUriRegistry.sol/interface.IJBProjectUriRegistry.md +19 -0
- package/docs/src/src/interfaces/IJBProjects.sol/interface.IJBProjects.md +49 -0
- package/docs/src/src/interfaces/IJBRulesetApprovalHook.sol/interface.IJBRulesetApprovalHook.md +35 -0
- package/docs/src/src/interfaces/IJBRulesetDataHook.sol/interface.IJBRulesetDataHook.md +97 -0
- package/docs/src/src/interfaces/IJBRulesets.sol/interface.IJBRulesets.md +165 -0
- package/docs/src/src/interfaces/IJBSplitHook.sol/interface.IJBSplitHook.md +31 -0
- package/docs/src/src/interfaces/IJBSplits.sol/interface.IJBSplits.md +35 -0
- package/docs/src/src/interfaces/IJBTerminal.sol/interface.IJBTerminal.md +141 -0
- package/docs/src/src/interfaces/IJBTerminalStore.sol/interface.IJBTerminalStore.md +198 -0
- package/docs/src/src/interfaces/IJBToken.sol/interface.IJBToken.md +54 -0
- package/docs/src/src/interfaces/IJBTokenUriResolver.sol/interface.IJBTokenUriResolver.md +12 -0
- package/docs/src/src/interfaces/IJBTokens.sol/interface.IJBTokens.md +151 -0
- package/docs/src/src/interfaces/README.md +33 -0
- package/docs/src/src/libraries/JBCashOuts.sol/library.JBCashOuts.md +40 -0
- package/docs/src/src/libraries/JBConstants.sol/library.JBConstants.md +52 -0
- package/docs/src/src/libraries/JBCurrencyIds.sol/library.JBCurrencyIds.md +19 -0
- package/docs/src/src/libraries/JBFees.sol/library.JBFees.md +52 -0
- package/docs/src/src/libraries/JBFixedPointNumber.sol/library.JBFixedPointNumber.md +12 -0
- package/docs/src/src/libraries/JBMetadataResolver.sol/library.JBMetadataResolver.md +242 -0
- package/docs/src/src/libraries/JBRulesetMetadataResolver.sol/library.JBRulesetMetadataResolver.md +180 -0
- package/docs/src/src/libraries/JBSplitGroupIds.sol/library.JBSplitGroupIds.md +14 -0
- package/docs/src/src/libraries/JBSurplus.sol/library.JBSurplus.md +44 -0
- package/docs/src/src/libraries/README.md +12 -0
- package/docs/src/src/periphery/JBDeadline1Day.sol/contract.JBDeadline1Day.md +15 -0
- package/docs/src/src/periphery/JBDeadline3Days.sol/contract.JBDeadline3Days.md +15 -0
- package/docs/src/src/periphery/JBDeadline3Hours.sol/contract.JBDeadline3Hours.md +15 -0
- package/docs/src/src/periphery/JBDeadline7Days.sol/contract.JBDeadline7Days.md +15 -0
- package/docs/src/src/periphery/JBMatchingPriceFeed.sol/contract.JBMatchingPriceFeed.md +22 -0
- package/docs/src/src/periphery/README.md +8 -0
- package/docs/src/src/structs/JBAccountingContext.sol/struct.JBAccountingContext.md +20 -0
- package/docs/src/src/structs/JBAfterCashOutRecordedContext.sol/struct.JBAfterCashOutRecordedContext.md +43 -0
- package/docs/src/src/structs/JBAfterPayRecordedContext.sol/struct.JBAfterPayRecordedContext.md +42 -0
- package/docs/src/src/structs/JBBeforeCashOutRecordedContext.sol/struct.JBBeforeCashOutRecordedContext.md +45 -0
- package/docs/src/src/structs/JBBeforePayRecordedContext.sol/struct.JBBeforePayRecordedContext.md +41 -0
- package/docs/src/src/structs/JBCashOutHookSpecification.sol/struct.JBCashOutHookSpecification.md +22 -0
- package/docs/src/src/structs/JBCurrencyAmount.sol/struct.JBCurrencyAmount.md +17 -0
- package/docs/src/src/structs/JBFee.sol/struct.JBFee.md +20 -0
- package/docs/src/src/structs/JBFundAccessLimitGroup.sol/struct.JBFundAccessLimitGroup.md +39 -0
- package/docs/src/src/structs/JBPayHookSpecification.sol/struct.JBPayHookSpecification.md +22 -0
- package/docs/src/src/structs/JBPermissionsData.sol/struct.JBPermissionsData.md +21 -0
- package/docs/src/src/structs/JBRuleset.sol/struct.JBRuleset.md +55 -0
- package/docs/src/src/structs/JBRulesetConfig.sol/struct.JBRulesetConfig.md +51 -0
- package/docs/src/src/structs/JBRulesetMetadata.sol/struct.JBRulesetMetadata.md +79 -0
- package/docs/src/src/structs/JBRulesetWeightCache.sol/struct.JBRulesetWeightCache.md +16 -0
- package/docs/src/src/structs/JBRulesetWithMetadata.sol/struct.JBRulesetWithMetadata.md +16 -0
- package/docs/src/src/structs/JBSingleAllowance.sol/struct.JBSingleAllowance.md +26 -0
- package/docs/src/src/structs/JBSplit.sol/struct.JBSplit.md +49 -0
- package/docs/src/src/structs/JBSplitGroup.sol/struct.JBSplitGroup.md +17 -0
- package/docs/src/src/structs/JBSplitHookContext.sol/struct.JBSplitHookContext.md +29 -0
- package/docs/src/src/structs/JBTerminalConfig.sol/struct.JBTerminalConfig.md +16 -0
- package/docs/src/src/structs/JBTokenAmount.sol/struct.JBTokenAmount.md +23 -0
- package/docs/src/src/structs/README.md +25 -0
- package/foundry.lock +11 -0
- package/foundry.toml +41 -0
- package/package.json +38 -0
- package/remappings.txt +1 -0
- package/script/Deploy.s.sol +111 -0
- package/script/DeployPeriphery.s.sol +287 -0
- package/script/helpers/CoreDeploymentLib.sol +121 -0
- package/slither-ci.config.json +10 -0
- package/sphinx.lock +507 -0
- package/src/JBChainlinkV3PriceFeed.sol +77 -0
- package/src/JBChainlinkV3SequencerPriceFeed.sol +75 -0
- package/src/JBController.sol +1186 -0
- package/src/JBDeadline.sol +73 -0
- package/src/JBDirectory.sol +343 -0
- package/src/JBERC20.sol +131 -0
- package/src/JBFeelessAddresses.sol +54 -0
- package/src/JBFundAccessLimits.sol +308 -0
- package/src/JBMultiTerminal.sol +2024 -0
- package/src/JBPermissions.sol +252 -0
- package/src/JBPrices.sol +227 -0
- package/src/JBProjects.sol +126 -0
- package/src/JBRulesets.sol +1093 -0
- package/src/JBSplits.sol +324 -0
- package/src/JBTerminalStore.sol +908 -0
- package/src/JBTokens.sol +376 -0
- package/src/abstract/JBControlled.sol +48 -0
- package/src/abstract/JBPermissioned.sol +77 -0
- package/src/enums/JBApprovalStatus.sol +12 -0
- package/src/interfaces/IJBCashOutHook.sol +15 -0
- package/src/interfaces/IJBCashOutTerminal.sol +51 -0
- package/src/interfaces/IJBControlled.sol +10 -0
- package/src/interfaces/IJBController.sol +280 -0
- package/src/interfaces/IJBDirectory.sol +69 -0
- package/src/interfaces/IJBDirectoryAccessControl.sol +15 -0
- package/src/interfaces/IJBFeeTerminal.sol +61 -0
- package/src/interfaces/IJBFeelessAddresses.sol +17 -0
- package/src/interfaces/IJBFundAccessLimits.sol +94 -0
- package/src/interfaces/IJBMigratable.sol +24 -0
- package/src/interfaces/IJBMultiTerminal.sol +36 -0
- package/src/interfaces/IJBPayHook.sol +14 -0
- package/src/interfaces/IJBPayoutTerminal.sol +92 -0
- package/src/interfaces/IJBPermissioned.sol +10 -0
- package/src/interfaces/IJBPermissions.sol +71 -0
- package/src/interfaces/IJBPermitTerminal.sol +14 -0
- package/src/interfaces/IJBPriceFeed.sol +10 -0
- package/src/interfaces/IJBPrices.sol +65 -0
- package/src/interfaces/IJBProjectUriRegistry.sol +15 -0
- package/src/interfaces/IJBProjects.sol +27 -0
- package/src/interfaces/IJBRulesetApprovalHook.sol +21 -0
- package/src/interfaces/IJBRulesetDataHook.sol +56 -0
- package/src/interfaces/IJBRulesets.sol +151 -0
- package/src/interfaces/IJBSplitHook.sol +16 -0
- package/src/interfaces/IJBSplits.sol +28 -0
- package/src/interfaces/IJBTerminal.sol +120 -0
- package/src/interfaces/IJBTerminalStore.sol +225 -0
- package/src/interfaces/IJBToken.sol +39 -0
- package/src/interfaces/IJBTokenUriResolver.sol +10 -0
- package/src/interfaces/IJBTokens.sol +113 -0
- package/src/libraries/JBCashOuts.sol +120 -0
- package/src/libraries/JBConstants.sol +14 -0
- package/src/libraries/JBCurrencyIds.sol +7 -0
- package/src/libraries/JBFees.sol +28 -0
- package/src/libraries/JBFixedPointNumber.sol +12 -0
- package/src/libraries/JBMetadataResolver.sol +306 -0
- package/src/libraries/JBRulesetMetadataResolver.sol +160 -0
- package/src/libraries/JBSplitGroupIds.sol +7 -0
- package/src/libraries/JBSurplus.sol +40 -0
- package/src/periphery/JBDeadline1Day.sol +8 -0
- package/src/periphery/JBDeadline3Days.sol +8 -0
- package/src/periphery/JBDeadline3Hours.sol +8 -0
- package/src/periphery/JBDeadline7Days.sol +8 -0
- package/src/periphery/JBMatchingPriceFeed.sol +13 -0
- package/src/structs/JBAccountingContext.sol +12 -0
- package/src/structs/JBAfterCashOutRecordedContext.sol +30 -0
- package/src/structs/JBAfterPayRecordedContext.sol +29 -0
- package/src/structs/JBBeforeCashOutRecordedContext.sol +31 -0
- package/src/structs/JBBeforePayRecordedContext.sol +28 -0
- package/src/structs/JBCashOutHookSpecification.sol +15 -0
- package/src/structs/JBCurrencyAmount.sol +10 -0
- package/src/structs/JBFee.sol +12 -0
- package/src/structs/JBFundAccessLimitGroup.sol +28 -0
- package/src/structs/JBPayHookSpecification.sol +15 -0
- package/src/structs/JBPermissionsData.sol +13 -0
- package/src/structs/JBRuleset.sol +42 -0
- package/src/structs/JBRulesetConfig.sol +43 -0
- package/src/structs/JBRulesetMetadata.sol +56 -0
- package/src/structs/JBRulesetWeightCache.sol +9 -0
- package/src/structs/JBRulesetWithMetadata.sol +12 -0
- package/src/structs/JBSingleAllowance.sol +16 -0
- package/src/structs/JBSplit.sol +37 -0
- package/src/structs/JBSplitGroup.sol +12 -0
- package/src/structs/JBSplitHookContext.sol +20 -0
- package/src/structs/JBTerminalConfig.sol +12 -0
- package/src/structs/JBTokenAmount.sol +14 -0
- package/test/AuditExploits.t.sol +2710 -0
- package/test/ComprehensiveInvariant.t.sol +298 -0
- package/test/EconomicSimulation.t.sol +340 -0
- package/test/EntryPointPermutations.t.sol +671 -0
- package/test/FlashLoanAttacks.t.sol +792 -0
- package/test/PermissionEscalation.t.sol +679 -0
- package/test/RulesetTransitions.t.sol +699 -0
- package/test/SplitLoopTests.t.sol +731 -0
- package/test/TestAccessToFunds.sol +2644 -0
- package/test/TestCashOut.sol +185 -0
- package/test/TestCashOutCountFor.sol +272 -0
- package/test/TestCashOutHooks.sol +317 -0
- package/test/TestCashOutTimingEdge.sol +229 -0
- package/test/TestDurationUnderflow.sol +220 -0
- package/test/TestFeeProcessingFailure.sol +208 -0
- package/test/TestFees.sol +604 -0
- package/test/TestInterfaceSupport.sol +62 -0
- package/test/TestJBERC20Inheritance.sol +91 -0
- package/test/TestLaunchProject.sol +176 -0
- package/test/TestMetaTx.sol +203 -0
- package/test/TestMetadataParserLib.sol +438 -0
- package/test/TestMigrationHeldFees.sol +249 -0
- package/test/TestMintTokensOf.sol +172 -0
- package/test/TestMultiTokenSurplus.sol +206 -0
- package/test/TestMultipleAccessLimits.sol +642 -0
- package/test/TestPayBurnRedeemFlow.sol +180 -0
- package/test/TestPayHooks.sol +190 -0
- package/test/TestPermissions.sol +305 -0
- package/test/TestPermissionsEdge.sol +286 -0
- package/test/TestPermit2Terminal.sol +339 -0
- package/test/TestRulesetQueueing.sol +1001 -0
- package/test/TestRulesetQueuingStress.sol +778 -0
- package/test/TestRulesetWeightCaching.sol +177 -0
- package/test/TestSplits.sol +369 -0
- package/test/TestTerminalMigration.sol +167 -0
- package/test/TestTokenFlow.sol +174 -0
- package/test/WeirdTokenTests.t.sol +764 -0
- package/test/formal/BondingCurveProperties.t.sol +411 -0
- package/test/formal/FeeProperties.t.sol +246 -0
- package/test/helpers/JBTest.sol +129 -0
- package/test/helpers/MetadataResolverHelper.sol +116 -0
- package/test/helpers/TestBaseWorkflow.sol +317 -0
- package/test/invariants/Phase3DeepInvariant.t.sol +404 -0
- package/test/invariants/RulesetsInvariant.t.sol +115 -0
- package/test/invariants/TerminalStoreInvariant.t.sol +220 -0
- package/test/invariants/TokensInvariant.t.sol +184 -0
- package/test/invariants/handlers/ComprehensiveHandler.sol +285 -0
- package/test/invariants/handlers/EconomicHandler.sol +347 -0
- package/test/invariants/handlers/Phase3Handler.sol +414 -0
- package/test/invariants/handlers/RulesetsHandler.sol +111 -0
- package/test/invariants/handlers/TerminalStoreHandler.sol +146 -0
- package/test/invariants/handlers/TokensHandler.sol +127 -0
- package/test/mock/ERC2771ForwarderMock.sol +37 -0
- package/test/mock/MockERC20.sol +18 -0
- package/test/mock/MockMaliciousBeneficiary.sol +67 -0
- package/test/mock/MockMaliciousSplitHook.sol +42 -0
- package/test/mock/MockPriceFeed.sol +20 -0
- package/test/trees/JBController/burnTokensOf.tree +9 -0
- package/test/trees/JBController/claimTokensFor.tree +5 -0
- package/test/trees/JBController/deployERC20For.tree +5 -0
- package/test/trees/JBController/getRulesetOf.tree +5 -0
- package/test/trees/JBController/launchProjectFor.tree +12 -0
- package/test/trees/JBController/launchRulesetsFor.tree +8 -0
- package/test/trees/JBController/migrateController.tree +12 -0
- package/test/trees/JBController/mintTokensOf.tree +12 -0
- package/test/trees/JBController/payReservedTokenToTerminal.tree +8 -0
- package/test/trees/JBController/receiveMigrationFrom.tree +4 -0
- package/test/trees/JBController/sendReservedTokensToSplitsOf.tree +12 -0
- package/test/trees/JBController/setMetadataOf.tree +5 -0
- package/test/trees/JBController/setSplitGroupsOf.tree +5 -0
- package/test/trees/JBController/setTokenFor.tree +5 -0
- package/test/trees/JBController/transferCreditsFrom.tree +8 -0
- package/test/trees/JBDirectory/primaryTerminalOf.tree +8 -0
- package/test/trees/JBDirectory/setControllerOf.tree +11 -0
- package/test/trees/JBDirectory/setPrimaryTerminalOf.tree +15 -0
- package/test/trees/JBDirectory/setTerminalsOf.tree +11 -0
- package/test/trees/JBERC20/initialize.tree +7 -0
- package/test/trees/JBERC20/name.tree +5 -0
- package/test/trees/JBERC20/nonces.tree +5 -0
- package/test/trees/JBERC20/symbol.tree +5 -0
- package/test/trees/JBFeelessAddresses/setFeelessAddress.tree +5 -0
- package/test/trees/JBFeelessAddresses/supportsInterface.tree +5 -0
- package/test/trees/JBFundAccessLimits/payoutLimitOf.tree +5 -0
- package/test/trees/JBFundAccessLimits/payoutLimitsOf.tree +8 -0
- package/test/trees/JBFundAccessLimits/setFundAccessLimitsFor.tree +18 -0
- package/test/trees/JBFundAccessLimits/surplusAllowanceOf.tree +5 -0
- package/test/trees/JBFundAccessLimits/surplusAllowancesOf.tree +8 -0
- package/test/trees/JBMetadataResolver/getDataFor.tree +8 -0
- package/test/trees/JBMultiTerminal/accountingContextsOf.tree +5 -0
- package/test/trees/JBMultiTerminal/addAccountingContextsFor.tree +10 -0
- package/test/trees/JBMultiTerminal/addToBalanceOf.tree +23 -0
- package/test/trees/JBMultiTerminal/cashOutTokensOf.tree +23 -0
- package/test/trees/JBMultiTerminal/executePayout.tree +32 -0
- package/test/trees/JBMultiTerminal/executeProcessFee.tree +14 -0
- package/test/trees/JBMultiTerminal/migrateBalanceOf.tree +12 -0
- package/test/trees/JBMultiTerminal/pay.tree +23 -0
- package/test/trees/JBMultiTerminal/processHeldFeesOf.tree +8 -0
- package/test/trees/JBMultiTerminal/sendPayoutsOf.tree +34 -0
- package/test/trees/JBMultiTerminal/useAllowanceOf.tree +16 -0
- package/test/trees/JBPermissions/hasPermission.tree +8 -0
- package/test/trees/JBPermissions/hasPermissions.tree +8 -0
- package/test/trees/JBPermissions/setPermissionsFor.tree +5 -0
- package/test/trees/JBPrices/addPriceFeedFor.tree +14 -0
- package/test/trees/JBPrices/pricePerUnitOf.tree +11 -0
- package/test/trees/JBProjects/createFor.tree +11 -0
- package/test/trees/JBProjects/setTokenUriResolver.tree +5 -0
- package/test/trees/JBProjects/supportsInterface.tree +9 -0
- package/test/trees/JBProjects/tokenURI.tree +5 -0
- package/test/trees/JBRulesets/currentApprovalStatusForLatestRulesetOf.tree +8 -0
- package/test/trees/JBRulesets/currentOf.tree +12 -0
- package/test/trees/JBRulesets/getRulesetOf.tree +5 -0
- package/test/trees/JBRulesets/latestQueuedRulesetOf.tree +10 -0
- package/test/trees/JBRulesets/rulesetsOf.tree +11 -0
- package/test/trees/JBRulesets/upcomingRulesetOf.tree +20 -0
- package/test/trees/JBRulesets/updateRulesetWeightCache.tree +5 -0
- package/test/trees/JBSplits/setSplitGroupsOf.tree +17 -0
- package/test/trees/JBSplits/splitsOf.tree +5 -0
- package/test/trees/JBTerminalStore/currentReclaimableSurplusOf.tree +16 -0
- package/test/trees/JBTerminalStore/currentSurplusOf.tree +25 -0
- package/test/trees/JBTerminalStore/currentTotalSurplusOf.tree +5 -0
- package/test/trees/JBTerminalStore/recordCashOutsFor.tree +16 -0
- package/test/trees/JBTerminalStore/recordPaymentFrom.tree +14 -0
- package/test/trees/JBTerminalStore/recordPayoutFor.tree +10 -0
- package/test/trees/JBTerminalStore/recordTerminalMigration.tree +5 -0
- package/test/trees/JBTerminalStore/recordUsedAllowanceOf.tree +10 -0
- package/test/trees/JBTokens/burnFrom.tree +10 -0
- package/test/trees/JBTokens/claimTokensFor.tree +10 -0
- package/test/trees/JBTokens/deployERC20For.tree +12 -0
- package/test/trees/JBTokens/mintFor.tree +10 -0
- package/test/trees/JBTokens/setTokenFor.tree +11 -0
- package/test/trees/JBTokens/totalBalanceOf.tree +5 -0
- package/test/trees/JBTokens/totalSupplyOf.tree +5 -0
- package/test/trees/JBTokens/transferCreditsFrom.tree +8 -0
- package/test/trees/mintTokensOf.tree +12 -0
- package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +220 -0
- package/test/units/static/JBController/JBControllerSetup.sol +40 -0
- package/test/units/static/JBController/TestBurnTokensOf.sol +107 -0
- package/test/units/static/JBController/TestClaimTokensFor.sol +60 -0
- package/test/units/static/JBController/TestDeployErc20For.sol +80 -0
- package/test/units/static/JBController/TestLaunchProjectFor.sol +282 -0
- package/test/units/static/JBController/TestLaunchRulesetsFor.sol +322 -0
- package/test/units/static/JBController/TestMigrateController.sol +148 -0
- package/test/units/static/JBController/TestMintTokensOfUnits.sol +102 -0
- package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +71 -0
- package/test/units/static/JBController/TestReceiveMigrationFrom.sol +95 -0
- package/test/units/static/JBController/TestRulesetViews.sol +219 -0
- package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +595 -0
- package/test/units/static/JBController/TestSetSplitGroupsOf.sol +63 -0
- package/test/units/static/JBController/TestSetTokenFor.sol +227 -0
- package/test/units/static/JBController/TestSetUriOf.sol +53 -0
- package/test/units/static/JBController/TestTransferCreditsFrom.sol +159 -0
- package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +194 -0
- package/test/units/static/JBDirectory/JBDirectorySetup.sol +22 -0
- package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +122 -0
- package/test/units/static/JBDirectory/TestSetControllerOf.sol +173 -0
- package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +98 -0
- package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +169 -0
- package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +128 -0
- package/test/units/static/JBERC20/JBERC20Setup.sol +20 -0
- package/test/units/static/JBERC20/SigUtils.sol +34 -0
- package/test/units/static/JBERC20/TestInitialize.sol +54 -0
- package/test/units/static/JBERC20/TestName.sol +30 -0
- package/test/units/static/JBERC20/TestNonces.sol +59 -0
- package/test/units/static/JBERC20/TestSymbol.sol +31 -0
- package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +20 -0
- package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +29 -0
- package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +35 -0
- package/test/units/static/JBFees/TestFeesFuzz.sol +78 -0
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +16 -0
- package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +71 -0
- package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +21 -0
- package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +159 -0
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +56 -0
- package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +94 -0
- package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +182 -0
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +61 -0
- package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +96 -0
- package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +89 -0
- package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +227 -0
- package/test/units/static/JBMetadataResolver/TestMetadataResolverM20M21.sol +245 -0
- package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +39 -0
- package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +65 -0
- package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +313 -0
- package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +432 -0
- package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +478 -0
- package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +577 -0
- package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +176 -0
- package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +190 -0
- package/test/units/static/JBMultiTerminal/TestPay.sol +514 -0
- package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +29 -0
- package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +243 -0
- package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +310 -0
- package/test/units/static/JBPermissions/JBPermissionsSetup.sol +18 -0
- package/test/units/static/JBPermissions/TestHasPermission.sol +50 -0
- package/test/units/static/JBPermissions/TestHasPermissions.sol +93 -0
- package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +62 -0
- package/test/units/static/JBPrices/JBPricesSetup.sol +26 -0
- package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +102 -0
- package/test/units/static/JBPrices/TestPricePerUnitOf.sol +129 -0
- package/test/units/static/JBPrices/TestPrices.sol +262 -0
- package/test/units/static/JBProjects/JBProjectsSetup.sol +20 -0
- package/test/units/static/JBProjects/TestCreateFor.sol +69 -0
- package/test/units/static/JBProjects/TestInitialProject.sol +19 -0
- package/test/units/static/JBProjects/TestInterfaces.sol +27 -0
- package/test/units/static/JBProjects/TestSetResolver.sol +36 -0
- package/test/units/static/JBProjects/TestTokenUri.sol +38 -0
- package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +99 -0
- package/test/units/static/JBRulesets/JBRulesetsSetup.sol +21 -0
- package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +257 -0
- package/test/units/static/JBRulesets/TestCurrentOf.sol +231 -0
- package/test/units/static/JBRulesets/TestGetRulesetOf.sol +94 -0
- package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +252 -0
- package/test/units/static/JBRulesets/TestRulesets.sol +617 -0
- package/test/units/static/JBRulesets/TestRulesetsOf.sol +37 -0
- package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +526 -0
- package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +91 -0
- package/test/units/static/JBSplits/JBSplitsSetup.sol +23 -0
- package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +502 -0
- package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +370 -0
- package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +262 -0
- package/test/units/static/JBSplits/TestSplitsOf.sol +24 -0
- package/test/units/static/JBSplits/TestSplitsPacking.sol +33 -0
- package/test/units/static/JBSurplus/TestSurplusFuzz.sol +125 -0
- package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +23 -0
- package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +434 -0
- package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +428 -0
- package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +65 -0
- package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +479 -0
- package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +508 -0
- package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +257 -0
- package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +131 -0
- package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +390 -0
- package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +187 -0
- package/test/units/static/JBTokens/JBTokensSetup.sol +23 -0
- package/test/units/static/JBTokens/TestBurnFrom.sol +104 -0
- package/test/units/static/JBTokens/TestClaimTokensFor.sol +107 -0
- package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +89 -0
- package/test/units/static/JBTokens/TestMintFor.sol +97 -0
- package/test/units/static/JBTokens/TestSetTokenFor.sol +95 -0
- package/test/units/static/JBTokens/TestTotalBalanceOf.sol +65 -0
- package/test/units/static/JBTokens/TestTotalSupplyOf.sol +56 -0
- package/test/units/static/JBTokens/TestTransferCreditsFrom.sol +54 -0
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
# JBRulesets
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBRulesets.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[JBControlled](/src/abstract/JBControlled.sol/abstract.JBControlled.md), [IJBRulesets](/src/interfaces/IJBRulesets.sol/interface.IJBRulesets.md)
|
|
6
|
+
|
|
7
|
+
Manages rulesets and queuing.
|
|
8
|
+
|
|
9
|
+
*Rulesets dictate how a project behaves for a period of time. To learn more about their functionality, see the
|
|
10
|
+
`JBRuleset` data structure.*
|
|
11
|
+
|
|
12
|
+
*Throughout this contract, `rulesetId` is an identifier for each ruleset. The `rulesetId` is the unix timestamp
|
|
13
|
+
when the ruleset was initialized.*
|
|
14
|
+
|
|
15
|
+
*`approvable` means a ruleset which may or may not be approved.*
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## State Variables
|
|
19
|
+
### _WEIGHT_CUT_MULTIPLE_CACHE_LOOKUP_THRESHOLD
|
|
20
|
+
The number of weight cut percent multiples before a cached value is sought.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
```solidity
|
|
24
|
+
uint256 internal constant _WEIGHT_CUT_MULTIPLE_CACHE_LOOKUP_THRESHOLD = 1000;
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### _MAX_WEIGHT_CUT_MULTIPLE_CACHE_THRESHOLD
|
|
29
|
+
The maximum number of weight cut percent multiples that can be cached at a time.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
```solidity
|
|
33
|
+
uint256 internal constant _MAX_WEIGHT_CUT_MULTIPLE_CACHE_THRESHOLD = 50_000;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### latestRulesetIdOf
|
|
38
|
+
The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been
|
|
39
|
+
approved or not.
|
|
40
|
+
|
|
41
|
+
*If a project has multiple rulesets queued, the `latestRulesetIdOf` will be the last one. This is the
|
|
42
|
+
"changeable" cycle.*
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
```solidity
|
|
46
|
+
mapping(uint256 projectId => uint256) public override latestRulesetIdOf;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### _metadataOf
|
|
51
|
+
The metadata for each ruleset, packed into one storage slot.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
```solidity
|
|
55
|
+
mapping(uint256 projectId => mapping(uint256 rulesetId => uint256)) internal _metadataOf;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
### _packedIntrinsicPropertiesOf
|
|
60
|
+
The mechanism-added properties to manage and schedule each ruleset, packed into one storage slot.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
```solidity
|
|
64
|
+
mapping(uint256 projectId => mapping(uint256 rulesetId => uint256)) internal _packedIntrinsicPropertiesOf;
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### _packedUserPropertiesOf
|
|
69
|
+
The user-defined properties of each ruleset, packed into one storage slot.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
```solidity
|
|
73
|
+
mapping(uint256 projectId => mapping(uint256 rulesetId => uint256)) internal _packedUserPropertiesOf;
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### _weightCacheOf
|
|
78
|
+
Cached weight values to derive rulesets from.
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
```solidity
|
|
82
|
+
mapping(uint256 projectId => mapping(uint256 rulesetId => JBRulesetWeightCache)) internal _weightCacheOf;
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## Functions
|
|
87
|
+
### constructor
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
```solidity
|
|
91
|
+
constructor(IJBDirectory directory) JBControlled(directory);
|
|
92
|
+
```
|
|
93
|
+
**Parameters**
|
|
94
|
+
|
|
95
|
+
|Name|Type|Description|
|
|
96
|
+
|----|----|-----------|
|
|
97
|
+
|`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
### allOf
|
|
101
|
+
|
|
102
|
+
Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
```solidity
|
|
106
|
+
function allOf(
|
|
107
|
+
uint256 projectId,
|
|
108
|
+
uint256 startingId,
|
|
109
|
+
uint256 size
|
|
110
|
+
)
|
|
111
|
+
external
|
|
112
|
+
view
|
|
113
|
+
override
|
|
114
|
+
returns (JBRuleset[] memory rulesets);
|
|
115
|
+
```
|
|
116
|
+
**Parameters**
|
|
117
|
+
|
|
118
|
+
|Name|Type|Description|
|
|
119
|
+
|----|----|-----------|
|
|
120
|
+
|`projectId`|`uint256`|The ID of the project to get the rulesets of.|
|
|
121
|
+
|`startingId`|`uint256`|The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.|
|
|
122
|
+
|`size`|`uint256`|The maximum number of rulesets to return.|
|
|
123
|
+
|
|
124
|
+
**Returns**
|
|
125
|
+
|
|
126
|
+
|Name|Type|Description|
|
|
127
|
+
|----|----|-----------|
|
|
128
|
+
|`rulesets`|`JBRuleset[]`|The rulesets as an array of `JBRuleset` structs.|
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
### currentApprovalStatusForLatestRulesetOf
|
|
132
|
+
|
|
133
|
+
The current approval status of a given project's latest ruleset.
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
```solidity
|
|
137
|
+
function currentApprovalStatusForLatestRulesetOf(uint256 projectId) external view override returns (JBApprovalStatus);
|
|
138
|
+
```
|
|
139
|
+
**Parameters**
|
|
140
|
+
|
|
141
|
+
|Name|Type|Description|
|
|
142
|
+
|----|----|-----------|
|
|
143
|
+
|`projectId`|`uint256`|The ID of the project to check the approval status of.|
|
|
144
|
+
|
|
145
|
+
**Returns**
|
|
146
|
+
|
|
147
|
+
|Name|Type|Description|
|
|
148
|
+
|----|----|-----------|
|
|
149
|
+
|`<none>`|`JBApprovalStatus`|The project's current approval status.|
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
### currentOf
|
|
153
|
+
|
|
154
|
+
The ruleset that is currently active for the specified project.
|
|
155
|
+
|
|
156
|
+
*If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.*
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
```solidity
|
|
160
|
+
function currentOf(uint256 projectId) external view override returns (JBRuleset memory ruleset);
|
|
161
|
+
```
|
|
162
|
+
**Parameters**
|
|
163
|
+
|
|
164
|
+
|Name|Type|Description|
|
|
165
|
+
|----|----|-----------|
|
|
166
|
+
|`projectId`|`uint256`|The ID of the project to get the current ruleset of.|
|
|
167
|
+
|
|
168
|
+
**Returns**
|
|
169
|
+
|
|
170
|
+
|Name|Type|Description|
|
|
171
|
+
|----|----|-----------|
|
|
172
|
+
|`ruleset`|`JBRuleset`|The project's current ruleset.|
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
### getRulesetOf
|
|
176
|
+
|
|
177
|
+
Get the ruleset struct for a given `rulesetId` and `projectId`.
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
```solidity
|
|
181
|
+
function getRulesetOf(uint256 projectId, uint256 rulesetId) external view override returns (JBRuleset memory ruleset);
|
|
182
|
+
```
|
|
183
|
+
**Parameters**
|
|
184
|
+
|
|
185
|
+
|Name|Type|Description|
|
|
186
|
+
|----|----|-----------|
|
|
187
|
+
|`projectId`|`uint256`|The ID of the project to which the ruleset belongs.|
|
|
188
|
+
|`rulesetId`|`uint256`|The ID of the ruleset to get the struct of.|
|
|
189
|
+
|
|
190
|
+
**Returns**
|
|
191
|
+
|
|
192
|
+
|Name|Type|Description|
|
|
193
|
+
|----|----|-----------|
|
|
194
|
+
|`ruleset`|`JBRuleset`|The ruleset struct.|
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
### latestQueuedOf
|
|
198
|
+
|
|
199
|
+
The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.
|
|
200
|
+
|
|
201
|
+
*Returns struct and status for the ruleset initialized furthest in the future (at the end of the ruleset
|
|
202
|
+
queue).*
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
```solidity
|
|
206
|
+
function latestQueuedOf(uint256 projectId)
|
|
207
|
+
external
|
|
208
|
+
view
|
|
209
|
+
override
|
|
210
|
+
returns (JBRuleset memory ruleset, JBApprovalStatus approvalStatus);
|
|
211
|
+
```
|
|
212
|
+
**Parameters**
|
|
213
|
+
|
|
214
|
+
|Name|Type|Description|
|
|
215
|
+
|----|----|-----------|
|
|
216
|
+
|`projectId`|`uint256`|The ID of the project to get the latest queued ruleset of.|
|
|
217
|
+
|
|
218
|
+
**Returns**
|
|
219
|
+
|
|
220
|
+
|Name|Type|Description|
|
|
221
|
+
|----|----|-----------|
|
|
222
|
+
|`ruleset`|`JBRuleset`|The project's latest queued ruleset's struct.|
|
|
223
|
+
|`approvalStatus`|`JBApprovalStatus`|The approval hook's status for the ruleset.|
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
### upcomingOf
|
|
227
|
+
|
|
228
|
+
The ruleset that's up next for a project.
|
|
229
|
+
|
|
230
|
+
*If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.*
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
```solidity
|
|
234
|
+
function upcomingOf(uint256 projectId) external view override returns (JBRuleset memory ruleset);
|
|
235
|
+
```
|
|
236
|
+
**Parameters**
|
|
237
|
+
|
|
238
|
+
|Name|Type|Description|
|
|
239
|
+
|----|----|-----------|
|
|
240
|
+
|`projectId`|`uint256`|The ID of the project to get the upcoming ruleset of.|
|
|
241
|
+
|
|
242
|
+
**Returns**
|
|
243
|
+
|
|
244
|
+
|Name|Type|Description|
|
|
245
|
+
|----|----|-----------|
|
|
246
|
+
|`ruleset`|`JBRuleset`|The struct for the project's upcoming ruleset.|
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
### deriveCycleNumberFrom
|
|
250
|
+
|
|
251
|
+
The cycle number of the next ruleset given the specified ruleset.
|
|
252
|
+
|
|
253
|
+
*Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.*
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
```solidity
|
|
257
|
+
function deriveCycleNumberFrom(
|
|
258
|
+
uint256 baseRulesetCycleNumber,
|
|
259
|
+
uint256 baseRulesetStart,
|
|
260
|
+
uint256 baseRulesetDuration,
|
|
261
|
+
uint256 start
|
|
262
|
+
)
|
|
263
|
+
public
|
|
264
|
+
pure
|
|
265
|
+
returns (uint256);
|
|
266
|
+
```
|
|
267
|
+
**Parameters**
|
|
268
|
+
|
|
269
|
+
|Name|Type|Description|
|
|
270
|
+
|----|----|-----------|
|
|
271
|
+
|`baseRulesetCycleNumber`|`uint256`|The cycle number of the base ruleset.|
|
|
272
|
+
|`baseRulesetStart`|`uint256`|The start time of the base ruleset.|
|
|
273
|
+
|`baseRulesetDuration`|`uint256`|The duration of the base ruleset.|
|
|
274
|
+
|`start`|`uint256`|The start time of the ruleset to derive a cycle number for.|
|
|
275
|
+
|
|
276
|
+
**Returns**
|
|
277
|
+
|
|
278
|
+
|Name|Type|Description|
|
|
279
|
+
|----|----|-----------|
|
|
280
|
+
|`<none>`|`uint256`|The ruleset's cycle number.|
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
### deriveStartFrom
|
|
284
|
+
|
|
285
|
+
The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle.
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
```solidity
|
|
289
|
+
function deriveStartFrom(
|
|
290
|
+
uint256 baseRulesetStart,
|
|
291
|
+
uint256 baseRulesetDuration,
|
|
292
|
+
uint256 mustStartAtOrAfter
|
|
293
|
+
)
|
|
294
|
+
public
|
|
295
|
+
pure
|
|
296
|
+
returns (uint256 start);
|
|
297
|
+
```
|
|
298
|
+
**Parameters**
|
|
299
|
+
|
|
300
|
+
|Name|Type|Description|
|
|
301
|
+
|----|----|-----------|
|
|
302
|
+
|`baseRulesetStart`|`uint256`|The start time of the base ruleset.|
|
|
303
|
+
|`baseRulesetDuration`|`uint256`|The duration of the base ruleset.|
|
|
304
|
+
|`mustStartAtOrAfter`|`uint256`|The earliest time the next ruleset can start. The ruleset cannot start before this timestamp.|
|
|
305
|
+
|
|
306
|
+
**Returns**
|
|
307
|
+
|
|
308
|
+
|Name|Type|Description|
|
|
309
|
+
|----|----|-----------|
|
|
310
|
+
|`start`|`uint256`|The next start time.|
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
### deriveWeightFrom
|
|
314
|
+
|
|
315
|
+
The accumulated weight change since the specified ruleset.
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
```solidity
|
|
319
|
+
function deriveWeightFrom(
|
|
320
|
+
uint256 projectId,
|
|
321
|
+
uint256 baseRulesetStart,
|
|
322
|
+
uint256 baseRulesetDuration,
|
|
323
|
+
uint256 baseRulesetWeight,
|
|
324
|
+
uint256 baseRulesetWeightCutPercent,
|
|
325
|
+
uint256 baseRulesetCacheId,
|
|
326
|
+
uint256 start
|
|
327
|
+
)
|
|
328
|
+
public
|
|
329
|
+
view
|
|
330
|
+
returns (uint256 weight);
|
|
331
|
+
```
|
|
332
|
+
**Parameters**
|
|
333
|
+
|
|
334
|
+
|Name|Type|Description|
|
|
335
|
+
|----|----|-----------|
|
|
336
|
+
|`projectId`|`uint256`|The ID of the project to which the ruleset weights apply.|
|
|
337
|
+
|`baseRulesetStart`|`uint256`|The start time of the base ruleset.|
|
|
338
|
+
|`baseRulesetDuration`|`uint256`|The duration of the base ruleset.|
|
|
339
|
+
|`baseRulesetWeight`|`uint256`|The weight of the base ruleset.|
|
|
340
|
+
|`baseRulesetWeightCutPercent`|`uint256`|The weight cut percent of the base ruleset.|
|
|
341
|
+
|`baseRulesetCacheId`|`uint256`|The ID of the ruleset to base the calculation on (the previous ruleset).|
|
|
342
|
+
|`start`|`uint256`|The start time of the ruleset to derive a weight for.|
|
|
343
|
+
|
|
344
|
+
**Returns**
|
|
345
|
+
|
|
346
|
+
|Name|Type|Description|
|
|
347
|
+
|----|----|-----------|
|
|
348
|
+
|`weight`|`uint256`|The derived weight, as a fixed point number with 18 decimals.|
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
### _approvalStatusOf
|
|
352
|
+
|
|
353
|
+
The approval status of a given project and ruleset struct according to the relevant approval hook.
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
```solidity
|
|
357
|
+
function _approvalStatusOf(uint256 projectId, JBRuleset memory ruleset) internal view returns (JBApprovalStatus);
|
|
358
|
+
```
|
|
359
|
+
**Parameters**
|
|
360
|
+
|
|
361
|
+
|Name|Type|Description|
|
|
362
|
+
|----|----|-----------|
|
|
363
|
+
|`projectId`|`uint256`|The ID of the project that the ruleset belongs to.|
|
|
364
|
+
|`ruleset`|`JBRuleset`|The ruleset to get an approval flag for.|
|
|
365
|
+
|
|
366
|
+
**Returns**
|
|
367
|
+
|
|
368
|
+
|Name|Type|Description|
|
|
369
|
+
|----|----|-----------|
|
|
370
|
+
|`<none>`|`JBApprovalStatus`|The approval status of the project's ruleset.|
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
### _approvalStatusOf
|
|
374
|
+
|
|
375
|
+
The approval status of a given ruleset (ID) for a given project (ID).
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
```solidity
|
|
379
|
+
function _approvalStatusOf(
|
|
380
|
+
uint256 projectId,
|
|
381
|
+
uint256 rulesetId,
|
|
382
|
+
uint256 start,
|
|
383
|
+
uint256 approvalHookRulesetId
|
|
384
|
+
)
|
|
385
|
+
internal
|
|
386
|
+
view
|
|
387
|
+
returns (JBApprovalStatus);
|
|
388
|
+
```
|
|
389
|
+
**Parameters**
|
|
390
|
+
|
|
391
|
+
|Name|Type|Description|
|
|
392
|
+
|----|----|-----------|
|
|
393
|
+
|`projectId`|`uint256`|The ID of the project the ruleset belongs to.|
|
|
394
|
+
|`rulesetId`|`uint256`|The ID of the ruleset to get the approval status of.|
|
|
395
|
+
|`start`|`uint256`|The start time of the ruleset to get the approval status of.|
|
|
396
|
+
|`approvalHookRulesetId`|`uint256`|The ID of the ruleset with the approval hook that should be checked against.|
|
|
397
|
+
|
|
398
|
+
**Returns**
|
|
399
|
+
|
|
400
|
+
|Name|Type|Description|
|
|
401
|
+
|----|----|-----------|
|
|
402
|
+
|`<none>`|`JBApprovalStatus`|The approval status of the project.|
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
### _currentlyApprovableRulesetIdOf
|
|
406
|
+
|
|
407
|
+
The ID of the ruleset which has started and hasn't expired yet, whether or not it has been approved, for
|
|
408
|
+
a given project. If approved, this is the active ruleset.
|
|
409
|
+
|
|
410
|
+
*A value of 0 is returned if no ruleset was found.*
|
|
411
|
+
|
|
412
|
+
*Assumes the project has a latest ruleset.*
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
```solidity
|
|
416
|
+
function _currentlyApprovableRulesetIdOf(uint256 projectId) internal view returns (uint256);
|
|
417
|
+
```
|
|
418
|
+
**Parameters**
|
|
419
|
+
|
|
420
|
+
|Name|Type|Description|
|
|
421
|
+
|----|----|-----------|
|
|
422
|
+
|`projectId`|`uint256`|The ID of the project to check for a currently approvable ruleset.|
|
|
423
|
+
|
|
424
|
+
**Returns**
|
|
425
|
+
|
|
426
|
+
|Name|Type|Description|
|
|
427
|
+
|----|----|-----------|
|
|
428
|
+
|`<none>`|`uint256`|The ID of a currently approvable ruleset if one exists, or 0 if one doesn't exist.|
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
### _getStructFor
|
|
432
|
+
|
|
433
|
+
Unpack a ruleset's packed stored values into an easy-to-work-with ruleset struct.
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
```solidity
|
|
437
|
+
function _getStructFor(uint256 projectId, uint256 rulesetId) internal view returns (JBRuleset memory ruleset);
|
|
438
|
+
```
|
|
439
|
+
**Parameters**
|
|
440
|
+
|
|
441
|
+
|Name|Type|Description|
|
|
442
|
+
|----|----|-----------|
|
|
443
|
+
|`projectId`|`uint256`|The ID of the project the ruleset belongs to.|
|
|
444
|
+
|`rulesetId`|`uint256`|The ID of the ruleset to get the full struct for.|
|
|
445
|
+
|
|
446
|
+
**Returns**
|
|
447
|
+
|
|
448
|
+
|Name|Type|Description|
|
|
449
|
+
|----|----|-----------|
|
|
450
|
+
|`ruleset`|`JBRuleset`|A ruleset struct.|
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
### _simulateCycledRulesetBasedOn
|
|
454
|
+
|
|
455
|
+
A simulated view of the ruleset that would be created if the provided one cycled over (if the project
|
|
456
|
+
doesn't queue a new ruleset).
|
|
457
|
+
|
|
458
|
+
*Returns an empty ruleset if a ruleset can't be simulated based on the provided one.*
|
|
459
|
+
|
|
460
|
+
*Assumes a simulated ruleset will never be based on a ruleset with a duration of 0.*
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
```solidity
|
|
464
|
+
function _simulateCycledRulesetBasedOn(
|
|
465
|
+
uint256 projectId,
|
|
466
|
+
JBRuleset memory baseRuleset,
|
|
467
|
+
bool allowMidRuleset
|
|
468
|
+
)
|
|
469
|
+
internal
|
|
470
|
+
view
|
|
471
|
+
returns (JBRuleset memory);
|
|
472
|
+
```
|
|
473
|
+
**Parameters**
|
|
474
|
+
|
|
475
|
+
|Name|Type|Description|
|
|
476
|
+
|----|----|-----------|
|
|
477
|
+
|`projectId`|`uint256`|The ID of the project of the ruleset.|
|
|
478
|
+
|`baseRuleset`|`JBRuleset`|The ruleset that the simulated ruleset should be based on.|
|
|
479
|
+
|`allowMidRuleset`|`bool`|A flag indicating if the simulated ruleset is allowed to already be mid ruleset.|
|
|
480
|
+
|
|
481
|
+
**Returns**
|
|
482
|
+
|
|
483
|
+
|Name|Type|Description|
|
|
484
|
+
|----|----|-----------|
|
|
485
|
+
|`<none>`|`JBRuleset`|A simulated ruleset struct: the next ruleset by default. This will be overwritten if a new ruleset is queued for the project.|
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
### _upcomingApprovableRulesetIdOf
|
|
489
|
+
|
|
490
|
+
The ruleset up next for a project, if one exists, whether or not that ruleset has been approved.
|
|
491
|
+
|
|
492
|
+
*A value of 0 is returned if no ruleset was found.*
|
|
493
|
+
|
|
494
|
+
*Assumes the project has a `latestRulesetIdOf` value.*
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
```solidity
|
|
498
|
+
function _upcomingApprovableRulesetIdOf(uint256 projectId) internal view returns (uint256 rulesetId);
|
|
499
|
+
```
|
|
500
|
+
**Parameters**
|
|
501
|
+
|
|
502
|
+
|Name|Type|Description|
|
|
503
|
+
|----|----|-----------|
|
|
504
|
+
|`projectId`|`uint256`|The ID of the project to check for an upcoming approvable ruleset.|
|
|
505
|
+
|
|
506
|
+
**Returns**
|
|
507
|
+
|
|
508
|
+
|Name|Type|Description|
|
|
509
|
+
|----|----|-----------|
|
|
510
|
+
|`rulesetId`|`uint256`|The `rulesetId` of the upcoming approvable ruleset if one exists, or 0 if one doesn't exist.|
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
### queueFor
|
|
514
|
+
|
|
515
|
+
Queues the upcoming approvable ruleset for the specified project.
|
|
516
|
+
|
|
517
|
+
*Only a project's current controller can queue its rulesets.*
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
```solidity
|
|
521
|
+
function queueFor(
|
|
522
|
+
uint256 projectId,
|
|
523
|
+
uint256 duration,
|
|
524
|
+
uint256 weight,
|
|
525
|
+
uint256 weightCutPercent,
|
|
526
|
+
IJBRulesetApprovalHook approvalHook,
|
|
527
|
+
uint256 metadata,
|
|
528
|
+
uint256 mustStartAtOrAfter
|
|
529
|
+
)
|
|
530
|
+
external
|
|
531
|
+
override
|
|
532
|
+
onlyControllerOf(projectId)
|
|
533
|
+
returns (JBRuleset memory);
|
|
534
|
+
```
|
|
535
|
+
**Parameters**
|
|
536
|
+
|
|
537
|
+
|Name|Type|Description|
|
|
538
|
+
|----|----|-----------|
|
|
539
|
+
|`projectId`|`uint256`|The ID of the project to queue the ruleset for.|
|
|
540
|
+
|`duration`|`uint256`|The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).|
|
|
541
|
+
|`weight`|`uint256`|A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.|
|
|
542
|
+
|`weightCutPercent`|`uint256`|A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one.|
|
|
543
|
+
|`approvalHook`|`IJBRulesetApprovalHook`|A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.|
|
|
544
|
+
|`metadata`|`uint256`|Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.|
|
|
545
|
+
|`mustStartAtOrAfter`|`uint256`|The earliest time the ruleset can start. The ruleset cannot start before this timestamp.|
|
|
546
|
+
|
|
547
|
+
**Returns**
|
|
548
|
+
|
|
549
|
+
|Name|Type|Description|
|
|
550
|
+
|----|----|-----------|
|
|
551
|
+
|`<none>`|`JBRuleset`|The struct of the new ruleset.|
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
### updateRulesetWeightCache
|
|
555
|
+
|
|
556
|
+
Cache the value of the ruleset weight.
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
```solidity
|
|
560
|
+
function updateRulesetWeightCache(uint256 projectId) external override;
|
|
561
|
+
```
|
|
562
|
+
**Parameters**
|
|
563
|
+
|
|
564
|
+
|Name|Type|Description|
|
|
565
|
+
|----|----|-----------|
|
|
566
|
+
|`projectId`|`uint256`|The ID of the project having its ruleset weight cached.|
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
### _configureIntrinsicPropertiesFor
|
|
570
|
+
|
|
571
|
+
Updates the latest ruleset for this project if it exists. If there is no ruleset, initializes one.
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
```solidity
|
|
575
|
+
function _configureIntrinsicPropertiesFor(
|
|
576
|
+
uint256 projectId,
|
|
577
|
+
uint256 rulesetId,
|
|
578
|
+
uint256 weight,
|
|
579
|
+
uint256 mustStartAtOrAfter
|
|
580
|
+
)
|
|
581
|
+
internal;
|
|
582
|
+
```
|
|
583
|
+
**Parameters**
|
|
584
|
+
|
|
585
|
+
|Name|Type|Description|
|
|
586
|
+
|----|----|-----------|
|
|
587
|
+
|`projectId`|`uint256`|The ID of the project to update the latest ruleset for.|
|
|
588
|
+
|`rulesetId`|`uint256`|The timestamp of when the ruleset was queued.|
|
|
589
|
+
|`weight`|`uint256`|The weight to store in the queued ruleset.|
|
|
590
|
+
|`mustStartAtOrAfter`|`uint256`|The earliest time the ruleset can start. The ruleset cannot start before this timestamp.|
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
### _initializeRulesetFor
|
|
594
|
+
|
|
595
|
+
Initializes a ruleset with the specified properties.
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
```solidity
|
|
599
|
+
function _initializeRulesetFor(
|
|
600
|
+
uint256 projectId,
|
|
601
|
+
JBRuleset memory baseRuleset,
|
|
602
|
+
uint256 rulesetId,
|
|
603
|
+
uint256 mustStartAtOrAfter,
|
|
604
|
+
uint256 weight
|
|
605
|
+
)
|
|
606
|
+
internal;
|
|
607
|
+
```
|
|
608
|
+
**Parameters**
|
|
609
|
+
|
|
610
|
+
|Name|Type|Description|
|
|
611
|
+
|----|----|-----------|
|
|
612
|
+
|`projectId`|`uint256`|The ID of the project to initialize the ruleset for.|
|
|
613
|
+
|`baseRuleset`|`JBRuleset`|The ruleset struct to base the newly initialized one on.|
|
|
614
|
+
|`rulesetId`|`uint256`|The `rulesetId` for the ruleset being initialized.|
|
|
615
|
+
|`mustStartAtOrAfter`|`uint256`|The earliest time the ruleset can start. The ruleset cannot start before this timestamp.|
|
|
616
|
+
|`weight`|`uint256`|The weight to give the newly initialized ruleset.|
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
### _packAndStoreIntrinsicPropertiesOf
|
|
620
|
+
|
|
621
|
+
Efficiently stores the provided intrinsic properties of a ruleset.
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
```solidity
|
|
625
|
+
function _packAndStoreIntrinsicPropertiesOf(
|
|
626
|
+
uint256 rulesetId,
|
|
627
|
+
uint256 projectId,
|
|
628
|
+
uint256 rulesetCycleNumber,
|
|
629
|
+
uint256 weight,
|
|
630
|
+
uint256 basedOnId,
|
|
631
|
+
uint256 start
|
|
632
|
+
)
|
|
633
|
+
internal;
|
|
634
|
+
```
|
|
635
|
+
**Parameters**
|
|
636
|
+
|
|
637
|
+
|Name|Type|Description|
|
|
638
|
+
|----|----|-----------|
|
|
639
|
+
|`rulesetId`|`uint256`|The `rulesetId` of the ruleset to pack and store for.|
|
|
640
|
+
|`projectId`|`uint256`|The ID of the project the ruleset belongs to.|
|
|
641
|
+
|`rulesetCycleNumber`|`uint256`|The cycle number of the ruleset.|
|
|
642
|
+
|`weight`|`uint256`|The weight of the ruleset.|
|
|
643
|
+
|`basedOnId`|`uint256`|The `rulesetId` of the ruleset this ruleset was based on.|
|
|
644
|
+
|`start`|`uint256`|The start time of this ruleset.|
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
## Errors
|
|
648
|
+
### JBRulesets_InvalidWeightCutPercent
|
|
649
|
+
|
|
650
|
+
```solidity
|
|
651
|
+
error JBRulesets_InvalidWeightCutPercent(uint256 percent);
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### JBRulesets_InvalidRulesetApprovalHook
|
|
655
|
+
|
|
656
|
+
```solidity
|
|
657
|
+
error JBRulesets_InvalidRulesetApprovalHook(IJBRulesetApprovalHook hook);
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
### JBRulesets_InvalidRulesetDuration
|
|
661
|
+
|
|
662
|
+
```solidity
|
|
663
|
+
error JBRulesets_InvalidRulesetDuration(uint256 duration, uint256 limit);
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
### JBRulesets_InvalidRulesetEndTime
|
|
667
|
+
|
|
668
|
+
```solidity
|
|
669
|
+
error JBRulesets_InvalidRulesetEndTime(uint256 timestamp, uint256 limit);
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
### JBRulesets_InvalidWeight
|
|
673
|
+
|
|
674
|
+
```solidity
|
|
675
|
+
error JBRulesets_InvalidWeight(uint256 weight, uint256 limit);
|
|
676
|
+
```
|
|
677
|
+
|