@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,84 @@
|
|
|
1
|
+
# JBDeadline
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBDeadline.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[IJBRulesetApprovalHook](/src/interfaces/IJBRulesetApprovalHook.sol/interface.IJBRulesetApprovalHook.md)
|
|
6
|
+
|
|
7
|
+
`JBDeadline` is a ruleset approval hook which rejects rulesets if they are not queued at least `duration`
|
|
8
|
+
seconds before the current ruleset ends. In other words, rulesets must be queued before the deadline to take effect.
|
|
9
|
+
|
|
10
|
+
*Project rulesets are stored in a queue. Rulesets take effect after the previous ruleset in the queue ends, and
|
|
11
|
+
only if they are approved by the previous ruleset's approval hook.*
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## State Variables
|
|
15
|
+
### DURATION
|
|
16
|
+
The minimum number of seconds between the time a ruleset is queued and the time it starts. If the
|
|
17
|
+
difference is greater than this number, the ruleset is `Approved`.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
```solidity
|
|
21
|
+
uint256 public immutable override DURATION;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Functions
|
|
26
|
+
### constructor
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
```solidity
|
|
30
|
+
constructor(uint256 duration);
|
|
31
|
+
```
|
|
32
|
+
**Parameters**
|
|
33
|
+
|
|
34
|
+
|Name|Type|Description|
|
|
35
|
+
|----|----|-----------|
|
|
36
|
+
|`duration`|`uint256`|The minimum number of seconds between the time a ruleset is queued and the time it starts for it to be `Approved`.|
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### approvalStatusOf
|
|
40
|
+
|
|
41
|
+
The approval status of a given ruleset.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
```solidity
|
|
45
|
+
function approvalStatusOf(uint256, uint256 rulesetId, uint256 start) public view override returns (JBApprovalStatus);
|
|
46
|
+
```
|
|
47
|
+
**Parameters**
|
|
48
|
+
|
|
49
|
+
|Name|Type|Description|
|
|
50
|
+
|----|----|-----------|
|
|
51
|
+
|`<none>`|`uint256`||
|
|
52
|
+
|`rulesetId`|`uint256`|The ID of the ruleset to check the status of.|
|
|
53
|
+
|`start`|`uint256`|The start timestamp of the ruleset to check the status of.|
|
|
54
|
+
|
|
55
|
+
**Returns**
|
|
56
|
+
|
|
57
|
+
|Name|Type|Description|
|
|
58
|
+
|----|----|-----------|
|
|
59
|
+
|`<none>`|`JBApprovalStatus`|The ruleset's approval status.|
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### supportsInterface
|
|
63
|
+
|
|
64
|
+
Indicates whether this contract adheres to the specified interface.
|
|
65
|
+
|
|
66
|
+
*See [IERC165-supportsInterface](/lib/forge-std/src/mocks/MockERC721.sol/contract.MockERC721.md#supportsinterface).*
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
```solidity
|
|
70
|
+
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool);
|
|
71
|
+
```
|
|
72
|
+
**Parameters**
|
|
73
|
+
|
|
74
|
+
|Name|Type|Description|
|
|
75
|
+
|----|----|-----------|
|
|
76
|
+
|`interfaceId`|`bytes4`|The ID of the interface to check for adherence to.|
|
|
77
|
+
|
|
78
|
+
**Returns**
|
|
79
|
+
|
|
80
|
+
|Name|Type|Description|
|
|
81
|
+
|----|----|-----------|
|
|
82
|
+
|`<none>`|`bool`|A flag indicating if this contract adheres to the specified interface.|
|
|
83
|
+
|
|
84
|
+
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
# JBDirectory
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBDirectory.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[JBPermissioned](/src/abstract/JBPermissioned.sol/abstract.JBPermissioned.md), Ownable, [IJBDirectory](/src/interfaces/IJBDirectory.sol/interface.IJBDirectory.md)
|
|
6
|
+
|
|
7
|
+
`JBDirectory` tracks the terminals and the controller used by each project.
|
|
8
|
+
|
|
9
|
+
*Tracks which `IJBTerminal`s each project is currently accepting funds through, and which `IJBController` is
|
|
10
|
+
managing each project's tokens and rulesets.*
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## State Variables
|
|
14
|
+
### PROJECTS
|
|
15
|
+
Mints ERC-721s that represent project ownership and transfers.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
```solidity
|
|
19
|
+
IJBProjects public immutable override PROJECTS;
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### controllerOf
|
|
24
|
+
The specified project's controller, which dictates how its terminals interact with its tokens and
|
|
25
|
+
rulesets.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
```solidity
|
|
29
|
+
mapping(uint256 projectId => IERC165) public override controllerOf;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### isAllowedToSetFirstController
|
|
34
|
+
Whether the specified address is allowed to set a project's first controller on their behalf.
|
|
35
|
+
|
|
36
|
+
*These addresses/contracts have been vetted by this contract's owner.*
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
```solidity
|
|
40
|
+
mapping(address addr => bool) public override isAllowedToSetFirstController;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### _primaryTerminalOf
|
|
45
|
+
The primary terminal that a project uses for the specified token.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
```solidity
|
|
49
|
+
mapping(uint256 projectId => mapping(address token => IJBTerminal)) internal _primaryTerminalOf;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### _terminalsOf
|
|
54
|
+
The specified project's terminals.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
```solidity
|
|
58
|
+
mapping(uint256 projectId => IJBTerminal[]) internal _terminalsOf;
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## Functions
|
|
63
|
+
### constructor
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
```solidity
|
|
67
|
+
constructor(
|
|
68
|
+
IJBPermissions permissions,
|
|
69
|
+
IJBProjects projects,
|
|
70
|
+
address owner
|
|
71
|
+
)
|
|
72
|
+
JBPermissioned(permissions)
|
|
73
|
+
Ownable(owner);
|
|
74
|
+
```
|
|
75
|
+
**Parameters**
|
|
76
|
+
|
|
77
|
+
|Name|Type|Description|
|
|
78
|
+
|----|----|-----------|
|
|
79
|
+
|`permissions`|`IJBPermissions`|A contract storing permissions.|
|
|
80
|
+
|`projects`|`IJBProjects`|A contract which mints ERC-721s that represent project ownership and transfers.|
|
|
81
|
+
|`owner`|`address`|The address that will own the contract.|
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### primaryTerminalOf
|
|
85
|
+
|
|
86
|
+
The primary terminal that a project uses for the specified token.
|
|
87
|
+
|
|
88
|
+
*Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal
|
|
89
|
+
for it.*
|
|
90
|
+
|
|
91
|
+
*Returns the zero address if no terminal accepts the token.*
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
```solidity
|
|
95
|
+
function primaryTerminalOf(uint256 projectId, address token) external view override returns (IJBTerminal);
|
|
96
|
+
```
|
|
97
|
+
**Parameters**
|
|
98
|
+
|
|
99
|
+
|Name|Type|Description|
|
|
100
|
+
|----|----|-----------|
|
|
101
|
+
|`projectId`|`uint256`|The ID of the project to get the primary terminal of.|
|
|
102
|
+
|`token`|`address`|The token that the terminal accepts.|
|
|
103
|
+
|
|
104
|
+
**Returns**
|
|
105
|
+
|
|
106
|
+
|Name|Type|Description|
|
|
107
|
+
|----|----|-----------|
|
|
108
|
+
|`<none>`|`IJBTerminal`|The primary terminal's address.|
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
### terminalsOf
|
|
112
|
+
|
|
113
|
+
The specified project's terminals.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
```solidity
|
|
117
|
+
function terminalsOf(uint256 projectId) external view override returns (IJBTerminal[] memory);
|
|
118
|
+
```
|
|
119
|
+
**Parameters**
|
|
120
|
+
|
|
121
|
+
|Name|Type|Description|
|
|
122
|
+
|----|----|-----------|
|
|
123
|
+
|`projectId`|`uint256`|The ID of the project to get the terminals of.|
|
|
124
|
+
|
|
125
|
+
**Returns**
|
|
126
|
+
|
|
127
|
+
|Name|Type|Description|
|
|
128
|
+
|----|----|-----------|
|
|
129
|
+
|`<none>`|`IJBTerminal[]`|An array of the project's terminal addresses.|
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
### isTerminalOf
|
|
133
|
+
|
|
134
|
+
Check if a project uses a specific terminal.
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
```solidity
|
|
138
|
+
function isTerminalOf(uint256 projectId, IJBTerminal terminal) public view override returns (bool);
|
|
139
|
+
```
|
|
140
|
+
**Parameters**
|
|
141
|
+
|
|
142
|
+
|Name|Type|Description|
|
|
143
|
+
|----|----|-----------|
|
|
144
|
+
|`projectId`|`uint256`|The ID of the project to check.|
|
|
145
|
+
|`terminal`|`IJBTerminal`|The terminal to check for.|
|
|
146
|
+
|
|
147
|
+
**Returns**
|
|
148
|
+
|
|
149
|
+
|Name|Type|Description|
|
|
150
|
+
|----|----|-----------|
|
|
151
|
+
|`<none>`|`bool`|A flag indicating whether the project uses the terminal.|
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### setIsAllowedToSetFirstController
|
|
155
|
+
|
|
156
|
+
Add or remove an address/contract from a list of trusted addresses which are allowed to set a first
|
|
157
|
+
controller for projects.
|
|
158
|
+
|
|
159
|
+
*Only this contract's owner can call this function.*
|
|
160
|
+
|
|
161
|
+
*These addresses are vetted controllers as well as contracts designed to launch new projects.*
|
|
162
|
+
|
|
163
|
+
*A project can set its own controller without being on this list.*
|
|
164
|
+
|
|
165
|
+
*If you would like to add an address/contract to this list, please reach out to this contract's owner.*
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
```solidity
|
|
169
|
+
function setIsAllowedToSetFirstController(address addr, bool flag) external override onlyOwner;
|
|
170
|
+
```
|
|
171
|
+
**Parameters**
|
|
172
|
+
|
|
173
|
+
|Name|Type|Description|
|
|
174
|
+
|----|----|-----------|
|
|
175
|
+
|`addr`|`address`|The address to allow or not allow.|
|
|
176
|
+
|`flag`|`bool`|Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.|
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
### setControllerOf
|
|
180
|
+
|
|
181
|
+
Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.
|
|
182
|
+
|
|
183
|
+
*Can only be called if:
|
|
184
|
+
- The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an
|
|
185
|
+
address with the owner's permission to `SET_CONTROLLER`.
|
|
186
|
+
- OR the message's sender is the project's current controller.
|
|
187
|
+
- OR an address which `isAllowedToSetFirstController` is setting a project's first controller.*
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
```solidity
|
|
191
|
+
function setControllerOf(uint256 projectId, IERC165 controller) external override;
|
|
192
|
+
```
|
|
193
|
+
**Parameters**
|
|
194
|
+
|
|
195
|
+
|Name|Type|Description|
|
|
196
|
+
|----|----|-----------|
|
|
197
|
+
|`projectId`|`uint256`|The ID of the project whose controller is being set.|
|
|
198
|
+
|`controller`|`IERC165`|The address of the controller to set.|
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### setPrimaryTerminalOf
|
|
202
|
+
|
|
203
|
+
Set a project's primary terminal for a token.
|
|
204
|
+
|
|
205
|
+
*The primary terminal for a token is where payments in that token are routed to by default.*
|
|
206
|
+
|
|
207
|
+
*This is useful in cases where a project has multiple terminals which accept the same token.*
|
|
208
|
+
|
|
209
|
+
*Can only be called by the project's owner, or an address with the owner's permission to
|
|
210
|
+
`SET_PRIMARY_TERMINAL`.*
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
```solidity
|
|
214
|
+
function setPrimaryTerminalOf(uint256 projectId, address token, IJBTerminal terminal) external override;
|
|
215
|
+
```
|
|
216
|
+
**Parameters**
|
|
217
|
+
|
|
218
|
+
|Name|Type|Description|
|
|
219
|
+
|----|----|-----------|
|
|
220
|
+
|`projectId`|`uint256`|The ID of the project whose primary terminal is being set.|
|
|
221
|
+
|`token`|`address`|The token to set the primary terminal for.|
|
|
222
|
+
|`terminal`|`IJBTerminal`|The terminal being set as the primary terminal.|
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
### setTerminalsOf
|
|
226
|
+
|
|
227
|
+
Set a project's terminals.
|
|
228
|
+
|
|
229
|
+
*Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or
|
|
230
|
+
the project's controller.*
|
|
231
|
+
|
|
232
|
+
*Unless the caller is the project's controller, the project's ruleset must allow setting terminals.*
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
```solidity
|
|
236
|
+
function setTerminalsOf(uint256 projectId, IJBTerminal[] calldata terminals) external override;
|
|
237
|
+
```
|
|
238
|
+
**Parameters**
|
|
239
|
+
|
|
240
|
+
|Name|Type|Description|
|
|
241
|
+
|----|----|-----------|
|
|
242
|
+
|`projectId`|`uint256`|The ID of the project whose terminals are being set.|
|
|
243
|
+
|`terminals`|`IJBTerminal[]`|An array of terminal addresses to set for the project.|
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
### _addTerminalIfNeeded
|
|
247
|
+
|
|
248
|
+
If a terminal hasn't already been added to a project's list of terminals, add it.
|
|
249
|
+
|
|
250
|
+
*The project's ruleset must have `allowSetTerminals` set to `true`.*
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
```solidity
|
|
254
|
+
function _addTerminalIfNeeded(uint256 projectId, IJBTerminal terminal) internal;
|
|
255
|
+
```
|
|
256
|
+
**Parameters**
|
|
257
|
+
|
|
258
|
+
|Name|Type|Description|
|
|
259
|
+
|----|----|-----------|
|
|
260
|
+
|`projectId`|`uint256`|The ID of the project to add the terminal to.|
|
|
261
|
+
|`terminal`|`IJBTerminal`|The terminal to add.|
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
## Errors
|
|
265
|
+
### JBDirectory_DuplicateTerminals
|
|
266
|
+
|
|
267
|
+
```solidity
|
|
268
|
+
error JBDirectory_DuplicateTerminals(IJBTerminal terminal);
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### JBDirectory_InvalidProjectIdInDirectory
|
|
272
|
+
|
|
273
|
+
```solidity
|
|
274
|
+
error JBDirectory_InvalidProjectIdInDirectory(uint256 projectId, uint256 limit);
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### JBDirectory_SetControllerNotAllowed
|
|
278
|
+
|
|
279
|
+
```solidity
|
|
280
|
+
error JBDirectory_SetControllerNotAllowed();
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### JBDirectory_SetTerminalsNotAllowed
|
|
284
|
+
|
|
285
|
+
```solidity
|
|
286
|
+
error JBDirectory_SetTerminalsNotAllowed();
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### JBDirectory_TokenNotAccepted
|
|
290
|
+
|
|
291
|
+
```solidity
|
|
292
|
+
error JBDirectory_TokenNotAccepted(uint256 projectId, address token, IJBTerminal terminal);
|
|
293
|
+
```
|
|
294
|
+
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# JBERC20
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBERC20.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
ERC20Votes, ERC20Permit, Ownable, [IJBToken](/src/interfaces/IJBToken.sol/interface.IJBToken.md)
|
|
6
|
+
|
|
7
|
+
An ERC-20 token that can be used by a project in `JBTokens` and `JBController`.
|
|
8
|
+
|
|
9
|
+
*By default, a project uses "credits" to track balances. Once a project sets their `IJBToken` using
|
|
10
|
+
`JBController.deployERC20For(...)` or `JBController.setTokenFor(...)`, credits can be redeemed to claim tokens.*
|
|
11
|
+
|
|
12
|
+
*`JBController.deployERC20For(...)` deploys a `JBERC20` contract and sets it as the project's token.*
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## State Variables
|
|
16
|
+
### _name
|
|
17
|
+
The token's name.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
```solidity
|
|
21
|
+
string private _name;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### _symbol
|
|
26
|
+
The token's symbol.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
```solidity
|
|
30
|
+
string private _symbol;
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## Functions
|
|
35
|
+
### constructor
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
```solidity
|
|
39
|
+
constructor() Ownable(address(this)) ERC20("invalid", "invalid") ERC20Permit("JBToken");
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### balanceOf
|
|
43
|
+
|
|
44
|
+
The balance of the given address.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
```solidity
|
|
48
|
+
function balanceOf(address account) public view override(ERC20, IJBToken) returns (uint256);
|
|
49
|
+
```
|
|
50
|
+
**Parameters**
|
|
51
|
+
|
|
52
|
+
|Name|Type|Description|
|
|
53
|
+
|----|----|-----------|
|
|
54
|
+
|`account`|`address`|The account to get the balance of.|
|
|
55
|
+
|
|
56
|
+
**Returns**
|
|
57
|
+
|
|
58
|
+
|Name|Type|Description|
|
|
59
|
+
|----|----|-----------|
|
|
60
|
+
|`<none>`|`uint256`|The number of tokens owned by the `account`, as a fixed point number with 18 decimals.|
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### canBeAddedTo
|
|
64
|
+
|
|
65
|
+
This token can only be added to a project when its created by the `JBTokens` contract.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
```solidity
|
|
69
|
+
function canBeAddedTo(uint256) external pure override returns (bool);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### decimals
|
|
73
|
+
|
|
74
|
+
The number of decimals used for this token's fixed point accounting.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
```solidity
|
|
78
|
+
function decimals() public view override(ERC20, IJBToken) returns (uint8);
|
|
79
|
+
```
|
|
80
|
+
**Returns**
|
|
81
|
+
|
|
82
|
+
|Name|Type|Description|
|
|
83
|
+
|----|----|-----------|
|
|
84
|
+
|`<none>`|`uint8`|The number of decimals.|
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
### name
|
|
88
|
+
|
|
89
|
+
The token's name.
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
```solidity
|
|
93
|
+
function name() public view virtual override returns (string memory);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### symbol
|
|
97
|
+
|
|
98
|
+
The token's symbol.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
```solidity
|
|
102
|
+
function symbol() public view virtual override returns (string memory);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### totalSupply
|
|
106
|
+
|
|
107
|
+
The total supply of this ERC20 i.e. the total number of tokens in existence.
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
```solidity
|
|
111
|
+
function totalSupply() public view override(ERC20, IJBToken) returns (uint256);
|
|
112
|
+
```
|
|
113
|
+
**Returns**
|
|
114
|
+
|
|
115
|
+
|Name|Type|Description|
|
|
116
|
+
|----|----|-----------|
|
|
117
|
+
|`<none>`|`uint256`|The total supply of this ERC20, as a fixed point number.|
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
### burn
|
|
121
|
+
|
|
122
|
+
Burn some outstanding tokens.
|
|
123
|
+
|
|
124
|
+
*Can only be called by this contract's owner.*
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
```solidity
|
|
128
|
+
function burn(address account, uint256 amount) external override onlyOwner;
|
|
129
|
+
```
|
|
130
|
+
**Parameters**
|
|
131
|
+
|
|
132
|
+
|Name|Type|Description|
|
|
133
|
+
|----|----|-----------|
|
|
134
|
+
|`account`|`address`|The address to burn tokens from.|
|
|
135
|
+
|`amount`|`uint256`|The amount of tokens to burn, as a fixed point number with 18 decimals.|
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### mint
|
|
139
|
+
|
|
140
|
+
Mints more of this token.
|
|
141
|
+
|
|
142
|
+
*Can only be called by this contract's owner.*
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
```solidity
|
|
146
|
+
function mint(address account, uint256 amount) external override onlyOwner;
|
|
147
|
+
```
|
|
148
|
+
**Parameters**
|
|
149
|
+
|
|
150
|
+
|Name|Type|Description|
|
|
151
|
+
|----|----|-----------|
|
|
152
|
+
|`account`|`address`|The address to mint the new tokens to.|
|
|
153
|
+
|`amount`|`uint256`|The amount of tokens to mint, as a fixed point number with 18 decimals.|
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
### initialize
|
|
157
|
+
|
|
158
|
+
Initializes the token.
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
```solidity
|
|
162
|
+
function initialize(string memory name_, string memory symbol_, address owner) public override;
|
|
163
|
+
```
|
|
164
|
+
**Parameters**
|
|
165
|
+
|
|
166
|
+
|Name|Type|Description|
|
|
167
|
+
|----|----|-----------|
|
|
168
|
+
|`name_`|`string`|The token's name.|
|
|
169
|
+
|`symbol_`|`string`|The token's symbol.|
|
|
170
|
+
|`owner`|`address`|The token contract's owner.|
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
### nonces
|
|
174
|
+
|
|
175
|
+
Required override.
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
```solidity
|
|
179
|
+
function nonces(address owner) public view virtual override(ERC20Permit, Nonces) returns (uint256);
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### _update
|
|
183
|
+
|
|
184
|
+
Required override.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
```solidity
|
|
188
|
+
function _update(address from, address to, uint256 value) internal virtual override(ERC20, ERC20Votes);
|
|
189
|
+
```
|
|
190
|
+
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# JBFeelessAddresses
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBFeelessAddresses.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
Ownable, [IJBFeelessAddresses](/src/interfaces/IJBFeelessAddresses.sol/interface.IJBFeelessAddresses.md), IERC165
|
|
6
|
+
|
|
7
|
+
Stores a list of addresses that shouldn't incur fees when sending or receiving payments.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## State Variables
|
|
11
|
+
### isFeeless
|
|
12
|
+
Check if the specified address is feeless.
|
|
13
|
+
|
|
14
|
+
*Feeless addresses can receive payouts without incurring a fee.*
|
|
15
|
+
|
|
16
|
+
*Feeless addresses can use the surplus allowance without incurring a fee.*
|
|
17
|
+
|
|
18
|
+
*Feeless addresses can be the beneficary of cash outs without incurring a fee.*
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
```solidity
|
|
22
|
+
mapping(address addr => bool) public override isFeeless;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Functions
|
|
27
|
+
### constructor
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
```solidity
|
|
31
|
+
constructor(address owner) Ownable(owner);
|
|
32
|
+
```
|
|
33
|
+
**Parameters**
|
|
34
|
+
|
|
35
|
+
|Name|Type|Description|
|
|
36
|
+
|----|----|-----------|
|
|
37
|
+
|`owner`|`address`|This contract's owner.|
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### supportsInterface
|
|
41
|
+
|
|
42
|
+
Indicates whether this contract adheres to the specified interface.
|
|
43
|
+
|
|
44
|
+
*See [IERC165-supportsInterface](/src/JBDeadline.sol/contract.JBDeadline.md#supportsinterface).*
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
```solidity
|
|
48
|
+
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool);
|
|
49
|
+
```
|
|
50
|
+
**Parameters**
|
|
51
|
+
|
|
52
|
+
|Name|Type|Description|
|
|
53
|
+
|----|----|-----------|
|
|
54
|
+
|`interfaceId`|`bytes4`|The ID of the interface to check for adherence to.|
|
|
55
|
+
|
|
56
|
+
**Returns**
|
|
57
|
+
|
|
58
|
+
|Name|Type|Description|
|
|
59
|
+
|----|----|-----------|
|
|
60
|
+
|`<none>`|`bool`|A flag indicating if the provided interface ID is supported.|
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### setFeelessAddress
|
|
64
|
+
|
|
65
|
+
Sets whether an address is feeless.
|
|
66
|
+
|
|
67
|
+
*Can only be called by this contract's owner.*
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
```solidity
|
|
71
|
+
function setFeelessAddress(address addr, bool flag) external virtual override onlyOwner;
|
|
72
|
+
```
|
|
73
|
+
**Parameters**
|
|
74
|
+
|
|
75
|
+
|Name|Type|Description|
|
|
76
|
+
|----|----|-----------|
|
|
77
|
+
|`addr`|`address`|The address to set as feeless or not feeless.|
|
|
78
|
+
|`flag`|`bool`|Whether the address should be feeless (`true`) or not feeless (`false`).|
|
|
79
|
+
|
|
80
|
+
|