@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,1121 @@
|
|
|
1
|
+
# JBController
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBController.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[JBPermissioned](/src/abstract/JBPermissioned.sol/abstract.JBPermissioned.md), ERC2771Context, [IJBController](/src/interfaces/IJBController.sol/interface.IJBController.md), [IJBMigratable](/src/interfaces/IJBMigratable.sol/interface.IJBMigratable.md)
|
|
6
|
+
|
|
7
|
+
`JBController` coordinates rulesets and project tokens, and is the entry point for most operations related
|
|
8
|
+
to rulesets and project tokens.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## State Variables
|
|
12
|
+
### DIRECTORY
|
|
13
|
+
The directory of terminals and controllers for projects.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```solidity
|
|
17
|
+
IJBDirectory public immutable override DIRECTORY;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### FUND_ACCESS_LIMITS
|
|
22
|
+
A contract that stores fund access limits for each project.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
```solidity
|
|
26
|
+
IJBFundAccessLimits public immutable override FUND_ACCESS_LIMITS;
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### PRICES
|
|
31
|
+
A contract that stores prices for each project.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
```solidity
|
|
35
|
+
IJBPrices public immutable override PRICES;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### PROJECTS
|
|
40
|
+
Mints ERC-721s that represent project ownership and transfers.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
```solidity
|
|
44
|
+
IJBProjects public immutable override PROJECTS;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### RULESETS
|
|
49
|
+
The contract storing and managing project rulesets.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
```solidity
|
|
53
|
+
IJBRulesets public immutable override RULESETS;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### SPLITS
|
|
58
|
+
The contract that stores splits for each project.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
```solidity
|
|
62
|
+
IJBSplits public immutable override SPLITS;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
### TOKENS
|
|
67
|
+
The contract that manages token minting and burning.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
```solidity
|
|
71
|
+
IJBTokens public immutable override TOKENS;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
### pendingReservedTokenBalanceOf
|
|
76
|
+
A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the
|
|
77
|
+
reserved token split group yet).
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
```solidity
|
|
81
|
+
mapping(uint256 projectId => uint256) public override pendingReservedTokenBalanceOf;
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
### uriOf
|
|
86
|
+
The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
```solidity
|
|
90
|
+
mapping(uint256 projectId => string) public override uriOf;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## Functions
|
|
95
|
+
### constructor
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
```solidity
|
|
99
|
+
constructor(
|
|
100
|
+
IJBDirectory directory,
|
|
101
|
+
IJBFundAccessLimits fundAccessLimits,
|
|
102
|
+
IJBPermissions permissions,
|
|
103
|
+
IJBPrices prices,
|
|
104
|
+
IJBProjects projects,
|
|
105
|
+
IJBRulesets rulesets,
|
|
106
|
+
IJBSplits splits,
|
|
107
|
+
IJBTokens tokens,
|
|
108
|
+
address trustedForwarder
|
|
109
|
+
)
|
|
110
|
+
JBPermissioned(permissions)
|
|
111
|
+
ERC2771Context(trustedForwarder);
|
|
112
|
+
```
|
|
113
|
+
**Parameters**
|
|
114
|
+
|
|
115
|
+
|Name|Type|Description|
|
|
116
|
+
|----|----|-----------|
|
|
117
|
+
|`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
|
|
118
|
+
|`fundAccessLimits`|`IJBFundAccessLimits`|A contract that stores fund access limits for each project.|
|
|
119
|
+
|`permissions`|`IJBPermissions`|A contract storing permissions.|
|
|
120
|
+
|`prices`|`IJBPrices`|A contract that stores prices for each project.|
|
|
121
|
+
|`projects`|`IJBProjects`|A contract which mints ERC-721s that represent project ownership and transfers.|
|
|
122
|
+
|`rulesets`|`IJBRulesets`|A contract storing and managing project rulesets.|
|
|
123
|
+
|`splits`|`IJBSplits`|A contract that stores splits for each project.|
|
|
124
|
+
|`tokens`|`IJBTokens`|A contract that manages token minting and burning.|
|
|
125
|
+
|`trustedForwarder`|`address`|The trusted forwarder for the ERC2771Context.|
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
### allRulesetsOf
|
|
129
|
+
|
|
130
|
+
Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to
|
|
131
|
+
earliest.
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
```solidity
|
|
135
|
+
function allRulesetsOf(
|
|
136
|
+
uint256 projectId,
|
|
137
|
+
uint256 startingId,
|
|
138
|
+
uint256 size
|
|
139
|
+
)
|
|
140
|
+
external
|
|
141
|
+
view
|
|
142
|
+
override
|
|
143
|
+
returns (JBRulesetWithMetadata[] memory rulesets);
|
|
144
|
+
```
|
|
145
|
+
**Parameters**
|
|
146
|
+
|
|
147
|
+
|Name|Type|Description|
|
|
148
|
+
|----|----|-----------|
|
|
149
|
+
|`projectId`|`uint256`|The ID of the project to get the rulesets of.|
|
|
150
|
+
|`startingId`|`uint256`|The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.|
|
|
151
|
+
|`size`|`uint256`|The maximum number of rulesets to return.|
|
|
152
|
+
|
|
153
|
+
**Returns**
|
|
154
|
+
|
|
155
|
+
|Name|Type|Description|
|
|
156
|
+
|----|----|-----------|
|
|
157
|
+
|`rulesets`|`JBRulesetWithMetadata[]`|The array of rulesets with their metadata.|
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
### currentRulesetOf
|
|
161
|
+
|
|
162
|
+
A project's currently active ruleset and its metadata.
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
```solidity
|
|
166
|
+
function currentRulesetOf(uint256 projectId)
|
|
167
|
+
external
|
|
168
|
+
view
|
|
169
|
+
override
|
|
170
|
+
returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata);
|
|
171
|
+
```
|
|
172
|
+
**Parameters**
|
|
173
|
+
|
|
174
|
+
|Name|Type|Description|
|
|
175
|
+
|----|----|-----------|
|
|
176
|
+
|`projectId`|`uint256`|The ID of the project to get the current ruleset of.|
|
|
177
|
+
|
|
178
|
+
**Returns**
|
|
179
|
+
|
|
180
|
+
|Name|Type|Description|
|
|
181
|
+
|----|----|-----------|
|
|
182
|
+
|`ruleset`|`JBRuleset`|The current ruleset's struct.|
|
|
183
|
+
|`metadata`|`JBRulesetMetadata`|The current ruleset's metadata.|
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
### getRulesetOf
|
|
187
|
+
|
|
188
|
+
Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
```solidity
|
|
192
|
+
function getRulesetOf(
|
|
193
|
+
uint256 projectId,
|
|
194
|
+
uint256 rulesetId
|
|
195
|
+
)
|
|
196
|
+
external
|
|
197
|
+
view
|
|
198
|
+
override
|
|
199
|
+
returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata);
|
|
200
|
+
```
|
|
201
|
+
**Parameters**
|
|
202
|
+
|
|
203
|
+
|Name|Type|Description|
|
|
204
|
+
|----|----|-----------|
|
|
205
|
+
|`projectId`|`uint256`|The ID of the project the ruleset belongs to.|
|
|
206
|
+
|`rulesetId`|`uint256`||
|
|
207
|
+
|
|
208
|
+
**Returns**
|
|
209
|
+
|
|
210
|
+
|Name|Type|Description|
|
|
211
|
+
|----|----|-----------|
|
|
212
|
+
|`ruleset`|`JBRuleset`|The ruleset's struct.|
|
|
213
|
+
|`metadata`|`JBRulesetMetadata`|The ruleset's metadata.|
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
### latestQueuedRulesetOf
|
|
217
|
+
|
|
218
|
+
Gets the latest ruleset queued for a project, its approval status, and its metadata.
|
|
219
|
+
|
|
220
|
+
*The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset
|
|
221
|
+
queue).*
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
```solidity
|
|
225
|
+
function latestQueuedRulesetOf(uint256 projectId)
|
|
226
|
+
external
|
|
227
|
+
view
|
|
228
|
+
override
|
|
229
|
+
returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata, JBApprovalStatus approvalStatus);
|
|
230
|
+
```
|
|
231
|
+
**Parameters**
|
|
232
|
+
|
|
233
|
+
|Name|Type|Description|
|
|
234
|
+
|----|----|-----------|
|
|
235
|
+
|`projectId`|`uint256`|The ID of the project to get the latest ruleset of.|
|
|
236
|
+
|
|
237
|
+
**Returns**
|
|
238
|
+
|
|
239
|
+
|Name|Type|Description|
|
|
240
|
+
|----|----|-----------|
|
|
241
|
+
|`ruleset`|`JBRuleset`|The struct for the project's latest queued ruleset.|
|
|
242
|
+
|`metadata`|`JBRulesetMetadata`|The ruleset's metadata.|
|
|
243
|
+
|`approvalStatus`|`JBApprovalStatus`|The ruleset's approval status.|
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
### setTerminalsAllowed
|
|
247
|
+
|
|
248
|
+
Check whether the project's terminals can currently be set.
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
```solidity
|
|
252
|
+
function setTerminalsAllowed(uint256 projectId) external view returns (bool);
|
|
253
|
+
```
|
|
254
|
+
**Parameters**
|
|
255
|
+
|
|
256
|
+
|Name|Type|Description|
|
|
257
|
+
|----|----|-----------|
|
|
258
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
259
|
+
|
|
260
|
+
**Returns**
|
|
261
|
+
|
|
262
|
+
|Name|Type|Description|
|
|
263
|
+
|----|----|-----------|
|
|
264
|
+
|`<none>`|`bool`|A `bool` which is true if the project allows terminals to be set.|
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
### setControllerAllowed
|
|
268
|
+
|
|
269
|
+
Check whether the project's controller can currently be set.
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
```solidity
|
|
273
|
+
function setControllerAllowed(uint256 projectId) external view returns (bool);
|
|
274
|
+
```
|
|
275
|
+
**Parameters**
|
|
276
|
+
|
|
277
|
+
|Name|Type|Description|
|
|
278
|
+
|----|----|-----------|
|
|
279
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
280
|
+
|
|
281
|
+
**Returns**
|
|
282
|
+
|
|
283
|
+
|Name|Type|Description|
|
|
284
|
+
|----|----|-----------|
|
|
285
|
+
|`<none>`|`bool`|A `bool` which is true if the project allows controllers to be set.|
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
### totalTokenSupplyWithReservedTokensOf
|
|
289
|
+
|
|
290
|
+
Gets the a project token's total supply, including pending reserved tokens.
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
```solidity
|
|
294
|
+
function totalTokenSupplyWithReservedTokensOf(uint256 projectId) external view override returns (uint256);
|
|
295
|
+
```
|
|
296
|
+
**Parameters**
|
|
297
|
+
|
|
298
|
+
|Name|Type|Description|
|
|
299
|
+
|----|----|-----------|
|
|
300
|
+
|`projectId`|`uint256`|The ID of the project to get the total token supply of.|
|
|
301
|
+
|
|
302
|
+
**Returns**
|
|
303
|
+
|
|
304
|
+
|Name|Type|Description|
|
|
305
|
+
|----|----|-----------|
|
|
306
|
+
|`<none>`|`uint256`|The total supply of the project's token, including pending reserved tokens.|
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
### upcomingRulesetOf
|
|
310
|
+
|
|
311
|
+
A project's next ruleset along with its metadata.
|
|
312
|
+
|
|
313
|
+
*If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.*
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
```solidity
|
|
317
|
+
function upcomingRulesetOf(uint256 projectId)
|
|
318
|
+
external
|
|
319
|
+
view
|
|
320
|
+
override
|
|
321
|
+
returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata);
|
|
322
|
+
```
|
|
323
|
+
**Parameters**
|
|
324
|
+
|
|
325
|
+
|Name|Type|Description|
|
|
326
|
+
|----|----|-----------|
|
|
327
|
+
|`projectId`|`uint256`|The ID of the project to get the next ruleset of.|
|
|
328
|
+
|
|
329
|
+
**Returns**
|
|
330
|
+
|
|
331
|
+
|Name|Type|Description|
|
|
332
|
+
|----|----|-----------|
|
|
333
|
+
|`ruleset`|`JBRuleset`|The upcoming ruleset's struct.|
|
|
334
|
+
|`metadata`|`JBRulesetMetadata`|The upcoming ruleset's metadata.|
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
### supportsInterface
|
|
338
|
+
|
|
339
|
+
Indicates whether this contract adheres to the specified interface.
|
|
340
|
+
|
|
341
|
+
*See [IERC165-supportsInterface](/src/JBProjects.sol/contract.JBProjects.md#supportsinterface).*
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
```solidity
|
|
345
|
+
function supportsInterface(bytes4 interfaceId) public pure override returns (bool);
|
|
346
|
+
```
|
|
347
|
+
**Parameters**
|
|
348
|
+
|
|
349
|
+
|Name|Type|Description|
|
|
350
|
+
|----|----|-----------|
|
|
351
|
+
|`interfaceId`|`bytes4`|The ID of the interface to check for adherence to.|
|
|
352
|
+
|
|
353
|
+
**Returns**
|
|
354
|
+
|
|
355
|
+
|Name|Type|Description|
|
|
356
|
+
|----|----|-----------|
|
|
357
|
+
|`<none>`|`bool`|A flag indicating if the provided interface ID is supported.|
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
### _contextSuffixLength
|
|
361
|
+
|
|
362
|
+
*`ERC-2771` specifies the context as being a single address (20 bytes).*
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
```solidity
|
|
366
|
+
function _contextSuffixLength() internal view override(ERC2771Context, Context) returns (uint256);
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### _currentRulesetOf
|
|
370
|
+
|
|
371
|
+
The project's current ruleset.
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
```solidity
|
|
375
|
+
function _currentRulesetOf(uint256 projectId) internal view returns (JBRuleset memory);
|
|
376
|
+
```
|
|
377
|
+
**Parameters**
|
|
378
|
+
|
|
379
|
+
|Name|Type|Description|
|
|
380
|
+
|----|----|-----------|
|
|
381
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
382
|
+
|
|
383
|
+
**Returns**
|
|
384
|
+
|
|
385
|
+
|Name|Type|Description|
|
|
386
|
+
|----|----|-----------|
|
|
387
|
+
|`<none>`|`JBRuleset`|The project's current ruleset.|
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
### _isTerminalOf
|
|
391
|
+
|
|
392
|
+
Indicates whether the provided address is a terminal for the project.
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
```solidity
|
|
396
|
+
function _isTerminalOf(uint256 projectId, address terminal) internal view returns (bool);
|
|
397
|
+
```
|
|
398
|
+
**Parameters**
|
|
399
|
+
|
|
400
|
+
|Name|Type|Description|
|
|
401
|
+
|----|----|-----------|
|
|
402
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
403
|
+
|`terminal`|`address`|The address to check.|
|
|
404
|
+
|
|
405
|
+
**Returns**
|
|
406
|
+
|
|
407
|
+
|Name|Type|Description|
|
|
408
|
+
|----|----|-----------|
|
|
409
|
+
|`<none>`|`bool`|A flag indicating if the provided address is a terminal for the project.|
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
### _hasDataHookMintPermissionFor
|
|
413
|
+
|
|
414
|
+
Indicates whether the provided address has mint permission for the project byway of the data hook.
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
```solidity
|
|
418
|
+
function _hasDataHookMintPermissionFor(
|
|
419
|
+
uint256 projectId,
|
|
420
|
+
JBRuleset memory ruleset,
|
|
421
|
+
address addrs
|
|
422
|
+
)
|
|
423
|
+
internal
|
|
424
|
+
view
|
|
425
|
+
returns (bool);
|
|
426
|
+
```
|
|
427
|
+
**Parameters**
|
|
428
|
+
|
|
429
|
+
|Name|Type|Description|
|
|
430
|
+
|----|----|-----------|
|
|
431
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
432
|
+
|`ruleset`|`JBRuleset`|The ruleset to check.|
|
|
433
|
+
|`addrs`|`address`|The address to check.|
|
|
434
|
+
|
|
435
|
+
**Returns**
|
|
436
|
+
|
|
437
|
+
|Name|Type|Description|
|
|
438
|
+
|----|----|-----------|
|
|
439
|
+
|`<none>`|`bool`|A flag indicating if the provided address has mint permission for the project.|
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
### _msgData
|
|
443
|
+
|
|
444
|
+
The calldata. Preferred to use over `msg.data`.
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
```solidity
|
|
448
|
+
function _msgData() internal view override(ERC2771Context, Context) returns (bytes calldata);
|
|
449
|
+
```
|
|
450
|
+
**Returns**
|
|
451
|
+
|
|
452
|
+
|Name|Type|Description|
|
|
453
|
+
|----|----|-----------|
|
|
454
|
+
|`<none>`|`bytes`|calldata The `msg.data` of this call.|
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
### _msgSender
|
|
458
|
+
|
|
459
|
+
The message's sender. Preferred to use over `msg.sender`.
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
```solidity
|
|
463
|
+
function _msgSender() internal view override(ERC2771Context, Context) returns (address sender);
|
|
464
|
+
```
|
|
465
|
+
**Returns**
|
|
466
|
+
|
|
467
|
+
|Name|Type|Description|
|
|
468
|
+
|----|----|-----------|
|
|
469
|
+
|`sender`|`address`|The address which sent this call.|
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
### _upcomingRulesetOf
|
|
473
|
+
|
|
474
|
+
The project's upcoming ruleset.
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
```solidity
|
|
478
|
+
function _upcomingRulesetOf(uint256 projectId) internal view returns (JBRuleset memory);
|
|
479
|
+
```
|
|
480
|
+
**Parameters**
|
|
481
|
+
|
|
482
|
+
|Name|Type|Description|
|
|
483
|
+
|----|----|-----------|
|
|
484
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
485
|
+
|
|
486
|
+
**Returns**
|
|
487
|
+
|
|
488
|
+
|Name|Type|Description|
|
|
489
|
+
|----|----|-----------|
|
|
490
|
+
|`<none>`|`JBRuleset`|The project's upcoming ruleset.|
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
### addPriceFeed
|
|
494
|
+
|
|
495
|
+
Add a price feed for a project.
|
|
496
|
+
|
|
497
|
+
*Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.*
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
```solidity
|
|
501
|
+
function addPriceFeed(
|
|
502
|
+
uint256 projectId,
|
|
503
|
+
uint256 pricingCurrency,
|
|
504
|
+
uint256 unitCurrency,
|
|
505
|
+
IJBPriceFeed feed
|
|
506
|
+
)
|
|
507
|
+
external
|
|
508
|
+
override;
|
|
509
|
+
```
|
|
510
|
+
**Parameters**
|
|
511
|
+
|
|
512
|
+
|Name|Type|Description|
|
|
513
|
+
|----|----|-----------|
|
|
514
|
+
|`projectId`|`uint256`|The ID of the project to add the feed for.|
|
|
515
|
+
|`pricingCurrency`|`uint256`|The currency the feed's output price is in terms of.|
|
|
516
|
+
|`unitCurrency`|`uint256`|The currency being priced by the feed.|
|
|
517
|
+
|`feed`|`IJBPriceFeed`|The address of the price feed to add.|
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
### burnTokensOf
|
|
521
|
+
|
|
522
|
+
Burns a project's tokens or credits from the specific holder's balance.
|
|
523
|
+
|
|
524
|
+
*Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's
|
|
525
|
+
terminal.*
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
```solidity
|
|
529
|
+
function burnTokensOf(address holder, uint256 projectId, uint256 tokenCount, string calldata memo) external override;
|
|
530
|
+
```
|
|
531
|
+
**Parameters**
|
|
532
|
+
|
|
533
|
+
|Name|Type|Description|
|
|
534
|
+
|----|----|-----------|
|
|
535
|
+
|`holder`|`address`|The address whose tokens are being burned.|
|
|
536
|
+
|`projectId`|`uint256`|The ID of the project whose tokens are being burned.|
|
|
537
|
+
|`tokenCount`|`uint256`|The number of tokens to burn.|
|
|
538
|
+
|`memo`|`string`|A memo to pass along to the emitted event.|
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
### claimTokensFor
|
|
542
|
+
|
|
543
|
+
Redeem credits to claim tokens into a `beneficiary`'s account.
|
|
544
|
+
|
|
545
|
+
*Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.*
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
```solidity
|
|
549
|
+
function claimTokensFor(address holder, uint256 projectId, uint256 tokenCount, address beneficiary) external override;
|
|
550
|
+
```
|
|
551
|
+
**Parameters**
|
|
552
|
+
|
|
553
|
+
|Name|Type|Description|
|
|
554
|
+
|----|----|-----------|
|
|
555
|
+
|`holder`|`address`|The address to redeem credits from.|
|
|
556
|
+
|`projectId`|`uint256`|The ID of the project whose tokens are being claimed.|
|
|
557
|
+
|`tokenCount`|`uint256`|The number of tokens to claim.|
|
|
558
|
+
|`beneficiary`|`address`|The account the claimed tokens will go to.|
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
### deployERC20For
|
|
562
|
+
|
|
563
|
+
Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).
|
|
564
|
+
|
|
565
|
+
*Deploys the project's ERC-20 contract.*
|
|
566
|
+
|
|
567
|
+
*Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.*
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
```solidity
|
|
571
|
+
function deployERC20For(
|
|
572
|
+
uint256 projectId,
|
|
573
|
+
string calldata name,
|
|
574
|
+
string calldata symbol,
|
|
575
|
+
bytes32 salt
|
|
576
|
+
)
|
|
577
|
+
external
|
|
578
|
+
override
|
|
579
|
+
returns (IJBToken token);
|
|
580
|
+
```
|
|
581
|
+
**Parameters**
|
|
582
|
+
|
|
583
|
+
|Name|Type|Description|
|
|
584
|
+
|----|----|-----------|
|
|
585
|
+
|`projectId`|`uint256`|The ID of the project to deploy the ERC-20 for.|
|
|
586
|
+
|`name`|`string`|The ERC-20's name.|
|
|
587
|
+
|`symbol`|`string`|The ERC-20's symbol.|
|
|
588
|
+
|`salt`|`bytes32`|The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.|
|
|
589
|
+
|
|
590
|
+
**Returns**
|
|
591
|
+
|
|
592
|
+
|Name|Type|Description|
|
|
593
|
+
|----|----|-----------|
|
|
594
|
+
|`token`|`IJBToken`|The address of the token that was deployed.|
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
### executePayReservedTokenToTerminal
|
|
598
|
+
|
|
599
|
+
When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the
|
|
600
|
+
terminal.
|
|
601
|
+
|
|
602
|
+
*Can only be called by this controller.*
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
```solidity
|
|
606
|
+
function executePayReservedTokenToTerminal(
|
|
607
|
+
IJBTerminal terminal,
|
|
608
|
+
uint256 projectId,
|
|
609
|
+
IJBToken token,
|
|
610
|
+
uint256 splitTokenCount,
|
|
611
|
+
address beneficiary,
|
|
612
|
+
bytes calldata metadata
|
|
613
|
+
)
|
|
614
|
+
external;
|
|
615
|
+
```
|
|
616
|
+
**Parameters**
|
|
617
|
+
|
|
618
|
+
|Name|Type|Description|
|
|
619
|
+
|----|----|-----------|
|
|
620
|
+
|`terminal`|`IJBTerminal`|The terminal to pay.|
|
|
621
|
+
|`projectId`|`uint256`|The ID of the project being paid.|
|
|
622
|
+
|`token`|`IJBToken`|The token being paid with.|
|
|
623
|
+
|`splitTokenCount`|`uint256`|The number of tokens being paid.|
|
|
624
|
+
|`beneficiary`|`address`|The payment's beneficiary.|
|
|
625
|
+
|`metadata`|`bytes`|The pay metadata sent to the terminal.|
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
### launchProjectFor
|
|
629
|
+
|
|
630
|
+
Creates a project.
|
|
631
|
+
|
|
632
|
+
*This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the
|
|
633
|
+
specified splits and terminals. Each operation within this transaction can be done in sequence separately.*
|
|
634
|
+
|
|
635
|
+
*Anyone can deploy a project to any `owner`'s address.*
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
```solidity
|
|
639
|
+
function launchProjectFor(
|
|
640
|
+
address owner,
|
|
641
|
+
string calldata projectUri,
|
|
642
|
+
JBRulesetConfig[] calldata rulesetConfigurations,
|
|
643
|
+
JBTerminalConfig[] calldata terminalConfigurations,
|
|
644
|
+
string calldata memo
|
|
645
|
+
)
|
|
646
|
+
external
|
|
647
|
+
override
|
|
648
|
+
returns (uint256 projectId);
|
|
649
|
+
```
|
|
650
|
+
**Parameters**
|
|
651
|
+
|
|
652
|
+
|Name|Type|Description|
|
|
653
|
+
|----|----|-----------|
|
|
654
|
+
|`owner`|`address`|The project's owner. The project ERC-721 will be minted to this address.|
|
|
655
|
+
|`projectUri`|`string`|The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.|
|
|
656
|
+
|`rulesetConfigurations`|`JBRulesetConfig[]`|The rulesets to queue.|
|
|
657
|
+
|`terminalConfigurations`|`JBTerminalConfig[]`|The terminals to set up for the project.|
|
|
658
|
+
|`memo`|`string`|A memo to pass along to the emitted event.|
|
|
659
|
+
|
|
660
|
+
**Returns**
|
|
661
|
+
|
|
662
|
+
|Name|Type|Description|
|
|
663
|
+
|----|----|-----------|
|
|
664
|
+
|`projectId`|`uint256`|The project's ID.|
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
### launchRulesetsFor
|
|
668
|
+
|
|
669
|
+
Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets
|
|
670
|
+
should use `queueRulesetsOf(...)`.
|
|
671
|
+
|
|
672
|
+
*Each operation within this transaction can be done in sequence separately.*
|
|
673
|
+
|
|
674
|
+
*Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.*
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
```solidity
|
|
678
|
+
function launchRulesetsFor(
|
|
679
|
+
uint256 projectId,
|
|
680
|
+
JBRulesetConfig[] calldata rulesetConfigurations,
|
|
681
|
+
JBTerminalConfig[] calldata terminalConfigurations,
|
|
682
|
+
string calldata memo
|
|
683
|
+
)
|
|
684
|
+
external
|
|
685
|
+
override
|
|
686
|
+
returns (uint256 rulesetId);
|
|
687
|
+
```
|
|
688
|
+
**Parameters**
|
|
689
|
+
|
|
690
|
+
|Name|Type|Description|
|
|
691
|
+
|----|----|-----------|
|
|
692
|
+
|`projectId`|`uint256`|The ID of the project to launch rulesets for.|
|
|
693
|
+
|`rulesetConfigurations`|`JBRulesetConfig[]`|The rulesets to queue.|
|
|
694
|
+
|`terminalConfigurations`|`JBTerminalConfig[]`|The terminals to set up.|
|
|
695
|
+
|`memo`|`string`|A memo to pass along to the emitted event.|
|
|
696
|
+
|
|
697
|
+
**Returns**
|
|
698
|
+
|
|
699
|
+
|Name|Type|Description|
|
|
700
|
+
|----|----|-----------|
|
|
701
|
+
|`rulesetId`|`uint256`|The ID of the last successfully queued ruleset.|
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
### migrate
|
|
705
|
+
|
|
706
|
+
Migrate a project from this controller to another one.
|
|
707
|
+
|
|
708
|
+
*Can only be called by the directory.*
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
```solidity
|
|
712
|
+
function migrate(uint256 projectId, IERC165 to) external override;
|
|
713
|
+
```
|
|
714
|
+
**Parameters**
|
|
715
|
+
|
|
716
|
+
|Name|Type|Description|
|
|
717
|
+
|----|----|-----------|
|
|
718
|
+
|`projectId`|`uint256`|The ID of the project to migrate.|
|
|
719
|
+
|`to`|`IERC165`|The controller to migrate the project to.|
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
### mintTokensOf
|
|
723
|
+
|
|
724
|
+
Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion
|
|
725
|
+
according to the ruleset's reserved percent.
|
|
726
|
+
|
|
727
|
+
*Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of
|
|
728
|
+
the project's terminals, or the project's data hook.*
|
|
729
|
+
|
|
730
|
+
*If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the
|
|
731
|
+
project's terminals or data hook.*
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
```solidity
|
|
735
|
+
function mintTokensOf(
|
|
736
|
+
uint256 projectId,
|
|
737
|
+
uint256 tokenCount,
|
|
738
|
+
address beneficiary,
|
|
739
|
+
string calldata memo,
|
|
740
|
+
bool useReservedPercent
|
|
741
|
+
)
|
|
742
|
+
external
|
|
743
|
+
override
|
|
744
|
+
returns (uint256 beneficiaryTokenCount);
|
|
745
|
+
```
|
|
746
|
+
**Parameters**
|
|
747
|
+
|
|
748
|
+
|Name|Type|Description|
|
|
749
|
+
|----|----|-----------|
|
|
750
|
+
|`projectId`|`uint256`|The ID of the project whose tokens are being minted.|
|
|
751
|
+
|`tokenCount`|`uint256`|The number of tokens to mint, including any reserved tokens.|
|
|
752
|
+
|`beneficiary`|`address`|The address which will receive the (non-reserved) tokens.|
|
|
753
|
+
|`memo`|`string`|A memo to pass along to the emitted event.|
|
|
754
|
+
|`useReservedPercent`|`bool`|Whether to apply the ruleset's reserved percent.|
|
|
755
|
+
|
|
756
|
+
**Returns**
|
|
757
|
+
|
|
758
|
+
|Name|Type|Description|
|
|
759
|
+
|----|----|-----------|
|
|
760
|
+
|`beneficiaryTokenCount`|`uint256`|The number of tokens minted for the `beneficiary`.|
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
### queueRulesetsOf
|
|
764
|
+
|
|
765
|
+
Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the
|
|
766
|
+
previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.
|
|
767
|
+
|
|
768
|
+
*Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.*
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
```solidity
|
|
772
|
+
function queueRulesetsOf(
|
|
773
|
+
uint256 projectId,
|
|
774
|
+
JBRulesetConfig[] calldata rulesetConfigurations,
|
|
775
|
+
string calldata memo
|
|
776
|
+
)
|
|
777
|
+
external
|
|
778
|
+
override
|
|
779
|
+
returns (uint256 rulesetId);
|
|
780
|
+
```
|
|
781
|
+
**Parameters**
|
|
782
|
+
|
|
783
|
+
|Name|Type|Description|
|
|
784
|
+
|----|----|-----------|
|
|
785
|
+
|`projectId`|`uint256`|The ID of the project to queue rulesets for.|
|
|
786
|
+
|`rulesetConfigurations`|`JBRulesetConfig[]`|The rulesets to queue.|
|
|
787
|
+
|`memo`|`string`|A memo to pass along to the emitted event.|
|
|
788
|
+
|
|
789
|
+
**Returns**
|
|
790
|
+
|
|
791
|
+
|Name|Type|Description|
|
|
792
|
+
|----|----|-----------|
|
|
793
|
+
|`rulesetId`|`uint256`|The ID of the last ruleset which was successfully queued.|
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
### beforeReceiveMigrationFrom
|
|
797
|
+
|
|
798
|
+
Prepares this controller to receive a project being migrated from another controller.
|
|
799
|
+
|
|
800
|
+
*This controller should not be the project's controller yet.*
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
```solidity
|
|
804
|
+
function beforeReceiveMigrationFrom(IERC165 from, uint256 projectId) external override;
|
|
805
|
+
```
|
|
806
|
+
**Parameters**
|
|
807
|
+
|
|
808
|
+
|Name|Type|Description|
|
|
809
|
+
|----|----|-----------|
|
|
810
|
+
|`from`|`IERC165`|The controller being migrated from.|
|
|
811
|
+
|`projectId`|`uint256`|The ID of the project that will migrate to this controller.|
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
### sendReservedTokensToSplitsOf
|
|
815
|
+
|
|
816
|
+
Sends a project's pending reserved tokens to its reserved token splits.
|
|
817
|
+
|
|
818
|
+
*If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to
|
|
819
|
+
the project's owner.*
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
```solidity
|
|
823
|
+
function sendReservedTokensToSplitsOf(uint256 projectId) external override returns (uint256);
|
|
824
|
+
```
|
|
825
|
+
**Parameters**
|
|
826
|
+
|
|
827
|
+
|Name|Type|Description|
|
|
828
|
+
|----|----|-----------|
|
|
829
|
+
|`projectId`|`uint256`|The ID of the project to send reserved tokens for.|
|
|
830
|
+
|
|
831
|
+
**Returns**
|
|
832
|
+
|
|
833
|
+
|Name|Type|Description|
|
|
834
|
+
|----|----|-----------|
|
|
835
|
+
|`<none>`|`uint256`|The amount of reserved tokens minted and sent.|
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
### setSplitGroupsOf
|
|
839
|
+
|
|
840
|
+
Sets a project's split groups. The new split groups must include any current splits which are locked.
|
|
841
|
+
|
|
842
|
+
*Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.*
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
```solidity
|
|
846
|
+
function setSplitGroupsOf(
|
|
847
|
+
uint256 projectId,
|
|
848
|
+
uint256 rulesetId,
|
|
849
|
+
JBSplitGroup[] calldata splitGroups
|
|
850
|
+
)
|
|
851
|
+
external
|
|
852
|
+
override;
|
|
853
|
+
```
|
|
854
|
+
**Parameters**
|
|
855
|
+
|
|
856
|
+
|Name|Type|Description|
|
|
857
|
+
|----|----|-----------|
|
|
858
|
+
|`projectId`|`uint256`|The ID of the project to set the split groups of.|
|
|
859
|
+
|`rulesetId`|`uint256`|The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.|
|
|
860
|
+
|`splitGroups`|`JBSplitGroup[]`|An array of split groups to set.|
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
### setTokenFor
|
|
864
|
+
|
|
865
|
+
Set a project's token. If the project's token is already set, this will revert.
|
|
866
|
+
|
|
867
|
+
*Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.*
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
```solidity
|
|
871
|
+
function setTokenFor(uint256 projectId, IJBToken token) external override;
|
|
872
|
+
```
|
|
873
|
+
**Parameters**
|
|
874
|
+
|
|
875
|
+
|Name|Type|Description|
|
|
876
|
+
|----|----|-----------|
|
|
877
|
+
|`projectId`|`uint256`|The ID of the project to set the token of.|
|
|
878
|
+
|`token`|`IJBToken`|The new token's address.|
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
### setUriOf
|
|
882
|
+
|
|
883
|
+
Set a project's metadata URI.
|
|
884
|
+
|
|
885
|
+
*This is typically an IPFS hash, optionally with an `ipfs://` prefix.*
|
|
886
|
+
|
|
887
|
+
*Can only be called by the project's owner or an address with the owner's permission to
|
|
888
|
+
`SET_PROJECT_URI`.*
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
```solidity
|
|
892
|
+
function setUriOf(uint256 projectId, string calldata uri) external override;
|
|
893
|
+
```
|
|
894
|
+
**Parameters**
|
|
895
|
+
|
|
896
|
+
|Name|Type|Description|
|
|
897
|
+
|----|----|-----------|
|
|
898
|
+
|`projectId`|`uint256`|The ID of the project to set the metadata URI of.|
|
|
899
|
+
|`uri`|`string`|The metadata URI to set.|
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
### transferCreditsFrom
|
|
903
|
+
|
|
904
|
+
Allows a credit holder to transfer credits to another address.
|
|
905
|
+
|
|
906
|
+
*Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.*
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
```solidity
|
|
910
|
+
function transferCreditsFrom(
|
|
911
|
+
address holder,
|
|
912
|
+
uint256 projectId,
|
|
913
|
+
address recipient,
|
|
914
|
+
uint256 creditCount
|
|
915
|
+
)
|
|
916
|
+
external
|
|
917
|
+
override;
|
|
918
|
+
```
|
|
919
|
+
**Parameters**
|
|
920
|
+
|
|
921
|
+
|Name|Type|Description|
|
|
922
|
+
|----|----|-----------|
|
|
923
|
+
|`holder`|`address`|The address to transfer credits from.|
|
|
924
|
+
|`projectId`|`uint256`|The ID of the project whose credits are being transferred.|
|
|
925
|
+
|`recipient`|`address`|The address to transfer credits to.|
|
|
926
|
+
|`creditCount`|`uint256`|The number of credits to transfer.|
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
### _configureTerminals
|
|
930
|
+
|
|
931
|
+
Set up a project's terminals.
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
```solidity
|
|
935
|
+
function _configureTerminals(uint256 projectId, JBTerminalConfig[] calldata terminalConfigs) internal;
|
|
936
|
+
```
|
|
937
|
+
**Parameters**
|
|
938
|
+
|
|
939
|
+
|Name|Type|Description|
|
|
940
|
+
|----|----|-----------|
|
|
941
|
+
|`projectId`|`uint256`|The ID of the project to set up terminals for.|
|
|
942
|
+
|`terminalConfigs`|`JBTerminalConfig[]`|The terminals to set up.|
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
### _queueRulesets
|
|
946
|
+
|
|
947
|
+
Queues one or more rulesets and stores information pertinent to the configuration.
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
```solidity
|
|
951
|
+
function _queueRulesets(
|
|
952
|
+
uint256 projectId,
|
|
953
|
+
JBRulesetConfig[] calldata rulesetConfigurations
|
|
954
|
+
)
|
|
955
|
+
internal
|
|
956
|
+
returns (uint256 rulesetId);
|
|
957
|
+
```
|
|
958
|
+
**Parameters**
|
|
959
|
+
|
|
960
|
+
|Name|Type|Description|
|
|
961
|
+
|----|----|-----------|
|
|
962
|
+
|`projectId`|`uint256`|The ID of the project to queue rulesets for.|
|
|
963
|
+
|`rulesetConfigurations`|`JBRulesetConfig[]`|The rulesets being queued.|
|
|
964
|
+
|
|
965
|
+
**Returns**
|
|
966
|
+
|
|
967
|
+
|Name|Type|Description|
|
|
968
|
+
|----|----|-----------|
|
|
969
|
+
|`rulesetId`|`uint256`|The ID of the last ruleset that was successfully queued.|
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
### _sendReservedTokensToSplitsOf
|
|
973
|
+
|
|
974
|
+
Sends pending reserved tokens to the project's reserved token splits.
|
|
975
|
+
|
|
976
|
+
*If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to
|
|
977
|
+
the project's owner.*
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
```solidity
|
|
981
|
+
function _sendReservedTokensToSplitsOf(uint256 projectId) internal returns (uint256 tokenCount);
|
|
982
|
+
```
|
|
983
|
+
**Parameters**
|
|
984
|
+
|
|
985
|
+
|Name|Type|Description|
|
|
986
|
+
|----|----|-----------|
|
|
987
|
+
|`projectId`|`uint256`|The ID of the project to send reserved tokens for.|
|
|
988
|
+
|
|
989
|
+
**Returns**
|
|
990
|
+
|
|
991
|
+
|Name|Type|Description|
|
|
992
|
+
|----|----|-----------|
|
|
993
|
+
|`tokenCount`|`uint256`|The amount of reserved tokens minted and sent.|
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
### _sendReservedTokensToSplitGroupOf
|
|
997
|
+
|
|
998
|
+
Send project tokens to a split group.
|
|
999
|
+
|
|
1000
|
+
*This is used to send reserved tokens to the reserved token split group.*
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
```solidity
|
|
1004
|
+
function _sendReservedTokensToSplitGroupOf(
|
|
1005
|
+
uint256 projectId,
|
|
1006
|
+
uint256 rulesetId,
|
|
1007
|
+
uint256 groupId,
|
|
1008
|
+
uint256 tokenCount,
|
|
1009
|
+
IJBToken token
|
|
1010
|
+
)
|
|
1011
|
+
internal
|
|
1012
|
+
returns (uint256 leftoverTokenCount);
|
|
1013
|
+
```
|
|
1014
|
+
**Parameters**
|
|
1015
|
+
|
|
1016
|
+
|Name|Type|Description|
|
|
1017
|
+
|----|----|-----------|
|
|
1018
|
+
|`projectId`|`uint256`|The ID of the project the splits belong to.|
|
|
1019
|
+
|`rulesetId`|`uint256`|The ID of the split group's ruleset.|
|
|
1020
|
+
|`groupId`|`uint256`|The ID of the split group.|
|
|
1021
|
+
|`tokenCount`|`uint256`|The number of tokens to send.|
|
|
1022
|
+
|`token`|`IJBToken`|The token to send.|
|
|
1023
|
+
|
|
1024
|
+
**Returns**
|
|
1025
|
+
|
|
1026
|
+
|Name|Type|Description|
|
|
1027
|
+
|----|----|-----------|
|
|
1028
|
+
|`leftoverTokenCount`|`uint256`|If the split percents don't add up to 100%, the leftover amount is returned.|
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
### _sendTokens
|
|
1032
|
+
|
|
1033
|
+
Send tokens from this contract to a recipient.
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
```solidity
|
|
1037
|
+
function _sendTokens(uint256 projectId, uint256 tokenCount, address recipient, IJBToken token) internal;
|
|
1038
|
+
```
|
|
1039
|
+
**Parameters**
|
|
1040
|
+
|
|
1041
|
+
|Name|Type|Description|
|
|
1042
|
+
|----|----|-----------|
|
|
1043
|
+
|`projectId`|`uint256`|The ID of the project the tokens belong to.|
|
|
1044
|
+
|`tokenCount`|`uint256`|The number of tokens to send.|
|
|
1045
|
+
|`recipient`|`address`|The address to send the tokens to.|
|
|
1046
|
+
|`token`|`IJBToken`|The token to send, if one exists|
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
## Errors
|
|
1050
|
+
### JBController_AddingPriceFeedNotAllowed
|
|
1051
|
+
|
|
1052
|
+
```solidity
|
|
1053
|
+
error JBController_AddingPriceFeedNotAllowed();
|
|
1054
|
+
```
|
|
1055
|
+
|
|
1056
|
+
### JBController_CreditTransfersPaused
|
|
1057
|
+
|
|
1058
|
+
```solidity
|
|
1059
|
+
error JBController_CreditTransfersPaused();
|
|
1060
|
+
```
|
|
1061
|
+
|
|
1062
|
+
### JBController_InvalidCashOutTaxRate
|
|
1063
|
+
|
|
1064
|
+
```solidity
|
|
1065
|
+
error JBController_InvalidCashOutTaxRate(uint256 rate, uint256 limit);
|
|
1066
|
+
```
|
|
1067
|
+
|
|
1068
|
+
### JBController_InvalidReservedPercent
|
|
1069
|
+
|
|
1070
|
+
```solidity
|
|
1071
|
+
error JBController_InvalidReservedPercent(uint256 percent, uint256 limit);
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
### JBController_MintNotAllowedAndNotTerminalOrHook
|
|
1075
|
+
|
|
1076
|
+
```solidity
|
|
1077
|
+
error JBController_MintNotAllowedAndNotTerminalOrHook();
|
|
1078
|
+
```
|
|
1079
|
+
|
|
1080
|
+
### JBController_NoReservedTokens
|
|
1081
|
+
|
|
1082
|
+
```solidity
|
|
1083
|
+
error JBController_NoReservedTokens();
|
|
1084
|
+
```
|
|
1085
|
+
|
|
1086
|
+
### JBController_OnlyDirectory
|
|
1087
|
+
|
|
1088
|
+
```solidity
|
|
1089
|
+
error JBController_OnlyDirectory(address sender, IJBDirectory directory);
|
|
1090
|
+
```
|
|
1091
|
+
|
|
1092
|
+
### JBController_RulesetsAlreadyLaunched
|
|
1093
|
+
|
|
1094
|
+
```solidity
|
|
1095
|
+
error JBController_RulesetsAlreadyLaunched();
|
|
1096
|
+
```
|
|
1097
|
+
|
|
1098
|
+
### JBController_RulesetsArrayEmpty
|
|
1099
|
+
|
|
1100
|
+
```solidity
|
|
1101
|
+
error JBController_RulesetsArrayEmpty();
|
|
1102
|
+
```
|
|
1103
|
+
|
|
1104
|
+
### JBController_RulesetSetTokenNotAllowed
|
|
1105
|
+
|
|
1106
|
+
```solidity
|
|
1107
|
+
error JBController_RulesetSetTokenNotAllowed();
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1110
|
+
### JBController_ZeroTokensToBurn
|
|
1111
|
+
|
|
1112
|
+
```solidity
|
|
1113
|
+
error JBController_ZeroTokensToBurn();
|
|
1114
|
+
```
|
|
1115
|
+
|
|
1116
|
+
### JBController_ZeroTokensToMint
|
|
1117
|
+
|
|
1118
|
+
```solidity
|
|
1119
|
+
error JBController_ZeroTokensToMint();
|
|
1120
|
+
```
|
|
1121
|
+
|