@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,353 @@
|
|
|
1
|
+
# JBTokens
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBTokens.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[JBControlled](/src/abstract/JBControlled.sol/abstract.JBControlled.md), [IJBTokens](/src/interfaces/IJBTokens.sol/interface.IJBTokens.md)
|
|
6
|
+
|
|
7
|
+
Manages minting, burning, and balances of projects' tokens and token credits.
|
|
8
|
+
|
|
9
|
+
*Token balances can either be ERC-20s or token credits. This contract manages these two representations and
|
|
10
|
+
allows credit -> ERC-20 claiming.*
|
|
11
|
+
|
|
12
|
+
*The total supply of a project's tokens and the balance of each account are calculated in this contract.*
|
|
13
|
+
|
|
14
|
+
*An ERC-20 contract must be set by a project's owner for ERC-20 claiming to become available. Projects can bring
|
|
15
|
+
their own IJBToken if they prefer.*
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## State Variables
|
|
19
|
+
### TOKEN
|
|
20
|
+
A reference to the token implementation that'll be cloned as projects deploy their own tokens.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
```solidity
|
|
24
|
+
IJBToken public immutable TOKEN;
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### creditBalanceOf
|
|
29
|
+
Each holder's credit balance for each project.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
```solidity
|
|
33
|
+
mapping(address holder => mapping(uint256 projectId => uint256)) public override creditBalanceOf;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### projectIdOf
|
|
38
|
+
Each token's project.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
```solidity
|
|
42
|
+
mapping(IJBToken token => uint256) public override projectIdOf;
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### tokenOf
|
|
47
|
+
Each project's attached token contract.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
```solidity
|
|
51
|
+
mapping(uint256 projectId => IJBToken) public override tokenOf;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### totalCreditSupplyOf
|
|
56
|
+
The total supply of credits for each project.
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
```solidity
|
|
60
|
+
mapping(uint256 projectId => uint256) public override totalCreditSupplyOf;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## Functions
|
|
65
|
+
### constructor
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
```solidity
|
|
69
|
+
constructor(IJBDirectory directory, IJBToken token) JBControlled(directory);
|
|
70
|
+
```
|
|
71
|
+
**Parameters**
|
|
72
|
+
|
|
73
|
+
|Name|Type|Description|
|
|
74
|
+
|----|----|-----------|
|
|
75
|
+
|`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
|
|
76
|
+
|`token`|`IJBToken`|The implementation of the token contract that project can deploy.|
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### totalBalanceOf
|
|
80
|
+
|
|
81
|
+
The total balance a holder has for a specified project, including both tokens and token credits.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
```solidity
|
|
85
|
+
function totalBalanceOf(address holder, uint256 projectId) external view override returns (uint256 balance);
|
|
86
|
+
```
|
|
87
|
+
**Parameters**
|
|
88
|
+
|
|
89
|
+
|Name|Type|Description|
|
|
90
|
+
|----|----|-----------|
|
|
91
|
+
|`holder`|`address`|The holder to get a balance for.|
|
|
92
|
+
|`projectId`|`uint256`|The project to get the `_holder`s balance for.|
|
|
93
|
+
|
|
94
|
+
**Returns**
|
|
95
|
+
|
|
96
|
+
|Name|Type|Description|
|
|
97
|
+
|----|----|-----------|
|
|
98
|
+
|`balance`|`uint256`|The combined token and token credit balance of the `_holder|
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### totalSupplyOf
|
|
102
|
+
|
|
103
|
+
The total supply for a specific project, including both tokens and token credits.
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
```solidity
|
|
107
|
+
function totalSupplyOf(uint256 projectId) public view override returns (uint256 totalSupply);
|
|
108
|
+
```
|
|
109
|
+
**Parameters**
|
|
110
|
+
|
|
111
|
+
|Name|Type|Description|
|
|
112
|
+
|----|----|-----------|
|
|
113
|
+
|`projectId`|`uint256`|The ID of the project to get the total supply of.|
|
|
114
|
+
|
|
115
|
+
**Returns**
|
|
116
|
+
|
|
117
|
+
|Name|Type|Description|
|
|
118
|
+
|----|----|-----------|
|
|
119
|
+
|`totalSupply`|`uint256`|The total supply of the project's tokens and token credits.|
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
### burnFrom
|
|
123
|
+
|
|
124
|
+
Burns (destroys) credits or tokens.
|
|
125
|
+
|
|
126
|
+
*Credits are burned first, then tokens are burned.*
|
|
127
|
+
|
|
128
|
+
*Only a project's current controller can burn its tokens.*
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
```solidity
|
|
132
|
+
function burnFrom(address holder, uint256 projectId, uint256 count) external override onlyControllerOf(projectId);
|
|
133
|
+
```
|
|
134
|
+
**Parameters**
|
|
135
|
+
|
|
136
|
+
|Name|Type|Description|
|
|
137
|
+
|----|----|-----------|
|
|
138
|
+
|`holder`|`address`|The address that owns the tokens which are being burned.|
|
|
139
|
+
|`projectId`|`uint256`|The ID of the project to the burned tokens belong to.|
|
|
140
|
+
|`count`|`uint256`|The number of tokens to burn.|
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
### claimTokensFor
|
|
144
|
+
|
|
145
|
+
Redeem credits to claim tokens into a holder's wallet.
|
|
146
|
+
|
|
147
|
+
*Only a project's controller can claim that project's tokens.*
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
```solidity
|
|
151
|
+
function claimTokensFor(
|
|
152
|
+
address holder,
|
|
153
|
+
uint256 projectId,
|
|
154
|
+
uint256 count,
|
|
155
|
+
address beneficiary
|
|
156
|
+
)
|
|
157
|
+
external
|
|
158
|
+
override
|
|
159
|
+
onlyControllerOf(projectId);
|
|
160
|
+
```
|
|
161
|
+
**Parameters**
|
|
162
|
+
|
|
163
|
+
|Name|Type|Description|
|
|
164
|
+
|----|----|-----------|
|
|
165
|
+
|`holder`|`address`|The owner of the credits being redeemed.|
|
|
166
|
+
|`projectId`|`uint256`|The ID of the project whose tokens are being claimed.|
|
|
167
|
+
|`count`|`uint256`|The number of tokens to claim.|
|
|
168
|
+
|`beneficiary`|`address`|The account into which the claimed tokens will go.|
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
### deployERC20For
|
|
172
|
+
|
|
173
|
+
Deploys an ERC-20 token for a project. It will be used when claiming tokens.
|
|
174
|
+
|
|
175
|
+
*Deploys a project's ERC-20 token contract.*
|
|
176
|
+
|
|
177
|
+
*Only a project's controller can deploy its token.*
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
```solidity
|
|
181
|
+
function deployERC20For(
|
|
182
|
+
uint256 projectId,
|
|
183
|
+
string calldata name,
|
|
184
|
+
string calldata symbol,
|
|
185
|
+
bytes32 salt
|
|
186
|
+
)
|
|
187
|
+
external
|
|
188
|
+
override
|
|
189
|
+
onlyControllerOf(projectId)
|
|
190
|
+
returns (IJBToken token);
|
|
191
|
+
```
|
|
192
|
+
**Parameters**
|
|
193
|
+
|
|
194
|
+
|Name|Type|Description|
|
|
195
|
+
|----|----|-----------|
|
|
196
|
+
|`projectId`|`uint256`|The ID of the project to deploy an ERC-20 token for.|
|
|
197
|
+
|`name`|`string`|The ERC-20's name.|
|
|
198
|
+
|`symbol`|`string`|The ERC-20's symbol.|
|
|
199
|
+
|`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.|
|
|
200
|
+
|
|
201
|
+
**Returns**
|
|
202
|
+
|
|
203
|
+
|Name|Type|Description|
|
|
204
|
+
|----|----|-----------|
|
|
205
|
+
|`token`|`IJBToken`|The address of the token that was deployed.|
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
### mintFor
|
|
209
|
+
|
|
210
|
+
Mint (create) new tokens or credits.
|
|
211
|
+
|
|
212
|
+
*Only a project's current controller can mint its tokens.*
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
```solidity
|
|
216
|
+
function mintFor(
|
|
217
|
+
address holder,
|
|
218
|
+
uint256 projectId,
|
|
219
|
+
uint256 count
|
|
220
|
+
)
|
|
221
|
+
external
|
|
222
|
+
override
|
|
223
|
+
onlyControllerOf(projectId)
|
|
224
|
+
returns (IJBToken token);
|
|
225
|
+
```
|
|
226
|
+
**Parameters**
|
|
227
|
+
|
|
228
|
+
|Name|Type|Description|
|
|
229
|
+
|----|----|-----------|
|
|
230
|
+
|`holder`|`address`|The address receiving the new tokens.|
|
|
231
|
+
|`projectId`|`uint256`|The ID of the project to which the tokens belong.|
|
|
232
|
+
|`count`|`uint256`|The number of tokens to mint.|
|
|
233
|
+
|
|
234
|
+
**Returns**
|
|
235
|
+
|
|
236
|
+
|Name|Type|Description|
|
|
237
|
+
|----|----|-----------|
|
|
238
|
+
|`token`|`IJBToken`|The address of the token that was minted, if the project has a token.|
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
### setTokenFor
|
|
242
|
+
|
|
243
|
+
Set a project's token if not already set.
|
|
244
|
+
|
|
245
|
+
*Only a project's controller can set its token.*
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
```solidity
|
|
249
|
+
function setTokenFor(uint256 projectId, IJBToken token) external override onlyControllerOf(projectId);
|
|
250
|
+
```
|
|
251
|
+
**Parameters**
|
|
252
|
+
|
|
253
|
+
|Name|Type|Description|
|
|
254
|
+
|----|----|-----------|
|
|
255
|
+
|`projectId`|`uint256`|The ID of the project to set the token of.|
|
|
256
|
+
|`token`|`IJBToken`|The new token's address.|
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
### transferCreditsFrom
|
|
260
|
+
|
|
261
|
+
Allows a holder to transfer credits to another account.
|
|
262
|
+
|
|
263
|
+
*Only a project's controller can transfer credits for that project.*
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
```solidity
|
|
267
|
+
function transferCreditsFrom(
|
|
268
|
+
address holder,
|
|
269
|
+
uint256 projectId,
|
|
270
|
+
address recipient,
|
|
271
|
+
uint256 count
|
|
272
|
+
)
|
|
273
|
+
external
|
|
274
|
+
override
|
|
275
|
+
onlyControllerOf(projectId);
|
|
276
|
+
```
|
|
277
|
+
**Parameters**
|
|
278
|
+
|
|
279
|
+
|Name|Type|Description|
|
|
280
|
+
|----|----|-----------|
|
|
281
|
+
|`holder`|`address`|The address to transfer credits from.|
|
|
282
|
+
|`projectId`|`uint256`|The ID of the project whose credits are being transferred.|
|
|
283
|
+
|`recipient`|`address`|The recipient of the credits.|
|
|
284
|
+
|`count`|`uint256`|The number of token credits to transfer.|
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
## Errors
|
|
288
|
+
### JBTokens_EmptyName
|
|
289
|
+
|
|
290
|
+
```solidity
|
|
291
|
+
error JBTokens_EmptyName();
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### JBTokens_EmptySymbol
|
|
295
|
+
|
|
296
|
+
```solidity
|
|
297
|
+
error JBTokens_EmptySymbol();
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### JBTokens_EmptyToken
|
|
301
|
+
|
|
302
|
+
```solidity
|
|
303
|
+
error JBTokens_EmptyToken();
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### JBTokens_InsufficientCredits
|
|
307
|
+
|
|
308
|
+
```solidity
|
|
309
|
+
error JBTokens_InsufficientCredits(uint256 count, uint256 creditBalance);
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### JBTokens_InsufficientTokensToBurn
|
|
313
|
+
|
|
314
|
+
```solidity
|
|
315
|
+
error JBTokens_InsufficientTokensToBurn(uint256 count, uint256 tokenBalance);
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### JBTokens_OverflowAlert
|
|
319
|
+
|
|
320
|
+
```solidity
|
|
321
|
+
error JBTokens_OverflowAlert(uint256 value, uint256 limit);
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### JBTokens_ProjectAlreadyHasToken
|
|
325
|
+
|
|
326
|
+
```solidity
|
|
327
|
+
error JBTokens_ProjectAlreadyHasToken(IJBToken token);
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### JBTokens_TokenAlreadyBeingUsed
|
|
331
|
+
|
|
332
|
+
```solidity
|
|
333
|
+
error JBTokens_TokenAlreadyBeingUsed(uint256 projectId);
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### JBTokens_TokenCantBeAdded
|
|
337
|
+
|
|
338
|
+
```solidity
|
|
339
|
+
error JBTokens_TokenCantBeAdded(uint256 projectId);
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### JBTokens_TokenNotFound
|
|
343
|
+
|
|
344
|
+
```solidity
|
|
345
|
+
error JBTokens_TokenNotFound();
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### JBTokens_TokensMustHave18Decimals
|
|
349
|
+
|
|
350
|
+
```solidity
|
|
351
|
+
error JBTokens_TokensMustHave18Decimals(uint256 decimals);
|
|
352
|
+
```
|
|
353
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# Contents
|
|
4
|
+
- [abstract](/src/abstract)
|
|
5
|
+
- [enums](/src/enums)
|
|
6
|
+
- [interfaces](/src/interfaces)
|
|
7
|
+
- [libraries](/src/libraries)
|
|
8
|
+
- [periphery](/src/periphery)
|
|
9
|
+
- [structs](/src/structs)
|
|
10
|
+
- [JBChainlinkV3PriceFeed](JBChainlinkV3PriceFeed.sol/contract.JBChainlinkV3PriceFeed.md)
|
|
11
|
+
- [JBChainlinkV3SequencerPriceFeed](JBChainlinkV3SequencerPriceFeed.sol/contract.JBChainlinkV3SequencerPriceFeed.md)
|
|
12
|
+
- [JBController](JBController.sol/contract.JBController.md)
|
|
13
|
+
- [JBDeadline](JBDeadline.sol/contract.JBDeadline.md)
|
|
14
|
+
- [JBDirectory](JBDirectory.sol/contract.JBDirectory.md)
|
|
15
|
+
- [JBERC20](JBERC20.sol/contract.JBERC20.md)
|
|
16
|
+
- [JBFeelessAddresses](JBFeelessAddresses.sol/contract.JBFeelessAddresses.md)
|
|
17
|
+
- [JBFundAccessLimits](JBFundAccessLimits.sol/contract.JBFundAccessLimits.md)
|
|
18
|
+
- [JBMultiTerminal](JBMultiTerminal.sol/contract.JBMultiTerminal.md)
|
|
19
|
+
- [JBPermissions](JBPermissions.sol/contract.JBPermissions.md)
|
|
20
|
+
- [JBPrices](JBPrices.sol/contract.JBPrices.md)
|
|
21
|
+
- [JBProjects](JBProjects.sol/contract.JBProjects.md)
|
|
22
|
+
- [JBRulesets](JBRulesets.sol/contract.JBRulesets.md)
|
|
23
|
+
- [JBSplits](JBSplits.sol/contract.JBSplits.md)
|
|
24
|
+
- [JBTerminalStore](JBTerminalStore.sol/contract.JBTerminalStore.md)
|
|
25
|
+
- [JBTokens](JBTokens.sol/contract.JBTokens.md)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# JBControlled
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/abstract/JBControlled.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[IJBControlled](/src/interfaces/IJBControlled.sol/interface.IJBControlled.md)
|
|
6
|
+
|
|
7
|
+
Provides a modifier for contracts with functionality that can only be accessed by a project's controller.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## State Variables
|
|
11
|
+
### DIRECTORY
|
|
12
|
+
The directory of terminals and controllers for projects.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
```solidity
|
|
16
|
+
IJBDirectory public immutable override DIRECTORY;
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Functions
|
|
21
|
+
### onlyControllerOf
|
|
22
|
+
|
|
23
|
+
Only allows the controller of the specified project to proceed.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
```solidity
|
|
27
|
+
modifier onlyControllerOf(uint256 projectId);
|
|
28
|
+
```
|
|
29
|
+
**Parameters**
|
|
30
|
+
|
|
31
|
+
|Name|Type|Description|
|
|
32
|
+
|----|----|-----------|
|
|
33
|
+
|`projectId`|`uint256`|The ID of the project.|
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### constructor
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
```solidity
|
|
40
|
+
constructor(IJBDirectory directory);
|
|
41
|
+
```
|
|
42
|
+
**Parameters**
|
|
43
|
+
|
|
44
|
+
|Name|Type|Description|
|
|
45
|
+
|----|----|-----------|
|
|
46
|
+
|`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### _onlyControllerOf
|
|
50
|
+
|
|
51
|
+
Only allows the controller of the specified project to proceed.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
```solidity
|
|
55
|
+
function _onlyControllerOf(uint256 projectId) internal view;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Errors
|
|
59
|
+
### JBControlled_ControllerUnauthorized
|
|
60
|
+
|
|
61
|
+
```solidity
|
|
62
|
+
error JBControlled_ControllerUnauthorized(address controller);
|
|
63
|
+
```
|
|
64
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# JBPermissioned
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/abstract/JBPermissioned.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
Context, [IJBPermissioned](/src/interfaces/IJBPermissioned.sol/interface.IJBPermissioned.md)
|
|
6
|
+
|
|
7
|
+
Modifiers to allow access to transactions based on which permissions the message's sender has.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## State Variables
|
|
11
|
+
### PERMISSIONS
|
|
12
|
+
A contract storing permissions.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
```solidity
|
|
16
|
+
IJBPermissions public immutable override PERMISSIONS;
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Functions
|
|
21
|
+
### constructor
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
```solidity
|
|
25
|
+
constructor(IJBPermissions permissions);
|
|
26
|
+
```
|
|
27
|
+
**Parameters**
|
|
28
|
+
|
|
29
|
+
|Name|Type|Description|
|
|
30
|
+
|----|----|-----------|
|
|
31
|
+
|`permissions`|`IJBPermissions`|A contract storing permissions.|
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### _requirePermissionFrom
|
|
35
|
+
|
|
36
|
+
Require the message sender to be the account or have the relevant permission.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
```solidity
|
|
40
|
+
function _requirePermissionFrom(address account, uint256 projectId, uint256 permissionId) internal view;
|
|
41
|
+
```
|
|
42
|
+
**Parameters**
|
|
43
|
+
|
|
44
|
+
|Name|Type|Description|
|
|
45
|
+
|----|----|-----------|
|
|
46
|
+
|`account`|`address`|The account to allow.|
|
|
47
|
+
|`projectId`|`uint256`|The project ID to check the permission under.|
|
|
48
|
+
|`permissionId`|`uint256`|The required permission ID. The operator must have this permission within the specified project ID.|
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### _requirePermissionAllowingOverrideFrom
|
|
52
|
+
|
|
53
|
+
If the 'alsoGrantAccessIf' condition is truthy, proceed. Otherwise, require the message sender to be the
|
|
54
|
+
account or
|
|
55
|
+
have the relevant permission.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
```solidity
|
|
59
|
+
function _requirePermissionAllowingOverrideFrom(
|
|
60
|
+
address account,
|
|
61
|
+
uint256 projectId,
|
|
62
|
+
uint256 permissionId,
|
|
63
|
+
bool alsoGrantAccessIf
|
|
64
|
+
)
|
|
65
|
+
internal
|
|
66
|
+
view;
|
|
67
|
+
```
|
|
68
|
+
**Parameters**
|
|
69
|
+
|
|
70
|
+
|Name|Type|Description|
|
|
71
|
+
|----|----|-----------|
|
|
72
|
+
|`account`|`address`|The account to allow.|
|
|
73
|
+
|`projectId`|`uint256`|The project ID to check the permission under.|
|
|
74
|
+
|`permissionId`|`uint256`|The required permission ID. The operator must have this permission within the specified project ID.|
|
|
75
|
+
|`alsoGrantAccessIf`|`bool`|An override condition which will allow access regardless of permissions.|
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## Errors
|
|
79
|
+
### JBPermissioned_Unauthorized
|
|
80
|
+
|
|
81
|
+
```solidity
|
|
82
|
+
error JBPermissioned_Unauthorized(address account, address sender, uint256 projectId, uint256 permissionId);
|
|
83
|
+
```
|
|
84
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# JBApprovalStatus
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/enums/JBApprovalStatus.sol)
|
|
3
|
+
|
|
4
|
+
A ruleset's approval status in a ruleset approval hook.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
```solidity
|
|
8
|
+
enum JBApprovalStatus {
|
|
9
|
+
Empty,
|
|
10
|
+
Upcoming,
|
|
11
|
+
Active,
|
|
12
|
+
ApprovalExpected,
|
|
13
|
+
Approved,
|
|
14
|
+
Failed
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# IJBCashOutHook
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBCashOutHook.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
IERC165
|
|
6
|
+
|
|
7
|
+
Hook called after a terminal's `cashOutTokensOf(...)` logic completes (if passed by the ruleset's data
|
|
8
|
+
hook).
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Functions
|
|
12
|
+
### afterCashOutRecordedWith
|
|
13
|
+
|
|
14
|
+
This function is called by the terminal's `cashOutTokensOf(...)` function after the cash out has been
|
|
15
|
+
recorded in the terminal store.
|
|
16
|
+
|
|
17
|
+
*Critical business logic should be protected by appropriate access control.*
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
```solidity
|
|
21
|
+
function afterCashOutRecordedWith(JBAfterCashOutRecordedContext calldata context) external payable;
|
|
22
|
+
```
|
|
23
|
+
**Parameters**
|
|
24
|
+
|
|
25
|
+
|Name|Type|Description|
|
|
26
|
+
|----|----|-----------|
|
|
27
|
+
|`context`|`JBAfterCashOutRecordedContext`|The context passed in by the terminal, as a `JBAfterCashOutRecordedContext` struct.|
|
|
28
|
+
|
|
29
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# IJBCashOutTerminal
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBCashOutTerminal.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[IJBTerminal](/src/interfaces/IJBTerminal.sol/interface.IJBTerminal.md)
|
|
6
|
+
|
|
7
|
+
A terminal that can be cashed out from.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Functions
|
|
11
|
+
### cashOutTokensOf
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
```solidity
|
|
15
|
+
function cashOutTokensOf(
|
|
16
|
+
address holder,
|
|
17
|
+
uint256 projectId,
|
|
18
|
+
uint256 cashOutCount,
|
|
19
|
+
address tokenToReclaim,
|
|
20
|
+
uint256 minTokensReclaimed,
|
|
21
|
+
address payable beneficiary,
|
|
22
|
+
bytes calldata metadata
|
|
23
|
+
)
|
|
24
|
+
external
|
|
25
|
+
returns (uint256 reclaimAmount);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Events
|
|
29
|
+
### HookAfterRecordCashOut
|
|
30
|
+
|
|
31
|
+
```solidity
|
|
32
|
+
event HookAfterRecordCashOut(
|
|
33
|
+
IJBCashOutHook indexed hook,
|
|
34
|
+
JBAfterCashOutRecordedContext context,
|
|
35
|
+
uint256 specificationAmount,
|
|
36
|
+
uint256 fee,
|
|
37
|
+
address caller
|
|
38
|
+
);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### CashOutTokens
|
|
42
|
+
|
|
43
|
+
```solidity
|
|
44
|
+
event CashOutTokens(
|
|
45
|
+
uint256 indexed rulesetId,
|
|
46
|
+
uint256 indexed rulesetCycleNumber,
|
|
47
|
+
uint256 indexed projectId,
|
|
48
|
+
address holder,
|
|
49
|
+
address beneficiary,
|
|
50
|
+
uint256 cashOutCount,
|
|
51
|
+
uint256 cashOutTaxRate,
|
|
52
|
+
uint256 reclaimAmount,
|
|
53
|
+
bytes metadata,
|
|
54
|
+
address caller
|
|
55
|
+
);
|
|
56
|
+
```
|
|
57
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# IJBControlled
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBControlled.sol)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
### DIRECTORY
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
```solidity
|
|
10
|
+
function DIRECTORY() external view returns (IJBDirectory);
|
|
11
|
+
```
|
|
12
|
+
|