@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,591 @@
|
|
|
1
|
+
# JBTerminalStore
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBTerminalStore.sol)
|
|
3
|
+
|
|
4
|
+
**Inherits:**
|
|
5
|
+
[IJBTerminalStore](/src/interfaces/IJBTerminalStore.sol/interface.IJBTerminalStore.md)
|
|
6
|
+
|
|
7
|
+
Manages all bookkeeping for inflows and outflows of funds from any terminal address.
|
|
8
|
+
|
|
9
|
+
*This contract expects a project's controller to be an `IJBController`.*
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## State Variables
|
|
13
|
+
### _MAX_FIXED_POINT_FIDELITY
|
|
14
|
+
Constrains `mulDiv` operations on fixed point numbers to a maximum number of decimal points of persisted
|
|
15
|
+
fidelity.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
```solidity
|
|
19
|
+
uint256 internal constant _MAX_FIXED_POINT_FIDELITY = 18;
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### DIRECTORY
|
|
24
|
+
The directory of terminals and controllers for projects.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
```solidity
|
|
28
|
+
IJBDirectory public immutable override DIRECTORY;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### PRICES
|
|
33
|
+
The contract that exposes price feeds.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
```solidity
|
|
37
|
+
IJBPrices public immutable override PRICES;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### RULESETS
|
|
42
|
+
The contract storing and managing project rulesets.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
```solidity
|
|
46
|
+
IJBRulesets public immutable override RULESETS;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### balanceOf
|
|
51
|
+
A project's balance of a specific token within a terminal.
|
|
52
|
+
|
|
53
|
+
*The balance is represented as a fixed point number with the same amount of decimals as its relative
|
|
54
|
+
terminal.*
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
```solidity
|
|
58
|
+
mapping(address terminal => mapping(uint256 projectId => mapping(address token => uint256))) public override balanceOf;
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### usedPayoutLimitOf
|
|
63
|
+
The currency-denominated amount of funds that a project has already paid out from its payout limit
|
|
64
|
+
during the current ruleset for each terminal, in terms of the payout limit's currency.
|
|
65
|
+
|
|
66
|
+
*Increases as projects pay out funds.*
|
|
67
|
+
|
|
68
|
+
*The used payout limit is represented as a fixed point number with the same amount of decimals as the
|
|
69
|
+
terminal it applies to.*
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
```solidity
|
|
73
|
+
mapping(
|
|
74
|
+
address terminal
|
|
75
|
+
=> mapping(
|
|
76
|
+
uint256 projectId
|
|
77
|
+
=> mapping(address token => mapping(uint256 rulesetCycleNumber => mapping(uint256 currency => uint256)))
|
|
78
|
+
)
|
|
79
|
+
) public override usedPayoutLimitOf;
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### usedSurplusAllowanceOf
|
|
84
|
+
The currency-denominated amounts of funds that a project has used from its surplus allowance during the
|
|
85
|
+
current ruleset for each terminal, in terms of the surplus allowance's currency.
|
|
86
|
+
|
|
87
|
+
*Increases as projects use their allowance.*
|
|
88
|
+
|
|
89
|
+
*The used surplus allowance is represented as a fixed point number with the same amount of decimals as the
|
|
90
|
+
terminal it applies to.*
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
```solidity
|
|
94
|
+
mapping(
|
|
95
|
+
address terminal
|
|
96
|
+
=> mapping(
|
|
97
|
+
uint256 projectId
|
|
98
|
+
=> mapping(address token => mapping(uint256 rulesetId => mapping(uint256 currency => uint256)))
|
|
99
|
+
)
|
|
100
|
+
) public override usedSurplusAllowanceOf;
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
## Functions
|
|
105
|
+
### constructor
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
```solidity
|
|
109
|
+
constructor(IJBDirectory directory, IJBPrices prices, IJBRulesets rulesets);
|
|
110
|
+
```
|
|
111
|
+
**Parameters**
|
|
112
|
+
|
|
113
|
+
|Name|Type|Description|
|
|
114
|
+
|----|----|-----------|
|
|
115
|
+
|`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
|
|
116
|
+
|`prices`|`IJBPrices`|A contract that exposes price feeds.|
|
|
117
|
+
|`rulesets`|`IJBRulesets`|A contract storing and managing project rulesets.|
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
### currentReclaimableSurplusOf
|
|
121
|
+
|
|
122
|
+
Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's
|
|
123
|
+
tokens based on its current ruleset and the given total project token supply and total terminal token surplus.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
```solidity
|
|
127
|
+
function currentReclaimableSurplusOf(
|
|
128
|
+
uint256 projectId,
|
|
129
|
+
uint256 cashOutCount,
|
|
130
|
+
uint256 totalSupply,
|
|
131
|
+
uint256 surplus
|
|
132
|
+
)
|
|
133
|
+
external
|
|
134
|
+
view
|
|
135
|
+
override
|
|
136
|
+
returns (uint256);
|
|
137
|
+
```
|
|
138
|
+
**Parameters**
|
|
139
|
+
|
|
140
|
+
|Name|Type|Description|
|
|
141
|
+
|----|----|-----------|
|
|
142
|
+
|`projectId`|`uint256`|The ID of the project whose project tokens would be cashed out.|
|
|
143
|
+
|`cashOutCount`|`uint256`|The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.|
|
|
144
|
+
|`totalSupply`|`uint256`|The total project token supply, as a fixed point number with 18 decimals.|
|
|
145
|
+
|`surplus`|`uint256`|The total terminal token surplus amount, as a fixed point number.|
|
|
146
|
+
|
|
147
|
+
**Returns**
|
|
148
|
+
|
|
149
|
+
|Name|Type|Description|
|
|
150
|
+
|----|----|-----------|
|
|
151
|
+
|`<none>`|`uint256`|The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.|
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### currentReclaimableSurplusOf
|
|
155
|
+
|
|
156
|
+
Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a
|
|
157
|
+
given number of tokens, based on the total token supply and total surplus.
|
|
158
|
+
|
|
159
|
+
*The returned amount in terms of the specified `terminal`'s base currency.*
|
|
160
|
+
|
|
161
|
+
*The returned amount is represented as a fixed point number with the same amount of decimals as the
|
|
162
|
+
specified terminal.*
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
```solidity
|
|
166
|
+
function currentReclaimableSurplusOf(
|
|
167
|
+
uint256 projectId,
|
|
168
|
+
uint256 cashOutCount,
|
|
169
|
+
IJBTerminal[] calldata terminals,
|
|
170
|
+
JBAccountingContext[] calldata accountingContexts,
|
|
171
|
+
uint256 decimals,
|
|
172
|
+
uint256 currency
|
|
173
|
+
)
|
|
174
|
+
external
|
|
175
|
+
view
|
|
176
|
+
override
|
|
177
|
+
returns (uint256);
|
|
178
|
+
```
|
|
179
|
+
**Parameters**
|
|
180
|
+
|
|
181
|
+
|Name|Type|Description|
|
|
182
|
+
|----|----|-----------|
|
|
183
|
+
|`projectId`|`uint256`|The ID of the project whose tokens would be cashed out.|
|
|
184
|
+
|`cashOutCount`|`uint256`|The number of tokens that would be cashed out, as a fixed point number with 18 decimals.|
|
|
185
|
+
|`terminals`|`IJBTerminal[]`|The terminals that would be cashed out from. If this is an empty array, surplus within all the project's terminals are considered.|
|
|
186
|
+
|`accountingContexts`|`JBAccountingContext[]`|The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.|
|
|
187
|
+
|`decimals`|`uint256`|The number of decimals to include in the resulting fixed point number.|
|
|
188
|
+
|`currency`|`uint256`|The currency that the resulting number will be in terms of.|
|
|
189
|
+
|
|
190
|
+
**Returns**
|
|
191
|
+
|
|
192
|
+
|Name|Type|Description|
|
|
193
|
+
|----|----|-----------|
|
|
194
|
+
|`<none>`|`uint256`|The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens.|
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
### currentSurplusOf
|
|
198
|
+
|
|
199
|
+
Gets the current surplus amount in a terminal for a specified project.
|
|
200
|
+
|
|
201
|
+
*The surplus is the amount of funds a project has in a terminal in excess of its payout limit.*
|
|
202
|
+
|
|
203
|
+
*The surplus is represented as a fixed point number with the same amount of decimals as the specified
|
|
204
|
+
terminal.*
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
```solidity
|
|
208
|
+
function currentSurplusOf(
|
|
209
|
+
address terminal,
|
|
210
|
+
uint256 projectId,
|
|
211
|
+
JBAccountingContext[] calldata accountingContexts,
|
|
212
|
+
uint256 decimals,
|
|
213
|
+
uint256 currency
|
|
214
|
+
)
|
|
215
|
+
external
|
|
216
|
+
view
|
|
217
|
+
override
|
|
218
|
+
returns (uint256);
|
|
219
|
+
```
|
|
220
|
+
**Parameters**
|
|
221
|
+
|
|
222
|
+
|Name|Type|Description|
|
|
223
|
+
|----|----|-----------|
|
|
224
|
+
|`terminal`|`address`|The terminal the surplus is being calculated for.|
|
|
225
|
+
|`projectId`|`uint256`|The ID of the project to get surplus for.|
|
|
226
|
+
|`accountingContexts`|`JBAccountingContext[]`|The accounting contexts of tokens whose balances should contribute to the surplus being calculated.|
|
|
227
|
+
|`decimals`|`uint256`|The number of decimals to expect in the resulting fixed point number.|
|
|
228
|
+
|`currency`|`uint256`|The currency the resulting amount should be in terms of.|
|
|
229
|
+
|
|
230
|
+
**Returns**
|
|
231
|
+
|
|
232
|
+
|Name|Type|Description|
|
|
233
|
+
|----|----|-----------|
|
|
234
|
+
|`<none>`|`uint256`|The current surplus amount the project has in the specified terminal.|
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
### currentTotalSurplusOf
|
|
238
|
+
|
|
239
|
+
Gets the current surplus amount for a specified project across all terminals.
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
```solidity
|
|
243
|
+
function currentTotalSurplusOf(
|
|
244
|
+
uint256 projectId,
|
|
245
|
+
uint256 decimals,
|
|
246
|
+
uint256 currency
|
|
247
|
+
)
|
|
248
|
+
external
|
|
249
|
+
view
|
|
250
|
+
override
|
|
251
|
+
returns (uint256);
|
|
252
|
+
```
|
|
253
|
+
**Parameters**
|
|
254
|
+
|
|
255
|
+
|Name|Type|Description|
|
|
256
|
+
|----|----|-----------|
|
|
257
|
+
|`projectId`|`uint256`|The ID of the project to get the total surplus for.|
|
|
258
|
+
|`decimals`|`uint256`|The number of decimals that the fixed point surplus should include.|
|
|
259
|
+
|`currency`|`uint256`|The currency that the total surplus should be in terms of.|
|
|
260
|
+
|
|
261
|
+
**Returns**
|
|
262
|
+
|
|
263
|
+
|Name|Type|Description|
|
|
264
|
+
|----|----|-----------|
|
|
265
|
+
|`<none>`|`uint256`|The current total surplus amount that the project has across all terminals.|
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
### _surplusFrom
|
|
269
|
+
|
|
270
|
+
Gets a project's surplus amount in a terminal as measured by a given ruleset, across multiple accounting
|
|
271
|
+
contexts.
|
|
272
|
+
|
|
273
|
+
*This amount changes as the value of the balance changes in relation to the currency being used to measure
|
|
274
|
+
various payout limits.*
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
```solidity
|
|
278
|
+
function _surplusFrom(
|
|
279
|
+
address terminal,
|
|
280
|
+
uint256 projectId,
|
|
281
|
+
JBAccountingContext[] memory accountingContexts,
|
|
282
|
+
JBRuleset memory ruleset,
|
|
283
|
+
uint256 targetDecimals,
|
|
284
|
+
uint256 targetCurrency
|
|
285
|
+
)
|
|
286
|
+
internal
|
|
287
|
+
view
|
|
288
|
+
returns (uint256 surplus);
|
|
289
|
+
```
|
|
290
|
+
**Parameters**
|
|
291
|
+
|
|
292
|
+
|Name|Type|Description|
|
|
293
|
+
|----|----|-----------|
|
|
294
|
+
|`terminal`|`address`|The terminal the surplus is being calculated for.|
|
|
295
|
+
|`projectId`|`uint256`|The ID of the project to get the surplus for.|
|
|
296
|
+
|`accountingContexts`|`JBAccountingContext[]`|The accounting contexts of tokens whose balances should contribute to the surplus being calculated.|
|
|
297
|
+
|`ruleset`|`JBRuleset`|The ID of the ruleset to base the surplus on.|
|
|
298
|
+
|`targetDecimals`|`uint256`|The number of decimals to include in the resulting fixed point number.|
|
|
299
|
+
|`targetCurrency`|`uint256`|The currency that the reported surplus is expected to be in terms of.|
|
|
300
|
+
|
|
301
|
+
**Returns**
|
|
302
|
+
|
|
303
|
+
|Name|Type|Description|
|
|
304
|
+
|----|----|-----------|
|
|
305
|
+
|`surplus`|`uint256`|The surplus of funds in terms of `targetCurrency`, as a fixed point number with `targetDecimals` decimals.|
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
### _tokenSurplusFrom
|
|
309
|
+
|
|
310
|
+
Get a project's surplus amount of a specific token in a given terminal as measured by a given ruleset
|
|
311
|
+
(one specific accounting context).
|
|
312
|
+
|
|
313
|
+
*This amount changes as the value of the balance changes in relation to the currency being used to measure
|
|
314
|
+
the payout limits.*
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
```solidity
|
|
318
|
+
function _tokenSurplusFrom(
|
|
319
|
+
address terminal,
|
|
320
|
+
uint256 projectId,
|
|
321
|
+
JBAccountingContext memory accountingContext,
|
|
322
|
+
JBRuleset memory ruleset,
|
|
323
|
+
uint256 targetDecimals,
|
|
324
|
+
uint256 targetCurrency
|
|
325
|
+
)
|
|
326
|
+
internal
|
|
327
|
+
view
|
|
328
|
+
returns (uint256 surplus);
|
|
329
|
+
```
|
|
330
|
+
**Parameters**
|
|
331
|
+
|
|
332
|
+
|Name|Type|Description|
|
|
333
|
+
|----|----|-----------|
|
|
334
|
+
|`terminal`|`address`|The terminal the surplus is being calculated for.|
|
|
335
|
+
|`projectId`|`uint256`|The ID of the project to get the surplus of.|
|
|
336
|
+
|`accountingContext`|`JBAccountingContext`|The accounting context of the token whose balance should contribute to the surplus being measured.|
|
|
337
|
+
|`ruleset`|`JBRuleset`|The ID of the ruleset to base the surplus calculation on.|
|
|
338
|
+
|`targetDecimals`|`uint256`|The number of decimals to include in the resulting fixed point number.|
|
|
339
|
+
|`targetCurrency`|`uint256`|The currency that the reported surplus is expected to be in terms of.|
|
|
340
|
+
|
|
341
|
+
**Returns**
|
|
342
|
+
|
|
343
|
+
|Name|Type|Description|
|
|
344
|
+
|----|----|-----------|
|
|
345
|
+
|`surplus`|`uint256`|The surplus of funds in terms of `targetCurrency`, as a fixed point number with `targetDecimals` decimals.|
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
### recordAddedBalanceFor
|
|
349
|
+
|
|
350
|
+
Records funds being added to a project's balance.
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
```solidity
|
|
354
|
+
function recordAddedBalanceFor(uint256 projectId, address token, uint256 amount) external override;
|
|
355
|
+
```
|
|
356
|
+
**Parameters**
|
|
357
|
+
|
|
358
|
+
|Name|Type|Description|
|
|
359
|
+
|----|----|-----------|
|
|
360
|
+
|`projectId`|`uint256`|The ID of the project which funds are being added to the balance of.|
|
|
361
|
+
|`token`|`address`|The token being added to the balance.|
|
|
362
|
+
|`amount`|`uint256`|The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.|
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
### recordCashOutFor
|
|
366
|
+
|
|
367
|
+
Records a cash out from a project.
|
|
368
|
+
|
|
369
|
+
*Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has
|
|
370
|
+
no
|
|
371
|
+
data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being
|
|
372
|
+
burned.*
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
```solidity
|
|
376
|
+
function recordCashOutFor(
|
|
377
|
+
address holder,
|
|
378
|
+
uint256 projectId,
|
|
379
|
+
uint256 cashOutCount,
|
|
380
|
+
JBAccountingContext calldata accountingContext,
|
|
381
|
+
JBAccountingContext[] calldata balanceAccountingContexts,
|
|
382
|
+
bytes memory metadata
|
|
383
|
+
)
|
|
384
|
+
external
|
|
385
|
+
override
|
|
386
|
+
returns (
|
|
387
|
+
JBRuleset memory ruleset,
|
|
388
|
+
uint256 reclaimAmount,
|
|
389
|
+
uint256 cashOutTaxRate,
|
|
390
|
+
JBCashOutHookSpecification[] memory hookSpecifications
|
|
391
|
+
);
|
|
392
|
+
```
|
|
393
|
+
**Parameters**
|
|
394
|
+
|
|
395
|
+
|Name|Type|Description|
|
|
396
|
+
|----|----|-----------|
|
|
397
|
+
|`holder`|`address`|The account that is cashing out tokens.|
|
|
398
|
+
|`projectId`|`uint256`|The ID of the project being cashing out from.|
|
|
399
|
+
|`cashOutCount`|`uint256`|The number of project tokens to cash out, as a fixed point number with 18 decimals.|
|
|
400
|
+
|`accountingContext`|`JBAccountingContext`|The accounting context of the token being reclaimed by the cash out.|
|
|
401
|
+
|`balanceAccountingContexts`|`JBAccountingContext[]`|The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.|
|
|
402
|
+
|`metadata`|`bytes`|Bytes to send to the data hook, if the project's current ruleset specifies one.|
|
|
403
|
+
|
|
404
|
+
**Returns**
|
|
405
|
+
|
|
406
|
+
|Name|Type|Description|
|
|
407
|
+
|----|----|-----------|
|
|
408
|
+
|`ruleset`|`JBRuleset`|The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable.|
|
|
409
|
+
|`reclaimAmount`|`uint256`|The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.|
|
|
410
|
+
|`cashOutTaxRate`|`uint256`|The cash out tax rate influencing the reclaim amount.|
|
|
411
|
+
|`hookSpecifications`|`JBCashOutHookSpecification[]`|A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.|
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
### recordPaymentFrom
|
|
415
|
+
|
|
416
|
+
Records a payment to a project.
|
|
417
|
+
|
|
418
|
+
*Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no
|
|
419
|
+
data hook, mints tokens in proportion with the amount paid.*
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
```solidity
|
|
423
|
+
function recordPaymentFrom(
|
|
424
|
+
address payer,
|
|
425
|
+
JBTokenAmount calldata amount,
|
|
426
|
+
uint256 projectId,
|
|
427
|
+
address beneficiary,
|
|
428
|
+
bytes calldata metadata
|
|
429
|
+
)
|
|
430
|
+
external
|
|
431
|
+
override
|
|
432
|
+
returns (JBRuleset memory ruleset, uint256 tokenCount, JBPayHookSpecification[] memory hookSpecifications);
|
|
433
|
+
```
|
|
434
|
+
**Parameters**
|
|
435
|
+
|
|
436
|
+
|Name|Type|Description|
|
|
437
|
+
|----|----|-----------|
|
|
438
|
+
|`payer`|`address`|The address that made the payment to the terminal.|
|
|
439
|
+
|`amount`|`JBTokenAmount`|The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.|
|
|
440
|
+
|`projectId`|`uint256`|The ID of the project being paid.|
|
|
441
|
+
|`beneficiary`|`address`|The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).|
|
|
442
|
+
|`metadata`|`bytes`|Bytes to send to the data hook, if the project's current ruleset specifies one.|
|
|
443
|
+
|
|
444
|
+
**Returns**
|
|
445
|
+
|
|
446
|
+
|Name|Type|Description|
|
|
447
|
+
|----|----|-----------|
|
|
448
|
+
|`ruleset`|`JBRuleset`|The ruleset the payment was made during, as a `JBRuleset` struct.|
|
|
449
|
+
|`tokenCount`|`uint256`|The number of project tokens that were minted, as a fixed point number with 18 decimals.|
|
|
450
|
+
|`hookSpecifications`|`JBPayHookSpecification[]`|A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.|
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
### recordPayoutFor
|
|
454
|
+
|
|
455
|
+
Records a payout from a project.
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
```solidity
|
|
459
|
+
function recordPayoutFor(
|
|
460
|
+
uint256 projectId,
|
|
461
|
+
JBAccountingContext calldata accountingContext,
|
|
462
|
+
uint256 amount,
|
|
463
|
+
uint256 currency
|
|
464
|
+
)
|
|
465
|
+
external
|
|
466
|
+
override
|
|
467
|
+
returns (JBRuleset memory ruleset, uint256 amountPaidOut);
|
|
468
|
+
```
|
|
469
|
+
**Parameters**
|
|
470
|
+
|
|
471
|
+
|Name|Type|Description|
|
|
472
|
+
|----|----|-----------|
|
|
473
|
+
|`projectId`|`uint256`|The ID of the project that is paying out funds.|
|
|
474
|
+
|`accountingContext`|`JBAccountingContext`|The context of the token being paid out.|
|
|
475
|
+
|`amount`|`uint256`|The amount to pay out (use from the payout limit), as a fixed point number.|
|
|
476
|
+
|`currency`|`uint256`|The currency of the `amount`. This must match the project's current ruleset's currency.|
|
|
477
|
+
|
|
478
|
+
**Returns**
|
|
479
|
+
|
|
480
|
+
|Name|Type|Description|
|
|
481
|
+
|----|----|-----------|
|
|
482
|
+
|`ruleset`|`JBRuleset`|The ruleset the payout was made during, as a `JBRuleset` struct.|
|
|
483
|
+
|`amountPaidOut`|`uint256`|The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.|
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
### recordTerminalMigration
|
|
487
|
+
|
|
488
|
+
Records the migration of funds from this store.
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
```solidity
|
|
492
|
+
function recordTerminalMigration(uint256 projectId, address token) external override returns (uint256 balance);
|
|
493
|
+
```
|
|
494
|
+
**Parameters**
|
|
495
|
+
|
|
496
|
+
|Name|Type|Description|
|
|
497
|
+
|----|----|-----------|
|
|
498
|
+
|`projectId`|`uint256`|The ID of the project being migrated.|
|
|
499
|
+
|`token`|`address`|The token being migrated.|
|
|
500
|
+
|
|
501
|
+
**Returns**
|
|
502
|
+
|
|
503
|
+
|Name|Type|Description|
|
|
504
|
+
|----|----|-----------|
|
|
505
|
+
|`balance`|`uint256`|The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.|
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
### recordUsedAllowanceOf
|
|
509
|
+
|
|
510
|
+
Records a use of a project's surplus allowance.
|
|
511
|
+
|
|
512
|
+
*When surplus allowance is "used", it is taken out of the project's surplus within a terminal.*
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
```solidity
|
|
516
|
+
function recordUsedAllowanceOf(
|
|
517
|
+
uint256 projectId,
|
|
518
|
+
JBAccountingContext calldata accountingContext,
|
|
519
|
+
uint256 amount,
|
|
520
|
+
uint256 currency
|
|
521
|
+
)
|
|
522
|
+
external
|
|
523
|
+
override
|
|
524
|
+
returns (JBRuleset memory ruleset, uint256 usedAmount);
|
|
525
|
+
```
|
|
526
|
+
**Parameters**
|
|
527
|
+
|
|
528
|
+
|Name|Type|Description|
|
|
529
|
+
|----|----|-----------|
|
|
530
|
+
|`projectId`|`uint256`|The ID of the project to use the surplus allowance of.|
|
|
531
|
+
|`accountingContext`|`JBAccountingContext`|The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.|
|
|
532
|
+
|`amount`|`uint256`|The amount to use from the surplus allowance, as a fixed point number.|
|
|
533
|
+
|`currency`|`uint256`|The currency of the `amount`. Must match the currency of the surplus allowance.|
|
|
534
|
+
|
|
535
|
+
**Returns**
|
|
536
|
+
|
|
537
|
+
|Name|Type|Description|
|
|
538
|
+
|----|----|-----------|
|
|
539
|
+
|`ruleset`|`JBRuleset`|The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.|
|
|
540
|
+
|`usedAmount`|`uint256`|The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.|
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
## Errors
|
|
544
|
+
### JBTerminalStore_InadequateControllerAllowance
|
|
545
|
+
|
|
546
|
+
```solidity
|
|
547
|
+
error JBTerminalStore_InadequateControllerAllowance(uint256 amount, uint256 allowance);
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
### JBTerminalStore_InadequateControllerPayoutLimit
|
|
551
|
+
|
|
552
|
+
```solidity
|
|
553
|
+
error JBTerminalStore_InadequateControllerPayoutLimit(uint256 amount, uint256 limit);
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### JBTerminalStore_InadequateTerminalStoreBalance
|
|
557
|
+
|
|
558
|
+
```solidity
|
|
559
|
+
error JBTerminalStore_InadequateTerminalStoreBalance(uint256 amount, uint256 balance);
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
### JBTerminalStore_InsufficientTokens
|
|
563
|
+
|
|
564
|
+
```solidity
|
|
565
|
+
error JBTerminalStore_InsufficientTokens(uint256 count, uint256 totalSupply);
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
### JBTerminalStore_InvalidAmountToForwardHook
|
|
569
|
+
|
|
570
|
+
```solidity
|
|
571
|
+
error JBTerminalStore_InvalidAmountToForwardHook(uint256 amount, uint256 paidAmount);
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### JBTerminalStore_RulesetNotFound
|
|
575
|
+
|
|
576
|
+
```solidity
|
|
577
|
+
error JBTerminalStore_RulesetNotFound();
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
### JBTerminalStore_RulesetPaymentPaused
|
|
581
|
+
|
|
582
|
+
```solidity
|
|
583
|
+
error JBTerminalStore_RulesetPaymentPaused();
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
### JBTerminalStore_TerminalMigrationNotAllowed
|
|
587
|
+
|
|
588
|
+
```solidity
|
|
589
|
+
error JBTerminalStore_TerminalMigrationNotAllowed();
|
|
590
|
+
```
|
|
591
|
+
|