@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,151 @@
|
|
|
1
|
+
# IJBTokens
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBTokens.sol)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
### creditBalanceOf
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
```solidity
|
|
10
|
+
function creditBalanceOf(address holder, uint256 projectId) external view returns (uint256);
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### projectIdOf
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```solidity
|
|
17
|
+
function projectIdOf(IJBToken token) external view returns (uint256);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### tokenOf
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
```solidity
|
|
24
|
+
function tokenOf(uint256 projectId) external view returns (IJBToken);
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### totalCreditSupplyOf
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
```solidity
|
|
31
|
+
function totalCreditSupplyOf(uint256 projectId) external view returns (uint256);
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### totalBalanceOf
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
```solidity
|
|
38
|
+
function totalBalanceOf(address holder, uint256 projectId) external view returns (uint256 result);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### totalSupplyOf
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
```solidity
|
|
45
|
+
function totalSupplyOf(uint256 projectId) external view returns (uint256);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### burnFrom
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
```solidity
|
|
52
|
+
function burnFrom(address holder, uint256 projectId, uint256 count) external;
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### claimTokensFor
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
```solidity
|
|
59
|
+
function claimTokensFor(address holder, uint256 projectId, uint256 count, address beneficiary) external;
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### deployERC20For
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
```solidity
|
|
66
|
+
function deployERC20For(
|
|
67
|
+
uint256 projectId,
|
|
68
|
+
string calldata name,
|
|
69
|
+
string calldata symbol,
|
|
70
|
+
bytes32 salt
|
|
71
|
+
)
|
|
72
|
+
external
|
|
73
|
+
returns (IJBToken token);
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### mintFor
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
```solidity
|
|
80
|
+
function mintFor(address holder, uint256 projectId, uint256 count) external returns (IJBToken token);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### setTokenFor
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
```solidity
|
|
87
|
+
function setTokenFor(uint256 projectId, IJBToken token) external;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### transferCreditsFrom
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
```solidity
|
|
94
|
+
function transferCreditsFrom(address holder, uint256 projectId, address recipient, uint256 count) external;
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Events
|
|
98
|
+
### DeployERC20
|
|
99
|
+
|
|
100
|
+
```solidity
|
|
101
|
+
event DeployERC20(
|
|
102
|
+
uint256 indexed projectId, IJBToken indexed token, string name, string symbol, bytes32 salt, address caller
|
|
103
|
+
);
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Burn
|
|
107
|
+
|
|
108
|
+
```solidity
|
|
109
|
+
event Burn(
|
|
110
|
+
address indexed holder,
|
|
111
|
+
uint256 indexed projectId,
|
|
112
|
+
uint256 count,
|
|
113
|
+
uint256 creditBalance,
|
|
114
|
+
uint256 tokenBalance,
|
|
115
|
+
address caller
|
|
116
|
+
);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### ClaimTokens
|
|
120
|
+
|
|
121
|
+
```solidity
|
|
122
|
+
event ClaimTokens(
|
|
123
|
+
address indexed holder,
|
|
124
|
+
uint256 indexed projectId,
|
|
125
|
+
uint256 creditBalance,
|
|
126
|
+
uint256 count,
|
|
127
|
+
address beneficiary,
|
|
128
|
+
address caller
|
|
129
|
+
);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Mint
|
|
133
|
+
|
|
134
|
+
```solidity
|
|
135
|
+
event Mint(address indexed holder, uint256 indexed projectId, uint256 count, bool tokensWereClaimed, address caller);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### SetToken
|
|
139
|
+
|
|
140
|
+
```solidity
|
|
141
|
+
event SetToken(uint256 indexed projectId, IJBToken indexed token, address caller);
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### TransferCredits
|
|
145
|
+
|
|
146
|
+
```solidity
|
|
147
|
+
event TransferCredits(
|
|
148
|
+
address indexed holder, uint256 indexed projectId, address indexed recipient, uint256 count, address caller
|
|
149
|
+
);
|
|
150
|
+
```
|
|
151
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# Contents
|
|
4
|
+
- [IJBCashOutHook](IJBCashOutHook.sol/interface.IJBCashOutHook.md)
|
|
5
|
+
- [IJBCashOutTerminal](IJBCashOutTerminal.sol/interface.IJBCashOutTerminal.md)
|
|
6
|
+
- [IJBControlled](IJBControlled.sol/interface.IJBControlled.md)
|
|
7
|
+
- [IJBController](IJBController.sol/interface.IJBController.md)
|
|
8
|
+
- [IJBDirectory](IJBDirectory.sol/interface.IJBDirectory.md)
|
|
9
|
+
- [IJBDirectoryAccessControl](IJBDirectoryAccessControl.sol/interface.IJBDirectoryAccessControl.md)
|
|
10
|
+
- [IJBFeeTerminal](IJBFeeTerminal.sol/interface.IJBFeeTerminal.md)
|
|
11
|
+
- [IJBFeelessAddresses](IJBFeelessAddresses.sol/interface.IJBFeelessAddresses.md)
|
|
12
|
+
- [IJBFundAccessLimits](IJBFundAccessLimits.sol/interface.IJBFundAccessLimits.md)
|
|
13
|
+
- [IJBMigratable](IJBMigratable.sol/interface.IJBMigratable.md)
|
|
14
|
+
- [IJBMultiTerminal](IJBMultiTerminal.sol/interface.IJBMultiTerminal.md)
|
|
15
|
+
- [IJBPayHook](IJBPayHook.sol/interface.IJBPayHook.md)
|
|
16
|
+
- [IJBPayoutTerminal](IJBPayoutTerminal.sol/interface.IJBPayoutTerminal.md)
|
|
17
|
+
- [IJBPermissioned](IJBPermissioned.sol/interface.IJBPermissioned.md)
|
|
18
|
+
- [IJBPermissions](IJBPermissions.sol/interface.IJBPermissions.md)
|
|
19
|
+
- [IJBPermitTerminal](IJBPermitTerminal.sol/interface.IJBPermitTerminal.md)
|
|
20
|
+
- [IJBPriceFeed](IJBPriceFeed.sol/interface.IJBPriceFeed.md)
|
|
21
|
+
- [IJBPrices](IJBPrices.sol/interface.IJBPrices.md)
|
|
22
|
+
- [IJBProjectUriRegistry](IJBProjectUriRegistry.sol/interface.IJBProjectUriRegistry.md)
|
|
23
|
+
- [IJBProjects](IJBProjects.sol/interface.IJBProjects.md)
|
|
24
|
+
- [IJBRulesetApprovalHook](IJBRulesetApprovalHook.sol/interface.IJBRulesetApprovalHook.md)
|
|
25
|
+
- [IJBRulesetDataHook](IJBRulesetDataHook.sol/interface.IJBRulesetDataHook.md)
|
|
26
|
+
- [IJBRulesets](IJBRulesets.sol/interface.IJBRulesets.md)
|
|
27
|
+
- [IJBSplitHook](IJBSplitHook.sol/interface.IJBSplitHook.md)
|
|
28
|
+
- [IJBSplits](IJBSplits.sol/interface.IJBSplits.md)
|
|
29
|
+
- [IJBTerminal](IJBTerminal.sol/interface.IJBTerminal.md)
|
|
30
|
+
- [IJBTerminalStore](IJBTerminalStore.sol/interface.IJBTerminalStore.md)
|
|
31
|
+
- [IJBToken](IJBToken.sol/interface.IJBToken.md)
|
|
32
|
+
- [IJBTokenUriResolver](IJBTokenUriResolver.sol/interface.IJBTokenUriResolver.md)
|
|
33
|
+
- [IJBTokens](IJBTokens.sol/interface.IJBTokens.md)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# JBCashOuts
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/libraries/JBCashOuts.sol)
|
|
3
|
+
|
|
4
|
+
Cash out calculations.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## Functions
|
|
8
|
+
### cashOutFrom
|
|
9
|
+
|
|
10
|
+
Returns the amount of surplus terminal tokens which can be reclaimed based on the total surplus, the
|
|
11
|
+
number of tokens being cashed out, the total token supply, and the ruleset's cash out tax rate.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
```solidity
|
|
15
|
+
function cashOutFrom(
|
|
16
|
+
uint256 surplus,
|
|
17
|
+
uint256 cashOutCount,
|
|
18
|
+
uint256 totalSupply,
|
|
19
|
+
uint256 cashOutTaxRate
|
|
20
|
+
)
|
|
21
|
+
internal
|
|
22
|
+
pure
|
|
23
|
+
returns (uint256);
|
|
24
|
+
```
|
|
25
|
+
**Parameters**
|
|
26
|
+
|
|
27
|
+
|Name|Type|Description|
|
|
28
|
+
|----|----|-----------|
|
|
29
|
+
|`surplus`|`uint256`|The total amount of surplus terminal tokens.|
|
|
30
|
+
|`cashOutCount`|`uint256`|The number of tokens being cashed out, as a fixed point number with 18 decimals.|
|
|
31
|
+
|`totalSupply`|`uint256`|The total token supply, as a fixed point number with 18 decimals.|
|
|
32
|
+
|`cashOutTaxRate`|`uint256`|The current ruleset's cash out tax rate.|
|
|
33
|
+
|
|
34
|
+
**Returns**
|
|
35
|
+
|
|
36
|
+
|Name|Type|Description|
|
|
37
|
+
|----|----|-----------|
|
|
38
|
+
|`<none>`|`uint256`|reclaimableSurplus The amount of surplus tokens that can be reclaimed.|
|
|
39
|
+
|
|
40
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# JBConstants
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/libraries/JBConstants.sol)
|
|
3
|
+
|
|
4
|
+
Global constants used across Juicebox contracts.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## State Variables
|
|
8
|
+
### NATIVE_TOKEN
|
|
9
|
+
Each chain's native token address in Juicebox is represented by
|
|
10
|
+
0x000000000000000000000000000000000000EEEe.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
```solidity
|
|
14
|
+
address public constant NATIVE_TOKEN = address(0x000000000000000000000000000000000000EEEe);
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### MAX_RESERVED_PERCENT
|
|
19
|
+
|
|
20
|
+
```solidity
|
|
21
|
+
uint16 public constant MAX_RESERVED_PERCENT = 10_000;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### MAX_CASH_OUT_TAX_RATE
|
|
26
|
+
|
|
27
|
+
```solidity
|
|
28
|
+
uint16 public constant MAX_CASH_OUT_TAX_RATE = 10_000;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### MAX_WEIGHT_CUT_PERCENT
|
|
33
|
+
|
|
34
|
+
```solidity
|
|
35
|
+
uint32 public constant MAX_WEIGHT_CUT_PERCENT = 1_000_000_000;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### SPLITS_TOTAL_PERCENT
|
|
40
|
+
|
|
41
|
+
```solidity
|
|
42
|
+
uint32 public constant SPLITS_TOTAL_PERCENT = 1_000_000_000;
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### MAX_FEE
|
|
47
|
+
|
|
48
|
+
```solidity
|
|
49
|
+
uint16 public constant MAX_FEE = 1000;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# JBCurrencyIds
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/libraries/JBCurrencyIds.sol)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## State Variables
|
|
6
|
+
### ETH
|
|
7
|
+
|
|
8
|
+
```solidity
|
|
9
|
+
uint32 public constant ETH = 1;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### USD
|
|
14
|
+
|
|
15
|
+
```solidity
|
|
16
|
+
uint32 public constant USD = 2;
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# JBFees
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/libraries/JBFees.sol)
|
|
3
|
+
|
|
4
|
+
Fee calculations.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## Functions
|
|
8
|
+
### feeAmountResultingIn
|
|
9
|
+
|
|
10
|
+
Returns the amount of tokens to pay as a fee relative to the specified `amount`.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
```solidity
|
|
14
|
+
function feeAmountResultingIn(uint256 amountAfterFee, uint256 feePercent) internal pure returns (uint256);
|
|
15
|
+
```
|
|
16
|
+
**Parameters**
|
|
17
|
+
|
|
18
|
+
|Name|Type|Description|
|
|
19
|
+
|----|----|-----------|
|
|
20
|
+
|`amountAfterFee`|`uint256`|The amount that the fee is based on, as a fixed point number.|
|
|
21
|
+
|`feePercent`|`uint256`|The fee percent, out of `JBConstants.MAX_FEE`.|
|
|
22
|
+
|
|
23
|
+
**Returns**
|
|
24
|
+
|
|
25
|
+
|Name|Type|Description|
|
|
26
|
+
|----|----|-----------|
|
|
27
|
+
|`<none>`|`uint256`|The amount of tokens to pay as a fee, as a fixed point number with the same number of decimals as the provided `amount`.|
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### feeAmountFrom
|
|
31
|
+
|
|
32
|
+
Returns the fee that would have been paid based on an `amount` which has already had the fee subtracted
|
|
33
|
+
from it.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
```solidity
|
|
37
|
+
function feeAmountFrom(uint256 amountBeforeFee, uint256 feePercent) internal pure returns (uint256);
|
|
38
|
+
```
|
|
39
|
+
**Parameters**
|
|
40
|
+
|
|
41
|
+
|Name|Type|Description|
|
|
42
|
+
|----|----|-----------|
|
|
43
|
+
|`amountBeforeFee`|`uint256`|The amount that the fee is based on, as a fixed point number with the same amount of decimals as this terminal.|
|
|
44
|
+
|`feePercent`|`uint256`|The fee percent, out of `JBConstants.MAX_FEE`.|
|
|
45
|
+
|
|
46
|
+
**Returns**
|
|
47
|
+
|
|
48
|
+
|Name|Type|Description|
|
|
49
|
+
|----|----|-----------|
|
|
50
|
+
|`<none>`|`uint256`|The amount of the fee, as a fixed point number with the same amount of decimals as this terminal.|
|
|
51
|
+
|
|
52
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# JBFixedPointNumber
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/libraries/JBFixedPointNumber.sol)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
### adjustDecimals
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
```solidity
|
|
10
|
+
function adjustDecimals(uint256 value, uint256 decimals, uint256 targetDecimals) internal pure returns (uint256);
|
|
11
|
+
```
|
|
12
|
+
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# JBMetadataResolver
|
|
2
|
+
[Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/libraries/JBMetadataResolver.sol)
|
|
3
|
+
|
|
4
|
+
Library to parse and create metadata to store {id: data} entries.
|
|
5
|
+
|
|
6
|
+
*Metadata are built as:
|
|
7
|
+
- 32B of reserved space for the protocol
|
|
8
|
+
- a lookup table `Id: offset`, defining the offset of the data for a given 4 bytes id.
|
|
9
|
+
The offset fits 1 bytes, the ID 4 bytes. This table is padded to 32B.
|
|
10
|
+
- the data for each id, padded to 32B each
|
|
11
|
+
+-----------------------+ offset: 0
|
|
12
|
+
| 32B reserved |
|
|
13
|
+
+-----------------------+ offset: 1 = end of first 32B
|
|
14
|
+
| (ID1,offset1) |
|
|
15
|
+
| (ID2,offset2) |
|
|
16
|
+
| 0's padding |
|
|
17
|
+
+-----------------------+ offset: offset1 = 1 + number of words taken by the padded table
|
|
18
|
+
| id1 data1 |
|
|
19
|
+
| 0's padding |
|
|
20
|
+
+-----------------------+ offset: offset2 = offset1 + number of words taken by the data1
|
|
21
|
+
| id2 data2 |
|
|
22
|
+
| 0's padding |
|
|
23
|
+
+-----------------------+*
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## State Variables
|
|
27
|
+
### ID_SIZE
|
|
28
|
+
|
|
29
|
+
```solidity
|
|
30
|
+
uint256 constant ID_SIZE = 4;
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### ID_OFFSET_SIZE
|
|
35
|
+
|
|
36
|
+
```solidity
|
|
37
|
+
uint256 constant ID_OFFSET_SIZE = 1;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### WORD_SIZE
|
|
42
|
+
|
|
43
|
+
```solidity
|
|
44
|
+
uint256 constant WORD_SIZE = 32;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### TOTAL_ID_SIZE
|
|
49
|
+
|
|
50
|
+
```solidity
|
|
51
|
+
uint256 constant TOTAL_ID_SIZE = 5;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### NEXT_ID_OFFSET
|
|
56
|
+
|
|
57
|
+
```solidity
|
|
58
|
+
uint256 constant NEXT_ID_OFFSET = 9;
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### RESERVED_SIZE
|
|
63
|
+
|
|
64
|
+
```solidity
|
|
65
|
+
uint256 constant RESERVED_SIZE = 32;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### MIN_METADATA_LENGTH
|
|
70
|
+
|
|
71
|
+
```solidity
|
|
72
|
+
uint256 constant MIN_METADATA_LENGTH = 37;
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## Functions
|
|
77
|
+
### addToMetadata
|
|
78
|
+
|
|
79
|
+
Add an {id: data} entry to an existing metadata. This is an append-only mechanism.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
```solidity
|
|
83
|
+
function addToMetadata(
|
|
84
|
+
bytes memory originalMetadata,
|
|
85
|
+
bytes4 idToAdd,
|
|
86
|
+
bytes memory dataToAdd
|
|
87
|
+
)
|
|
88
|
+
internal
|
|
89
|
+
pure
|
|
90
|
+
returns (bytes memory newMetadata);
|
|
91
|
+
```
|
|
92
|
+
**Parameters**
|
|
93
|
+
|
|
94
|
+
|Name|Type|Description|
|
|
95
|
+
|----|----|-----------|
|
|
96
|
+
|`originalMetadata`|`bytes`|The original metadata|
|
|
97
|
+
|`idToAdd`|`bytes4`|The id to add|
|
|
98
|
+
|`dataToAdd`|`bytes`|The data to add|
|
|
99
|
+
|
|
100
|
+
**Returns**
|
|
101
|
+
|
|
102
|
+
|Name|Type|Description|
|
|
103
|
+
|----|----|-----------|
|
|
104
|
+
|`newMetadata`|`bytes`|The new metadata with the entry added|
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
### createMetadata
|
|
108
|
+
|
|
109
|
+
Create the metadata for a list of {id:data}
|
|
110
|
+
|
|
111
|
+
*Intended for offchain use (gas heavy)*
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
```solidity
|
|
115
|
+
function createMetadata(bytes4[] memory ids, bytes[] memory datas) internal pure returns (bytes memory metadata);
|
|
116
|
+
```
|
|
117
|
+
**Parameters**
|
|
118
|
+
|
|
119
|
+
|Name|Type|Description|
|
|
120
|
+
|----|----|-----------|
|
|
121
|
+
|`ids`|`bytes4[]`|The list of ids|
|
|
122
|
+
|`datas`|`bytes[]`|The list of corresponding datas|
|
|
123
|
+
|
|
124
|
+
**Returns**
|
|
125
|
+
|
|
126
|
+
|Name|Type|Description|
|
|
127
|
+
|----|----|-----------|
|
|
128
|
+
|`metadata`|`bytes`|The resulting metadata|
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
### getDataFor
|
|
132
|
+
|
|
133
|
+
Parse the metadata to find the data for a specific ID
|
|
134
|
+
|
|
135
|
+
*Returns false and an empty bytes if no data is found*
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
```solidity
|
|
139
|
+
function getDataFor(bytes4 id, bytes memory metadata) internal pure returns (bool found, bytes memory targetData);
|
|
140
|
+
```
|
|
141
|
+
**Parameters**
|
|
142
|
+
|
|
143
|
+
|Name|Type|Description|
|
|
144
|
+
|----|----|-----------|
|
|
145
|
+
|`id`|`bytes4`|The ID to find.|
|
|
146
|
+
|`metadata`|`bytes`|The metadata to parse.|
|
|
147
|
+
|
|
148
|
+
**Returns**
|
|
149
|
+
|
|
150
|
+
|Name|Type|Description|
|
|
151
|
+
|----|----|-----------|
|
|
152
|
+
|`found`|`bool`|Whether the {id:data} was found|
|
|
153
|
+
|`targetData`|`bytes`|The data for the ID (can be empty)|
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
### getId
|
|
157
|
+
|
|
158
|
+
Returns an unique id following a suggested format (`xor(address(this), purpose name)` where purpose name
|
|
159
|
+
is a string giving context to the id (Permit2, quoteForSwap, etc)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
```solidity
|
|
163
|
+
function getId(string memory purpose) internal view returns (bytes4);
|
|
164
|
+
```
|
|
165
|
+
**Parameters**
|
|
166
|
+
|
|
167
|
+
|Name|Type|Description|
|
|
168
|
+
|----|----|-----------|
|
|
169
|
+
|`purpose`|`string`|A string describing the purpose associated with the id|
|
|
170
|
+
|
|
171
|
+
**Returns**
|
|
172
|
+
|
|
173
|
+
|Name|Type|Description|
|
|
174
|
+
|----|----|-----------|
|
|
175
|
+
|`<none>`|`bytes4`|id The resulting ID.|
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
### getId
|
|
179
|
+
|
|
180
|
+
Returns an unique id following a suggested format (`xor(address(this), purpose name)` where purpose name
|
|
181
|
+
is a string giving context to the id (Permit2, quoteForSwap, etc)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
```solidity
|
|
185
|
+
function getId(string memory purpose, address target) internal pure returns (bytes4);
|
|
186
|
+
```
|
|
187
|
+
**Parameters**
|
|
188
|
+
|
|
189
|
+
|Name|Type|Description|
|
|
190
|
+
|----|----|-----------|
|
|
191
|
+
|`purpose`|`string`|A string describing the purpose associated with the id|
|
|
192
|
+
|`target`|`address`|The target which will use the metadata|
|
|
193
|
+
|
|
194
|
+
**Returns**
|
|
195
|
+
|
|
196
|
+
|Name|Type|Description|
|
|
197
|
+
|----|----|-----------|
|
|
198
|
+
|`<none>`|`bytes4`|id The resulting ID.|
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### _sliceBytes
|
|
202
|
+
|
|
203
|
+
Slice bytes from a start index to an end index.
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
```solidity
|
|
207
|
+
function _sliceBytes(bytes memory data, uint256 start, uint256 end) private pure returns (bytes memory slicedBytes);
|
|
208
|
+
```
|
|
209
|
+
**Parameters**
|
|
210
|
+
|
|
211
|
+
|Name|Type|Description|
|
|
212
|
+
|----|----|-----------|
|
|
213
|
+
|`data`|`bytes`|The bytes array to slice|
|
|
214
|
+
|`start`|`uint256`|The start index to slice at.|
|
|
215
|
+
|`end`|`uint256`|The end index to slice at.|
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## Errors
|
|
219
|
+
### JBMetadataResolver_DataNotPadded
|
|
220
|
+
|
|
221
|
+
```solidity
|
|
222
|
+
error JBMetadataResolver_DataNotPadded();
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### JBMetadataResolver_LengthMismatch
|
|
226
|
+
|
|
227
|
+
```solidity
|
|
228
|
+
error JBMetadataResolver_LengthMismatch();
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### JBMetadataResolver_MetadataTooLong
|
|
232
|
+
|
|
233
|
+
```solidity
|
|
234
|
+
error JBMetadataResolver_MetadataTooLong();
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### JBMetadataResolver_MetadataTooShort
|
|
238
|
+
|
|
239
|
+
```solidity
|
|
240
|
+
error JBMetadataResolver_MetadataTooShort();
|
|
241
|
+
```
|
|
242
|
+
|