@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,199 @@
|
|
|
1
|
+
# JBPermissions
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBPermissions.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[IJBPermissions](/src/interfaces/IJBPermissions.sol/interface.IJBPermissions.md)
|
|
6
|
+
|
|
7
|
+
Stores permissions for all addresses and operators. Addresses can give permissions to any other address
|
|
8
|
+
(i.e. an *operator*) to execute specific operations on their behalf.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## State Variables
|
|
12
|
+
### WILDCARD_PROJECT_ID
|
|
13
|
+
The project ID considered a wildcard, meaning it will grant permissions to all projects.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```solidity
|
|
17
|
+
uint256 public constant override WILDCARD_PROJECT_ID = 0;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### permissionsOf
|
|
22
|
+
The permissions that an operator has been given by an account for a specific project.
|
|
23
|
+
|
|
24
|
+
*An account can give an operator permissions that only pertain to a specific project ID.*
|
|
25
|
+
|
|
26
|
+
*There is no project with a ID of 0 – this ID is a wildcard which gives an operator permissions pertaining
|
|
27
|
+
to *all* project IDs on an account's behalf. Use this with caution.*
|
|
28
|
+
|
|
29
|
+
*Permissions are stored in a packed `uint256`. Each of the 256 bits represents the on/off state of a
|
|
30
|
+
permission. Applications can specify the significance of each permission ID.*
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
```solidity
|
|
34
|
+
mapping(address operator => mapping(address account => mapping(uint256 projectId => uint256))) public override
|
|
35
|
+
permissionsOf;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Functions
|
|
40
|
+
### hasPermission
|
|
41
|
+
|
|
42
|
+
Check if an operator has a specific permission for a specific address and project ID.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
```solidity
|
|
46
|
+
function hasPermission(
|
|
47
|
+
address operator,
|
|
48
|
+
address account,
|
|
49
|
+
uint256 projectId,
|
|
50
|
+
uint256 permissionId,
|
|
51
|
+
bool includeRoot,
|
|
52
|
+
bool includeWildcardProjectId
|
|
53
|
+
)
|
|
54
|
+
public
|
|
55
|
+
view
|
|
56
|
+
override
|
|
57
|
+
returns (bool);
|
|
58
|
+
```
|
|
59
|
+
**Parameters**
|
|
60
|
+
|
|
61
|
+
|Name|Type|Description|
|
|
62
|
+
|----|----|-----------|
|
|
63
|
+
|`operator`|`address`|The operator to check.|
|
|
64
|
+
|`account`|`address`|The account being operated on behalf of.|
|
|
65
|
+
|`projectId`|`uint256`|The project ID that the operator has permission to operate under. 0 represents all projects.|
|
|
66
|
+
|`permissionId`|`uint256`|The permission ID to check for.|
|
|
67
|
+
|`includeRoot`|`bool`|A flag indicating if the return value should default to true if the operator has the ROOT permission.|
|
|
68
|
+
|`includeWildcardProjectId`|`bool`|A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.|
|
|
69
|
+
|
|
70
|
+
**Returns**
|
|
71
|
+
|
|
72
|
+
|Name|Type|Description|
|
|
73
|
+
|----|----|-----------|
|
|
74
|
+
|`<none>`|`bool`|A flag indicating whether the operator has the specified permission.|
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### hasPermissions
|
|
78
|
+
|
|
79
|
+
Check if an operator has all of the specified permissions for a specific address and project ID.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
```solidity
|
|
83
|
+
function hasPermissions(
|
|
84
|
+
address operator,
|
|
85
|
+
address account,
|
|
86
|
+
uint256 projectId,
|
|
87
|
+
uint256[] calldata permissionIds,
|
|
88
|
+
bool includeRoot,
|
|
89
|
+
bool includeWildcardProjectId
|
|
90
|
+
)
|
|
91
|
+
external
|
|
92
|
+
view
|
|
93
|
+
override
|
|
94
|
+
returns (bool);
|
|
95
|
+
```
|
|
96
|
+
**Parameters**
|
|
97
|
+
|
|
98
|
+
|Name|Type|Description|
|
|
99
|
+
|----|----|-----------|
|
|
100
|
+
|`operator`|`address`|The operator to check.|
|
|
101
|
+
|`account`|`address`|The account being operated on behalf of.|
|
|
102
|
+
|`projectId`|`uint256`|The project ID that the operator has permission to operate under. 0 represents all projects.|
|
|
103
|
+
|`permissionIds`|`uint256[]`|An array of permission IDs to check for.|
|
|
104
|
+
|`includeRoot`|`bool`|A flag indicating if the return value should default to true if the operator has the ROOT permission.|
|
|
105
|
+
|`includeWildcardProjectId`|`bool`|A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.|
|
|
106
|
+
|
|
107
|
+
**Returns**
|
|
108
|
+
|
|
109
|
+
|Name|Type|Description|
|
|
110
|
+
|----|----|-----------|
|
|
111
|
+
|`<none>`|`bool`|A flag indicating whether the operator has all specified permissions.|
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
### _includesPermission
|
|
115
|
+
|
|
116
|
+
Checks if a permission is included in a packed permissions data.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
```solidity
|
|
120
|
+
function _includesPermission(uint256 permissions, uint256 permissionId) internal pure returns (bool);
|
|
121
|
+
```
|
|
122
|
+
**Parameters**
|
|
123
|
+
|
|
124
|
+
|Name|Type|Description|
|
|
125
|
+
|----|----|-----------|
|
|
126
|
+
|`permissions`|`uint256`|The packed permissions to check.|
|
|
127
|
+
|`permissionId`|`uint256`|The ID of the permission to check for.|
|
|
128
|
+
|
|
129
|
+
**Returns**
|
|
130
|
+
|
|
131
|
+
|Name|Type|Description|
|
|
132
|
+
|----|----|-----------|
|
|
133
|
+
|`<none>`|`bool`|A flag indicating whether the permission is included.|
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
### _packedPermissions
|
|
137
|
+
|
|
138
|
+
Converts an array of permission IDs to a packed `uint256`.
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
```solidity
|
|
142
|
+
function _packedPermissions(uint8[] calldata permissionIds) internal pure returns (uint256 packed);
|
|
143
|
+
```
|
|
144
|
+
**Parameters**
|
|
145
|
+
|
|
146
|
+
|Name|Type|Description|
|
|
147
|
+
|----|----|-----------|
|
|
148
|
+
|`permissionIds`|`uint8[]`|The IDs of the permissions to pack.|
|
|
149
|
+
|
|
150
|
+
**Returns**
|
|
151
|
+
|
|
152
|
+
|Name|Type|Description|
|
|
153
|
+
|----|----|-----------|
|
|
154
|
+
|`packed`|`uint256`|The packed value.|
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
### setPermissionsFor
|
|
158
|
+
|
|
159
|
+
Sets permissions for an operator.
|
|
160
|
+
|
|
161
|
+
*Only an address can give permissions to or revoke permissions from its operators.*
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
```solidity
|
|
165
|
+
function setPermissionsFor(address account, JBPermissionsData calldata permissionsData) external override;
|
|
166
|
+
```
|
|
167
|
+
**Parameters**
|
|
168
|
+
|
|
169
|
+
|Name|Type|Description|
|
|
170
|
+
|----|----|-----------|
|
|
171
|
+
|`account`|`address`|The account setting its operators' permissions.|
|
|
172
|
+
|`permissionsData`|`JBPermissionsData`|The data which specifies the permissions the operator is being given.|
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
## Errors
|
|
176
|
+
### JBPermissions_CantSetRootPermissionForWildcardProject
|
|
177
|
+
|
|
178
|
+
```solidity
|
|
179
|
+
error JBPermissions_CantSetRootPermissionForWildcardProject();
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### JBPermissions_NoZeroPermission
|
|
183
|
+
|
|
184
|
+
```solidity
|
|
185
|
+
error JBPermissions_NoZeroPermission();
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### JBPermissions_PermissionIdOutOfBounds
|
|
189
|
+
|
|
190
|
+
```solidity
|
|
191
|
+
error JBPermissions_PermissionIdOutOfBounds(uint256 permissionId);
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### JBPermissions_Unauthorized
|
|
195
|
+
|
|
196
|
+
```solidity
|
|
197
|
+
error JBPermissions_Unauthorized();
|
|
198
|
+
```
|
|
199
|
+
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# JBPrices
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBPrices.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[JBControlled](/src/abstract/JBControlled.sol/abstract.JBControlled.md), [JBPermissioned](/src/abstract/JBPermissioned.sol/abstract.JBPermissioned.md), Ownable, [IJBPrices](/src/interfaces/IJBPrices.sol/interface.IJBPrices.md)
|
|
6
|
+
|
|
7
|
+
Manages and normalizes price feeds. Price feeds are contracts which return the "pricing currency" cost of 1
|
|
8
|
+
"unit currency".
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## State Variables
|
|
12
|
+
### DEFAULT_PROJECT_ID
|
|
13
|
+
The ID to store default values in.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```solidity
|
|
17
|
+
uint256 public constant override DEFAULT_PROJECT_ID = 0;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### PROJECTS
|
|
22
|
+
Mints ERC-721s that represent project ownership and transfers.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
```solidity
|
|
26
|
+
IJBProjects public immutable override PROJECTS;
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### priceFeedFor
|
|
31
|
+
The available price feeds.
|
|
32
|
+
|
|
33
|
+
*The feed returns the `pricingCurrency` cost for one unit of the `unitCurrency`.*
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
```solidity
|
|
37
|
+
mapping(uint256 projectId => mapping(uint256 pricingCurrency => mapping(uint256 unitCurrency => IJBPriceFeed)))
|
|
38
|
+
public
|
|
39
|
+
override priceFeedFor;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## Functions
|
|
44
|
+
### constructor
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
```solidity
|
|
48
|
+
constructor(
|
|
49
|
+
IJBDirectory directory,
|
|
50
|
+
IJBPermissions permissions,
|
|
51
|
+
IJBProjects projects,
|
|
52
|
+
address owner
|
|
53
|
+
)
|
|
54
|
+
JBControlled(directory)
|
|
55
|
+
JBPermissioned(permissions)
|
|
56
|
+
Ownable(owner);
|
|
57
|
+
```
|
|
58
|
+
**Parameters**
|
|
59
|
+
|
|
60
|
+
|Name|Type|Description|
|
|
61
|
+
|----|----|-----------|
|
|
62
|
+
|`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
|
|
63
|
+
|`permissions`|`IJBPermissions`|A contract storing permissions.|
|
|
64
|
+
|`projects`|`IJBProjects`|A contract which mints ERC-721s that represent project ownership and transfers.|
|
|
65
|
+
|`owner`|`address`|The address that will own the contract.|
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### pricePerUnitOf
|
|
69
|
+
|
|
70
|
+
Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
```solidity
|
|
74
|
+
function pricePerUnitOf(
|
|
75
|
+
uint256 projectId,
|
|
76
|
+
uint256 pricingCurrency,
|
|
77
|
+
uint256 unitCurrency,
|
|
78
|
+
uint256 decimals
|
|
79
|
+
)
|
|
80
|
+
public
|
|
81
|
+
view
|
|
82
|
+
override
|
|
83
|
+
returns (uint256);
|
|
84
|
+
```
|
|
85
|
+
**Parameters**
|
|
86
|
+
|
|
87
|
+
|Name|Type|Description|
|
|
88
|
+
|----|----|-----------|
|
|
89
|
+
|`projectId`|`uint256`|The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.|
|
|
90
|
+
|`pricingCurrency`|`uint256`|The currency the feed's resulting price is in terms of.|
|
|
91
|
+
|`unitCurrency`|`uint256`|The currency being priced by the feed.|
|
|
92
|
+
|`decimals`|`uint256`|The number of decimals the returned fixed point price should include.|
|
|
93
|
+
|
|
94
|
+
**Returns**
|
|
95
|
+
|
|
96
|
+
|Name|Type|Description|
|
|
97
|
+
|----|----|-----------|
|
|
98
|
+
|`<none>`|`uint256`|The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.|
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### addPriceFeedFor
|
|
102
|
+
|
|
103
|
+
Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.
|
|
104
|
+
|
|
105
|
+
*Price feeds can only be added, not modified or removed.*
|
|
106
|
+
|
|
107
|
+
*This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.*
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
```solidity
|
|
111
|
+
function addPriceFeedFor(
|
|
112
|
+
uint256 projectId,
|
|
113
|
+
uint256 pricingCurrency,
|
|
114
|
+
uint256 unitCurrency,
|
|
115
|
+
IJBPriceFeed feed
|
|
116
|
+
)
|
|
117
|
+
external
|
|
118
|
+
override;
|
|
119
|
+
```
|
|
120
|
+
**Parameters**
|
|
121
|
+
|
|
122
|
+
|Name|Type|Description|
|
|
123
|
+
|----|----|-----------|
|
|
124
|
+
|`projectId`|`uint256`|The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.|
|
|
125
|
+
|`pricingCurrency`|`uint256`|The currency the feed's output price is in terms of.|
|
|
126
|
+
|`unitCurrency`|`uint256`|The currency being priced by the feed.|
|
|
127
|
+
|`feed`|`IJBPriceFeed`|The address of the price feed to add.|
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## Errors
|
|
131
|
+
### JBPrices_PriceFeedAlreadyExists
|
|
132
|
+
|
|
133
|
+
```solidity
|
|
134
|
+
error JBPrices_PriceFeedAlreadyExists(IJBPriceFeed feed);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### JBPrices_PriceFeedNotFound
|
|
138
|
+
|
|
139
|
+
```solidity
|
|
140
|
+
error JBPrices_PriceFeedNotFound();
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### JBPrices_ZeroPricingCurrency
|
|
144
|
+
|
|
145
|
+
```solidity
|
|
146
|
+
error JBPrices_ZeroPricingCurrency();
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### JBPrices_ZeroUnitCurrency
|
|
150
|
+
|
|
151
|
+
```solidity
|
|
152
|
+
error JBPrices_ZeroUnitCurrency();
|
|
153
|
+
```
|
|
154
|
+
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# JBProjects
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBProjects.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
ERC721, Ownable, [IJBProjects](/src/interfaces/IJBProjects.sol/interface.IJBProjects.md)
|
|
6
|
+
|
|
7
|
+
Stores project ownership and metadata.
|
|
8
|
+
|
|
9
|
+
*Projects are represented as ERC-721s.*
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## State Variables
|
|
13
|
+
### count
|
|
14
|
+
The number of projects that have been created using this contract.
|
|
15
|
+
|
|
16
|
+
*The count is incremented with each new project created.*
|
|
17
|
+
|
|
18
|
+
*The resulting ERC-721 token ID for each project is the newly incremented count value.*
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
```solidity
|
|
22
|
+
uint256 public override count;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### tokenUriResolver
|
|
27
|
+
The contract resolving each project ID to its ERC721 URI.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
```solidity
|
|
31
|
+
IJBTokenUriResolver public override tokenUriResolver;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Functions
|
|
36
|
+
### constructor
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
```solidity
|
|
40
|
+
constructor(address owner, address feeProjectOwner) ERC721("Juicebox Projects", "JUICEBOX") Ownable(owner);
|
|
41
|
+
```
|
|
42
|
+
**Parameters**
|
|
43
|
+
|
|
44
|
+
|Name|Type|Description|
|
|
45
|
+
|----|----|-----------|
|
|
46
|
+
|`owner`|`address`|The owner of the contract who can set metadata.|
|
|
47
|
+
|`feeProjectOwner`|`address`|The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.|
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### supportsInterface
|
|
51
|
+
|
|
52
|
+
Indicates whether this contract adheres to the specified interface.
|
|
53
|
+
|
|
54
|
+
*See [IERC165-supportsInterface](/src/JBFeelessAddresses.sol/contract.JBFeelessAddresses.md#supportsinterface).*
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
```solidity
|
|
58
|
+
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool);
|
|
59
|
+
```
|
|
60
|
+
**Parameters**
|
|
61
|
+
|
|
62
|
+
|Name|Type|Description|
|
|
63
|
+
|----|----|-----------|
|
|
64
|
+
|`interfaceId`|`bytes4`|The ID of the interface to check for adherence to.|
|
|
65
|
+
|
|
66
|
+
**Returns**
|
|
67
|
+
|
|
68
|
+
|Name|Type|Description|
|
|
69
|
+
|----|----|-----------|
|
|
70
|
+
|`<none>`|`bool`|A flag indicating if the provided interface ID is supported.|
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### tokenURI
|
|
74
|
+
|
|
75
|
+
Returns the URI where the ERC-721 standard JSON of a project is hosted.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
```solidity
|
|
79
|
+
function tokenURI(uint256 projectId) public view override returns (string memory);
|
|
80
|
+
```
|
|
81
|
+
**Parameters**
|
|
82
|
+
|
|
83
|
+
|Name|Type|Description|
|
|
84
|
+
|----|----|-----------|
|
|
85
|
+
|`projectId`|`uint256`|The ID of the project to get a URI of.|
|
|
86
|
+
|
|
87
|
+
**Returns**
|
|
88
|
+
|
|
89
|
+
|Name|Type|Description|
|
|
90
|
+
|----|----|-----------|
|
|
91
|
+
|`<none>`|`string`|The token URI to use for the provided `projectId`.|
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
### setTokenUriResolver
|
|
95
|
+
|
|
96
|
+
Sets the address of the resolver used to retrieve the tokenURI of projects.
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
```solidity
|
|
100
|
+
function setTokenUriResolver(IJBTokenUriResolver resolver) external override onlyOwner;
|
|
101
|
+
```
|
|
102
|
+
**Parameters**
|
|
103
|
+
|
|
104
|
+
|Name|Type|Description|
|
|
105
|
+
|----|----|-----------|
|
|
106
|
+
|`resolver`|`IJBTokenUriResolver`|The address of the new resolver.|
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
### createFor
|
|
110
|
+
|
|
111
|
+
Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.
|
|
112
|
+
|
|
113
|
+
*Anyone can create a project on an owner's behalf.*
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
```solidity
|
|
117
|
+
function createFor(address owner) public override returns (uint256 projectId);
|
|
118
|
+
```
|
|
119
|
+
**Parameters**
|
|
120
|
+
|
|
121
|
+
|Name|Type|Description|
|
|
122
|
+
|----|----|-----------|
|
|
123
|
+
|`owner`|`address`|The address that will be the owner of the project.|
|
|
124
|
+
|
|
125
|
+
**Returns**
|
|
126
|
+
|
|
127
|
+
|Name|Type|Description|
|
|
128
|
+
|----|----|-----------|
|
|
129
|
+
|`projectId`|`uint256`|The token ID of the newly created project.|
|
|
130
|
+
|
|
131
|
+
|