@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.
Files changed (436) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -0
  3. package/SKILLS.md +151 -0
  4. package/docs/book.css +13 -0
  5. package/docs/book.toml +12 -0
  6. package/docs/solidity.min.js +74 -0
  7. package/docs/src/README.md +703 -0
  8. package/docs/src/SUMMARY.md +94 -0
  9. package/docs/src/src/JBChainlinkV3PriceFeed.sol/contract.JBChainlinkV3PriceFeed.md +83 -0
  10. package/docs/src/src/JBChainlinkV3SequencerPriceFeed.sol/contract.JBChainlinkV3SequencerPriceFeed.md +88 -0
  11. package/docs/src/src/JBController.sol/contract.JBController.md +1121 -0
  12. package/docs/src/src/JBDeadline.sol/contract.JBDeadline.md +84 -0
  13. package/docs/src/src/JBDirectory.sol/contract.JBDirectory.md +294 -0
  14. package/docs/src/src/JBERC20.sol/contract.JBERC20.md +190 -0
  15. package/docs/src/src/JBFeelessAddresses.sol/contract.JBFeelessAddresses.md +80 -0
  16. package/docs/src/src/JBFundAccessLimits.sol/contract.JBFundAccessLimits.md +253 -0
  17. package/docs/src/src/JBMultiTerminal.sol/contract.JBMultiTerminal.md +1472 -0
  18. package/docs/src/src/JBPermissions.sol/contract.JBPermissions.md +199 -0
  19. package/docs/src/src/JBPrices.sol/contract.JBPrices.md +154 -0
  20. package/docs/src/src/JBProjects.sol/contract.JBProjects.md +131 -0
  21. package/docs/src/src/JBRulesets.sol/contract.JBRulesets.md +677 -0
  22. package/docs/src/src/JBSplits.sol/contract.JBSplits.md +237 -0
  23. package/docs/src/src/JBTerminalStore.sol/contract.JBTerminalStore.md +591 -0
  24. package/docs/src/src/JBTokens.sol/contract.JBTokens.md +353 -0
  25. package/docs/src/src/README.md +25 -0
  26. package/docs/src/src/abstract/JBControlled.sol/abstract.JBControlled.md +64 -0
  27. package/docs/src/src/abstract/JBPermissioned.sol/abstract.JBPermissioned.md +84 -0
  28. package/docs/src/src/abstract/README.md +5 -0
  29. package/docs/src/src/enums/JBApprovalStatus.sol/enum.JBApprovalStatus.md +17 -0
  30. package/docs/src/src/enums/README.md +4 -0
  31. package/docs/src/src/interfaces/IJBCashOutHook.sol/interface.IJBCashOutHook.md +29 -0
  32. package/docs/src/src/interfaces/IJBCashOutTerminal.sol/interface.IJBCashOutTerminal.md +57 -0
  33. package/docs/src/src/interfaces/IJBControlled.sol/interface.IJBControlled.md +12 -0
  34. package/docs/src/src/interfaces/IJBController.sol/interface.IJBController.md +334 -0
  35. package/docs/src/src/interfaces/IJBDirectory.sol/interface.IJBDirectory.md +108 -0
  36. package/docs/src/src/interfaces/IJBDirectoryAccessControl.sol/interface.IJBDirectoryAccessControl.md +19 -0
  37. package/docs/src/src/interfaces/IJBFeeTerminal.sol/interface.IJBFeeTerminal.md +91 -0
  38. package/docs/src/src/interfaces/IJBFeelessAddresses.sol/interface.IJBFeelessAddresses.md +26 -0
  39. package/docs/src/src/interfaces/IJBFundAccessLimits.sol/interface.IJBFundAccessLimits.md +88 -0
  40. package/docs/src/src/interfaces/IJBMigratable.sol/interface.IJBMigratable.md +29 -0
  41. package/docs/src/src/interfaces/IJBMultiTerminal.sol/interface.IJBMultiTerminal.md +50 -0
  42. package/docs/src/src/interfaces/IJBPayHook.sol/interface.IJBPayHook.md +28 -0
  43. package/docs/src/src/interfaces/IJBPayoutTerminal.sol/interface.IJBPayoutTerminal.md +105 -0
  44. package/docs/src/src/interfaces/IJBPermissioned.sol/interface.IJBPermissioned.md +12 -0
  45. package/docs/src/src/interfaces/IJBPermissions.sol/interface.IJBPermissions.md +74 -0
  46. package/docs/src/src/interfaces/IJBPermitTerminal.sol/interface.IJBPermitTerminal.md +15 -0
  47. package/docs/src/src/interfaces/IJBPriceFeed.sol/interface.IJBPriceFeed.md +12 -0
  48. package/docs/src/src/interfaces/IJBPrices.sol/interface.IJBPrices.md +74 -0
  49. package/docs/src/src/interfaces/IJBProjectUriRegistry.sol/interface.IJBProjectUriRegistry.md +19 -0
  50. package/docs/src/src/interfaces/IJBProjects.sol/interface.IJBProjects.md +49 -0
  51. package/docs/src/src/interfaces/IJBRulesetApprovalHook.sol/interface.IJBRulesetApprovalHook.md +35 -0
  52. package/docs/src/src/interfaces/IJBRulesetDataHook.sol/interface.IJBRulesetDataHook.md +97 -0
  53. package/docs/src/src/interfaces/IJBRulesets.sol/interface.IJBRulesets.md +165 -0
  54. package/docs/src/src/interfaces/IJBSplitHook.sol/interface.IJBSplitHook.md +31 -0
  55. package/docs/src/src/interfaces/IJBSplits.sol/interface.IJBSplits.md +35 -0
  56. package/docs/src/src/interfaces/IJBTerminal.sol/interface.IJBTerminal.md +141 -0
  57. package/docs/src/src/interfaces/IJBTerminalStore.sol/interface.IJBTerminalStore.md +198 -0
  58. package/docs/src/src/interfaces/IJBToken.sol/interface.IJBToken.md +54 -0
  59. package/docs/src/src/interfaces/IJBTokenUriResolver.sol/interface.IJBTokenUriResolver.md +12 -0
  60. package/docs/src/src/interfaces/IJBTokens.sol/interface.IJBTokens.md +151 -0
  61. package/docs/src/src/interfaces/README.md +33 -0
  62. package/docs/src/src/libraries/JBCashOuts.sol/library.JBCashOuts.md +40 -0
  63. package/docs/src/src/libraries/JBConstants.sol/library.JBConstants.md +52 -0
  64. package/docs/src/src/libraries/JBCurrencyIds.sol/library.JBCurrencyIds.md +19 -0
  65. package/docs/src/src/libraries/JBFees.sol/library.JBFees.md +52 -0
  66. package/docs/src/src/libraries/JBFixedPointNumber.sol/library.JBFixedPointNumber.md +12 -0
  67. package/docs/src/src/libraries/JBMetadataResolver.sol/library.JBMetadataResolver.md +242 -0
  68. package/docs/src/src/libraries/JBRulesetMetadataResolver.sol/library.JBRulesetMetadataResolver.md +180 -0
  69. package/docs/src/src/libraries/JBSplitGroupIds.sol/library.JBSplitGroupIds.md +14 -0
  70. package/docs/src/src/libraries/JBSurplus.sol/library.JBSurplus.md +44 -0
  71. package/docs/src/src/libraries/README.md +12 -0
  72. package/docs/src/src/periphery/JBDeadline1Day.sol/contract.JBDeadline1Day.md +15 -0
  73. package/docs/src/src/periphery/JBDeadline3Days.sol/contract.JBDeadline3Days.md +15 -0
  74. package/docs/src/src/periphery/JBDeadline3Hours.sol/contract.JBDeadline3Hours.md +15 -0
  75. package/docs/src/src/periphery/JBDeadline7Days.sol/contract.JBDeadline7Days.md +15 -0
  76. package/docs/src/src/periphery/JBMatchingPriceFeed.sol/contract.JBMatchingPriceFeed.md +22 -0
  77. package/docs/src/src/periphery/README.md +8 -0
  78. package/docs/src/src/structs/JBAccountingContext.sol/struct.JBAccountingContext.md +20 -0
  79. package/docs/src/src/structs/JBAfterCashOutRecordedContext.sol/struct.JBAfterCashOutRecordedContext.md +43 -0
  80. package/docs/src/src/structs/JBAfterPayRecordedContext.sol/struct.JBAfterPayRecordedContext.md +42 -0
  81. package/docs/src/src/structs/JBBeforeCashOutRecordedContext.sol/struct.JBBeforeCashOutRecordedContext.md +45 -0
  82. package/docs/src/src/structs/JBBeforePayRecordedContext.sol/struct.JBBeforePayRecordedContext.md +41 -0
  83. package/docs/src/src/structs/JBCashOutHookSpecification.sol/struct.JBCashOutHookSpecification.md +22 -0
  84. package/docs/src/src/structs/JBCurrencyAmount.sol/struct.JBCurrencyAmount.md +17 -0
  85. package/docs/src/src/structs/JBFee.sol/struct.JBFee.md +20 -0
  86. package/docs/src/src/structs/JBFundAccessLimitGroup.sol/struct.JBFundAccessLimitGroup.md +39 -0
  87. package/docs/src/src/structs/JBPayHookSpecification.sol/struct.JBPayHookSpecification.md +22 -0
  88. package/docs/src/src/structs/JBPermissionsData.sol/struct.JBPermissionsData.md +21 -0
  89. package/docs/src/src/structs/JBRuleset.sol/struct.JBRuleset.md +55 -0
  90. package/docs/src/src/structs/JBRulesetConfig.sol/struct.JBRulesetConfig.md +51 -0
  91. package/docs/src/src/structs/JBRulesetMetadata.sol/struct.JBRulesetMetadata.md +79 -0
  92. package/docs/src/src/structs/JBRulesetWeightCache.sol/struct.JBRulesetWeightCache.md +16 -0
  93. package/docs/src/src/structs/JBRulesetWithMetadata.sol/struct.JBRulesetWithMetadata.md +16 -0
  94. package/docs/src/src/structs/JBSingleAllowance.sol/struct.JBSingleAllowance.md +26 -0
  95. package/docs/src/src/structs/JBSplit.sol/struct.JBSplit.md +49 -0
  96. package/docs/src/src/structs/JBSplitGroup.sol/struct.JBSplitGroup.md +17 -0
  97. package/docs/src/src/structs/JBSplitHookContext.sol/struct.JBSplitHookContext.md +29 -0
  98. package/docs/src/src/structs/JBTerminalConfig.sol/struct.JBTerminalConfig.md +16 -0
  99. package/docs/src/src/structs/JBTokenAmount.sol/struct.JBTokenAmount.md +23 -0
  100. package/docs/src/src/structs/README.md +25 -0
  101. package/foundry.lock +11 -0
  102. package/foundry.toml +41 -0
  103. package/package.json +38 -0
  104. package/remappings.txt +1 -0
  105. package/script/Deploy.s.sol +111 -0
  106. package/script/DeployPeriphery.s.sol +287 -0
  107. package/script/helpers/CoreDeploymentLib.sol +121 -0
  108. package/slither-ci.config.json +10 -0
  109. package/sphinx.lock +507 -0
  110. package/src/JBChainlinkV3PriceFeed.sol +77 -0
  111. package/src/JBChainlinkV3SequencerPriceFeed.sol +75 -0
  112. package/src/JBController.sol +1186 -0
  113. package/src/JBDeadline.sol +73 -0
  114. package/src/JBDirectory.sol +343 -0
  115. package/src/JBERC20.sol +131 -0
  116. package/src/JBFeelessAddresses.sol +54 -0
  117. package/src/JBFundAccessLimits.sol +308 -0
  118. package/src/JBMultiTerminal.sol +2024 -0
  119. package/src/JBPermissions.sol +252 -0
  120. package/src/JBPrices.sol +227 -0
  121. package/src/JBProjects.sol +126 -0
  122. package/src/JBRulesets.sol +1093 -0
  123. package/src/JBSplits.sol +324 -0
  124. package/src/JBTerminalStore.sol +908 -0
  125. package/src/JBTokens.sol +376 -0
  126. package/src/abstract/JBControlled.sol +48 -0
  127. package/src/abstract/JBPermissioned.sol +77 -0
  128. package/src/enums/JBApprovalStatus.sol +12 -0
  129. package/src/interfaces/IJBCashOutHook.sol +15 -0
  130. package/src/interfaces/IJBCashOutTerminal.sol +51 -0
  131. package/src/interfaces/IJBControlled.sol +10 -0
  132. package/src/interfaces/IJBController.sol +280 -0
  133. package/src/interfaces/IJBDirectory.sol +69 -0
  134. package/src/interfaces/IJBDirectoryAccessControl.sol +15 -0
  135. package/src/interfaces/IJBFeeTerminal.sol +61 -0
  136. package/src/interfaces/IJBFeelessAddresses.sol +17 -0
  137. package/src/interfaces/IJBFundAccessLimits.sol +94 -0
  138. package/src/interfaces/IJBMigratable.sol +24 -0
  139. package/src/interfaces/IJBMultiTerminal.sol +36 -0
  140. package/src/interfaces/IJBPayHook.sol +14 -0
  141. package/src/interfaces/IJBPayoutTerminal.sol +92 -0
  142. package/src/interfaces/IJBPermissioned.sol +10 -0
  143. package/src/interfaces/IJBPermissions.sol +71 -0
  144. package/src/interfaces/IJBPermitTerminal.sol +14 -0
  145. package/src/interfaces/IJBPriceFeed.sol +10 -0
  146. package/src/interfaces/IJBPrices.sol +65 -0
  147. package/src/interfaces/IJBProjectUriRegistry.sol +15 -0
  148. package/src/interfaces/IJBProjects.sol +27 -0
  149. package/src/interfaces/IJBRulesetApprovalHook.sol +21 -0
  150. package/src/interfaces/IJBRulesetDataHook.sol +56 -0
  151. package/src/interfaces/IJBRulesets.sol +151 -0
  152. package/src/interfaces/IJBSplitHook.sol +16 -0
  153. package/src/interfaces/IJBSplits.sol +28 -0
  154. package/src/interfaces/IJBTerminal.sol +120 -0
  155. package/src/interfaces/IJBTerminalStore.sol +225 -0
  156. package/src/interfaces/IJBToken.sol +39 -0
  157. package/src/interfaces/IJBTokenUriResolver.sol +10 -0
  158. package/src/interfaces/IJBTokens.sol +113 -0
  159. package/src/libraries/JBCashOuts.sol +120 -0
  160. package/src/libraries/JBConstants.sol +14 -0
  161. package/src/libraries/JBCurrencyIds.sol +7 -0
  162. package/src/libraries/JBFees.sol +28 -0
  163. package/src/libraries/JBFixedPointNumber.sol +12 -0
  164. package/src/libraries/JBMetadataResolver.sol +306 -0
  165. package/src/libraries/JBRulesetMetadataResolver.sol +160 -0
  166. package/src/libraries/JBSplitGroupIds.sol +7 -0
  167. package/src/libraries/JBSurplus.sol +40 -0
  168. package/src/periphery/JBDeadline1Day.sol +8 -0
  169. package/src/periphery/JBDeadline3Days.sol +8 -0
  170. package/src/periphery/JBDeadline3Hours.sol +8 -0
  171. package/src/periphery/JBDeadline7Days.sol +8 -0
  172. package/src/periphery/JBMatchingPriceFeed.sol +13 -0
  173. package/src/structs/JBAccountingContext.sol +12 -0
  174. package/src/structs/JBAfterCashOutRecordedContext.sol +30 -0
  175. package/src/structs/JBAfterPayRecordedContext.sol +29 -0
  176. package/src/structs/JBBeforeCashOutRecordedContext.sol +31 -0
  177. package/src/structs/JBBeforePayRecordedContext.sol +28 -0
  178. package/src/structs/JBCashOutHookSpecification.sol +15 -0
  179. package/src/structs/JBCurrencyAmount.sol +10 -0
  180. package/src/structs/JBFee.sol +12 -0
  181. package/src/structs/JBFundAccessLimitGroup.sol +28 -0
  182. package/src/structs/JBPayHookSpecification.sol +15 -0
  183. package/src/structs/JBPermissionsData.sol +13 -0
  184. package/src/structs/JBRuleset.sol +42 -0
  185. package/src/structs/JBRulesetConfig.sol +43 -0
  186. package/src/structs/JBRulesetMetadata.sol +56 -0
  187. package/src/structs/JBRulesetWeightCache.sol +9 -0
  188. package/src/structs/JBRulesetWithMetadata.sol +12 -0
  189. package/src/structs/JBSingleAllowance.sol +16 -0
  190. package/src/structs/JBSplit.sol +37 -0
  191. package/src/structs/JBSplitGroup.sol +12 -0
  192. package/src/structs/JBSplitHookContext.sol +20 -0
  193. package/src/structs/JBTerminalConfig.sol +12 -0
  194. package/src/structs/JBTokenAmount.sol +14 -0
  195. package/test/AuditExploits.t.sol +2710 -0
  196. package/test/ComprehensiveInvariant.t.sol +298 -0
  197. package/test/EconomicSimulation.t.sol +340 -0
  198. package/test/EntryPointPermutations.t.sol +671 -0
  199. package/test/FlashLoanAttacks.t.sol +792 -0
  200. package/test/PermissionEscalation.t.sol +679 -0
  201. package/test/RulesetTransitions.t.sol +699 -0
  202. package/test/SplitLoopTests.t.sol +731 -0
  203. package/test/TestAccessToFunds.sol +2644 -0
  204. package/test/TestCashOut.sol +185 -0
  205. package/test/TestCashOutCountFor.sol +272 -0
  206. package/test/TestCashOutHooks.sol +317 -0
  207. package/test/TestCashOutTimingEdge.sol +229 -0
  208. package/test/TestDurationUnderflow.sol +220 -0
  209. package/test/TestFeeProcessingFailure.sol +208 -0
  210. package/test/TestFees.sol +604 -0
  211. package/test/TestInterfaceSupport.sol +62 -0
  212. package/test/TestJBERC20Inheritance.sol +91 -0
  213. package/test/TestLaunchProject.sol +176 -0
  214. package/test/TestMetaTx.sol +203 -0
  215. package/test/TestMetadataParserLib.sol +438 -0
  216. package/test/TestMigrationHeldFees.sol +249 -0
  217. package/test/TestMintTokensOf.sol +172 -0
  218. package/test/TestMultiTokenSurplus.sol +206 -0
  219. package/test/TestMultipleAccessLimits.sol +642 -0
  220. package/test/TestPayBurnRedeemFlow.sol +180 -0
  221. package/test/TestPayHooks.sol +190 -0
  222. package/test/TestPermissions.sol +305 -0
  223. package/test/TestPermissionsEdge.sol +286 -0
  224. package/test/TestPermit2Terminal.sol +339 -0
  225. package/test/TestRulesetQueueing.sol +1001 -0
  226. package/test/TestRulesetQueuingStress.sol +778 -0
  227. package/test/TestRulesetWeightCaching.sol +177 -0
  228. package/test/TestSplits.sol +369 -0
  229. package/test/TestTerminalMigration.sol +167 -0
  230. package/test/TestTokenFlow.sol +174 -0
  231. package/test/WeirdTokenTests.t.sol +764 -0
  232. package/test/formal/BondingCurveProperties.t.sol +411 -0
  233. package/test/formal/FeeProperties.t.sol +246 -0
  234. package/test/helpers/JBTest.sol +129 -0
  235. package/test/helpers/MetadataResolverHelper.sol +116 -0
  236. package/test/helpers/TestBaseWorkflow.sol +317 -0
  237. package/test/invariants/Phase3DeepInvariant.t.sol +404 -0
  238. package/test/invariants/RulesetsInvariant.t.sol +115 -0
  239. package/test/invariants/TerminalStoreInvariant.t.sol +220 -0
  240. package/test/invariants/TokensInvariant.t.sol +184 -0
  241. package/test/invariants/handlers/ComprehensiveHandler.sol +285 -0
  242. package/test/invariants/handlers/EconomicHandler.sol +347 -0
  243. package/test/invariants/handlers/Phase3Handler.sol +414 -0
  244. package/test/invariants/handlers/RulesetsHandler.sol +111 -0
  245. package/test/invariants/handlers/TerminalStoreHandler.sol +146 -0
  246. package/test/invariants/handlers/TokensHandler.sol +127 -0
  247. package/test/mock/ERC2771ForwarderMock.sol +37 -0
  248. package/test/mock/MockERC20.sol +18 -0
  249. package/test/mock/MockMaliciousBeneficiary.sol +67 -0
  250. package/test/mock/MockMaliciousSplitHook.sol +42 -0
  251. package/test/mock/MockPriceFeed.sol +20 -0
  252. package/test/trees/JBController/burnTokensOf.tree +9 -0
  253. package/test/trees/JBController/claimTokensFor.tree +5 -0
  254. package/test/trees/JBController/deployERC20For.tree +5 -0
  255. package/test/trees/JBController/getRulesetOf.tree +5 -0
  256. package/test/trees/JBController/launchProjectFor.tree +12 -0
  257. package/test/trees/JBController/launchRulesetsFor.tree +8 -0
  258. package/test/trees/JBController/migrateController.tree +12 -0
  259. package/test/trees/JBController/mintTokensOf.tree +12 -0
  260. package/test/trees/JBController/payReservedTokenToTerminal.tree +8 -0
  261. package/test/trees/JBController/receiveMigrationFrom.tree +4 -0
  262. package/test/trees/JBController/sendReservedTokensToSplitsOf.tree +12 -0
  263. package/test/trees/JBController/setMetadataOf.tree +5 -0
  264. package/test/trees/JBController/setSplitGroupsOf.tree +5 -0
  265. package/test/trees/JBController/setTokenFor.tree +5 -0
  266. package/test/trees/JBController/transferCreditsFrom.tree +8 -0
  267. package/test/trees/JBDirectory/primaryTerminalOf.tree +8 -0
  268. package/test/trees/JBDirectory/setControllerOf.tree +11 -0
  269. package/test/trees/JBDirectory/setPrimaryTerminalOf.tree +15 -0
  270. package/test/trees/JBDirectory/setTerminalsOf.tree +11 -0
  271. package/test/trees/JBERC20/initialize.tree +7 -0
  272. package/test/trees/JBERC20/name.tree +5 -0
  273. package/test/trees/JBERC20/nonces.tree +5 -0
  274. package/test/trees/JBERC20/symbol.tree +5 -0
  275. package/test/trees/JBFeelessAddresses/setFeelessAddress.tree +5 -0
  276. package/test/trees/JBFeelessAddresses/supportsInterface.tree +5 -0
  277. package/test/trees/JBFundAccessLimits/payoutLimitOf.tree +5 -0
  278. package/test/trees/JBFundAccessLimits/payoutLimitsOf.tree +8 -0
  279. package/test/trees/JBFundAccessLimits/setFundAccessLimitsFor.tree +18 -0
  280. package/test/trees/JBFundAccessLimits/surplusAllowanceOf.tree +5 -0
  281. package/test/trees/JBFundAccessLimits/surplusAllowancesOf.tree +8 -0
  282. package/test/trees/JBMetadataResolver/getDataFor.tree +8 -0
  283. package/test/trees/JBMultiTerminal/accountingContextsOf.tree +5 -0
  284. package/test/trees/JBMultiTerminal/addAccountingContextsFor.tree +10 -0
  285. package/test/trees/JBMultiTerminal/addToBalanceOf.tree +23 -0
  286. package/test/trees/JBMultiTerminal/cashOutTokensOf.tree +23 -0
  287. package/test/trees/JBMultiTerminal/executePayout.tree +32 -0
  288. package/test/trees/JBMultiTerminal/executeProcessFee.tree +14 -0
  289. package/test/trees/JBMultiTerminal/migrateBalanceOf.tree +12 -0
  290. package/test/trees/JBMultiTerminal/pay.tree +23 -0
  291. package/test/trees/JBMultiTerminal/processHeldFeesOf.tree +8 -0
  292. package/test/trees/JBMultiTerminal/sendPayoutsOf.tree +34 -0
  293. package/test/trees/JBMultiTerminal/useAllowanceOf.tree +16 -0
  294. package/test/trees/JBPermissions/hasPermission.tree +8 -0
  295. package/test/trees/JBPermissions/hasPermissions.tree +8 -0
  296. package/test/trees/JBPermissions/setPermissionsFor.tree +5 -0
  297. package/test/trees/JBPrices/addPriceFeedFor.tree +14 -0
  298. package/test/trees/JBPrices/pricePerUnitOf.tree +11 -0
  299. package/test/trees/JBProjects/createFor.tree +11 -0
  300. package/test/trees/JBProjects/setTokenUriResolver.tree +5 -0
  301. package/test/trees/JBProjects/supportsInterface.tree +9 -0
  302. package/test/trees/JBProjects/tokenURI.tree +5 -0
  303. package/test/trees/JBRulesets/currentApprovalStatusForLatestRulesetOf.tree +8 -0
  304. package/test/trees/JBRulesets/currentOf.tree +12 -0
  305. package/test/trees/JBRulesets/getRulesetOf.tree +5 -0
  306. package/test/trees/JBRulesets/latestQueuedRulesetOf.tree +10 -0
  307. package/test/trees/JBRulesets/rulesetsOf.tree +11 -0
  308. package/test/trees/JBRulesets/upcomingRulesetOf.tree +20 -0
  309. package/test/trees/JBRulesets/updateRulesetWeightCache.tree +5 -0
  310. package/test/trees/JBSplits/setSplitGroupsOf.tree +17 -0
  311. package/test/trees/JBSplits/splitsOf.tree +5 -0
  312. package/test/trees/JBTerminalStore/currentReclaimableSurplusOf.tree +16 -0
  313. package/test/trees/JBTerminalStore/currentSurplusOf.tree +25 -0
  314. package/test/trees/JBTerminalStore/currentTotalSurplusOf.tree +5 -0
  315. package/test/trees/JBTerminalStore/recordCashOutsFor.tree +16 -0
  316. package/test/trees/JBTerminalStore/recordPaymentFrom.tree +14 -0
  317. package/test/trees/JBTerminalStore/recordPayoutFor.tree +10 -0
  318. package/test/trees/JBTerminalStore/recordTerminalMigration.tree +5 -0
  319. package/test/trees/JBTerminalStore/recordUsedAllowanceOf.tree +10 -0
  320. package/test/trees/JBTokens/burnFrom.tree +10 -0
  321. package/test/trees/JBTokens/claimTokensFor.tree +10 -0
  322. package/test/trees/JBTokens/deployERC20For.tree +12 -0
  323. package/test/trees/JBTokens/mintFor.tree +10 -0
  324. package/test/trees/JBTokens/setTokenFor.tree +11 -0
  325. package/test/trees/JBTokens/totalBalanceOf.tree +5 -0
  326. package/test/trees/JBTokens/totalSupplyOf.tree +5 -0
  327. package/test/trees/JBTokens/transferCreditsFrom.tree +8 -0
  328. package/test/trees/mintTokensOf.tree +12 -0
  329. package/test/units/static/JBChainlinkV3PriceFeed/TestPriceFeed.sol +220 -0
  330. package/test/units/static/JBController/JBControllerSetup.sol +40 -0
  331. package/test/units/static/JBController/TestBurnTokensOf.sol +107 -0
  332. package/test/units/static/JBController/TestClaimTokensFor.sol +60 -0
  333. package/test/units/static/JBController/TestDeployErc20For.sol +80 -0
  334. package/test/units/static/JBController/TestLaunchProjectFor.sol +282 -0
  335. package/test/units/static/JBController/TestLaunchRulesetsFor.sol +322 -0
  336. package/test/units/static/JBController/TestMigrateController.sol +148 -0
  337. package/test/units/static/JBController/TestMintTokensOfUnits.sol +102 -0
  338. package/test/units/static/JBController/TestPayReservedTokenToTerminal.sol +71 -0
  339. package/test/units/static/JBController/TestReceiveMigrationFrom.sol +95 -0
  340. package/test/units/static/JBController/TestRulesetViews.sol +219 -0
  341. package/test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol +595 -0
  342. package/test/units/static/JBController/TestSetSplitGroupsOf.sol +63 -0
  343. package/test/units/static/JBController/TestSetTokenFor.sol +227 -0
  344. package/test/units/static/JBController/TestSetUriOf.sol +53 -0
  345. package/test/units/static/JBController/TestTransferCreditsFrom.sol +159 -0
  346. package/test/units/static/JBDeadline/TestDeadlineFuzz.sol +194 -0
  347. package/test/units/static/JBDirectory/JBDirectorySetup.sol +22 -0
  348. package/test/units/static/JBDirectory/TestPrimaryTerminalOf.sol +122 -0
  349. package/test/units/static/JBDirectory/TestSetControllerOf.sol +173 -0
  350. package/test/units/static/JBDirectory/TestSetControllerOfMigrationOrder.sol +98 -0
  351. package/test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol +169 -0
  352. package/test/units/static/JBDirectory/TestSetTerminalsOf.sol +128 -0
  353. package/test/units/static/JBERC20/JBERC20Setup.sol +20 -0
  354. package/test/units/static/JBERC20/SigUtils.sol +34 -0
  355. package/test/units/static/JBERC20/TestInitialize.sol +54 -0
  356. package/test/units/static/JBERC20/TestName.sol +30 -0
  357. package/test/units/static/JBERC20/TestNonces.sol +59 -0
  358. package/test/units/static/JBERC20/TestSymbol.sol +31 -0
  359. package/test/units/static/JBFeelessAdresses/JBFeelessSetup.sol +20 -0
  360. package/test/units/static/JBFeelessAdresses/TestInterfaces.sol +29 -0
  361. package/test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol +35 -0
  362. package/test/units/static/JBFees/TestFeesFuzz.sol +78 -0
  363. package/test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol +16 -0
  364. package/test/units/static/JBFixedPointNumber/TestAdjustDecimalsFuzz.sol +71 -0
  365. package/test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol +21 -0
  366. package/test/units/static/JBFundAccessLimits/TestFundAccessLimitsEdge.sol +159 -0
  367. package/test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol +56 -0
  368. package/test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol +94 -0
  369. package/test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol +182 -0
  370. package/test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol +61 -0
  371. package/test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol +96 -0
  372. package/test/units/static/JBMetadataResolver/TestGetDataFor.sol +89 -0
  373. package/test/units/static/JBMetadataResolver/TestMetadataResolverFuzz.sol +227 -0
  374. package/test/units/static/JBMetadataResolver/TestMetadataResolverM20M21.sol +245 -0
  375. package/test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol +39 -0
  376. package/test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol +65 -0
  377. package/test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol +313 -0
  378. package/test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol +432 -0
  379. package/test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol +478 -0
  380. package/test/units/static/JBMultiTerminal/TestExecutePayout.sol +577 -0
  381. package/test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol +176 -0
  382. package/test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol +190 -0
  383. package/test/units/static/JBMultiTerminal/TestPay.sol +514 -0
  384. package/test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol +29 -0
  385. package/test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol +243 -0
  386. package/test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol +310 -0
  387. package/test/units/static/JBPermissions/JBPermissionsSetup.sol +18 -0
  388. package/test/units/static/JBPermissions/TestHasPermission.sol +50 -0
  389. package/test/units/static/JBPermissions/TestHasPermissions.sol +93 -0
  390. package/test/units/static/JBPermissions/TestSetPermissionsFor.sol +62 -0
  391. package/test/units/static/JBPrices/JBPricesSetup.sol +26 -0
  392. package/test/units/static/JBPrices/TestAddPriceFeedFor.sol +102 -0
  393. package/test/units/static/JBPrices/TestPricePerUnitOf.sol +129 -0
  394. package/test/units/static/JBPrices/TestPrices.sol +262 -0
  395. package/test/units/static/JBProjects/JBProjectsSetup.sol +20 -0
  396. package/test/units/static/JBProjects/TestCreateFor.sol +69 -0
  397. package/test/units/static/JBProjects/TestInitialProject.sol +19 -0
  398. package/test/units/static/JBProjects/TestInterfaces.sol +27 -0
  399. package/test/units/static/JBProjects/TestSetResolver.sol +36 -0
  400. package/test/units/static/JBProjects/TestTokenUri.sol +38 -0
  401. package/test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol +99 -0
  402. package/test/units/static/JBRulesets/JBRulesetsSetup.sol +21 -0
  403. package/test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol +257 -0
  404. package/test/units/static/JBRulesets/TestCurrentOf.sol +231 -0
  405. package/test/units/static/JBRulesets/TestGetRulesetOf.sol +94 -0
  406. package/test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol +252 -0
  407. package/test/units/static/JBRulesets/TestRulesets.sol +617 -0
  408. package/test/units/static/JBRulesets/TestRulesetsOf.sol +37 -0
  409. package/test/units/static/JBRulesets/TestUpcomingRulesetOf.sol +526 -0
  410. package/test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol +91 -0
  411. package/test/units/static/JBSplits/JBSplitsSetup.sol +23 -0
  412. package/test/units/static/JBSplits/TestSelfManagedSplitGroups.sol +502 -0
  413. package/test/units/static/JBSplits/TestSetSplitGroupsOf.sol +370 -0
  414. package/test/units/static/JBSplits/TestSplitsLockedEdge.sol +262 -0
  415. package/test/units/static/JBSplits/TestSplitsOf.sol +24 -0
  416. package/test/units/static/JBSplits/TestSplitsPacking.sol +33 -0
  417. package/test/units/static/JBSurplus/TestSurplusFuzz.sol +125 -0
  418. package/test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol +23 -0
  419. package/test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol +434 -0
  420. package/test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol +428 -0
  421. package/test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol +65 -0
  422. package/test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol +479 -0
  423. package/test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol +508 -0
  424. package/test/units/static/JBTerminalStore/TestRecordPayoutFor.sol +257 -0
  425. package/test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol +131 -0
  426. package/test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol +390 -0
  427. package/test/units/static/JBTerminalStore/TestUint224Overflow.sol +187 -0
  428. package/test/units/static/JBTokens/JBTokensSetup.sol +23 -0
  429. package/test/units/static/JBTokens/TestBurnFrom.sol +104 -0
  430. package/test/units/static/JBTokens/TestClaimTokensFor.sol +107 -0
  431. package/test/units/static/JBTokens/TestDeployERC20ForUnits.sol +89 -0
  432. package/test/units/static/JBTokens/TestMintFor.sol +97 -0
  433. package/test/units/static/JBTokens/TestSetTokenFor.sol +95 -0
  434. package/test/units/static/JBTokens/TestTotalBalanceOf.sol +65 -0
  435. package/test/units/static/JBTokens/TestTotalSupplyOf.sol +56 -0
  436. package/test/units/static/JBTokens/TestTransferCreditsFrom.sol +54 -0
@@ -0,0 +1,353 @@
1
+ # JBTokens
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/JBTokens.sol)
3
+
4
+ **Inherits:**
5
+ [JBControlled](/src/abstract/JBControlled.sol/abstract.JBControlled.md), [IJBTokens](/src/interfaces/IJBTokens.sol/interface.IJBTokens.md)
6
+
7
+ Manages minting, burning, and balances of projects' tokens and token credits.
8
+
9
+ *Token balances can either be ERC-20s or token credits. This contract manages these two representations and
10
+ allows credit -> ERC-20 claiming.*
11
+
12
+ *The total supply of a project's tokens and the balance of each account are calculated in this contract.*
13
+
14
+ *An ERC-20 contract must be set by a project's owner for ERC-20 claiming to become available. Projects can bring
15
+ their own IJBToken if they prefer.*
16
+
17
+
18
+ ## State Variables
19
+ ### TOKEN
20
+ A reference to the token implementation that'll be cloned as projects deploy their own tokens.
21
+
22
+
23
+ ```solidity
24
+ IJBToken public immutable TOKEN;
25
+ ```
26
+
27
+
28
+ ### creditBalanceOf
29
+ Each holder's credit balance for each project.
30
+
31
+
32
+ ```solidity
33
+ mapping(address holder => mapping(uint256 projectId => uint256)) public override creditBalanceOf;
34
+ ```
35
+
36
+
37
+ ### projectIdOf
38
+ Each token's project.
39
+
40
+
41
+ ```solidity
42
+ mapping(IJBToken token => uint256) public override projectIdOf;
43
+ ```
44
+
45
+
46
+ ### tokenOf
47
+ Each project's attached token contract.
48
+
49
+
50
+ ```solidity
51
+ mapping(uint256 projectId => IJBToken) public override tokenOf;
52
+ ```
53
+
54
+
55
+ ### totalCreditSupplyOf
56
+ The total supply of credits for each project.
57
+
58
+
59
+ ```solidity
60
+ mapping(uint256 projectId => uint256) public override totalCreditSupplyOf;
61
+ ```
62
+
63
+
64
+ ## Functions
65
+ ### constructor
66
+
67
+
68
+ ```solidity
69
+ constructor(IJBDirectory directory, IJBToken token) JBControlled(directory);
70
+ ```
71
+ **Parameters**
72
+
73
+ |Name|Type|Description|
74
+ |----|----|-----------|
75
+ |`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
76
+ |`token`|`IJBToken`|The implementation of the token contract that project can deploy.|
77
+
78
+
79
+ ### totalBalanceOf
80
+
81
+ The total balance a holder has for a specified project, including both tokens and token credits.
82
+
83
+
84
+ ```solidity
85
+ function totalBalanceOf(address holder, uint256 projectId) external view override returns (uint256 balance);
86
+ ```
87
+ **Parameters**
88
+
89
+ |Name|Type|Description|
90
+ |----|----|-----------|
91
+ |`holder`|`address`|The holder to get a balance for.|
92
+ |`projectId`|`uint256`|The project to get the `_holder`s balance for.|
93
+
94
+ **Returns**
95
+
96
+ |Name|Type|Description|
97
+ |----|----|-----------|
98
+ |`balance`|`uint256`|The combined token and token credit balance of the `_holder|
99
+
100
+
101
+ ### totalSupplyOf
102
+
103
+ The total supply for a specific project, including both tokens and token credits.
104
+
105
+
106
+ ```solidity
107
+ function totalSupplyOf(uint256 projectId) public view override returns (uint256 totalSupply);
108
+ ```
109
+ **Parameters**
110
+
111
+ |Name|Type|Description|
112
+ |----|----|-----------|
113
+ |`projectId`|`uint256`|The ID of the project to get the total supply of.|
114
+
115
+ **Returns**
116
+
117
+ |Name|Type|Description|
118
+ |----|----|-----------|
119
+ |`totalSupply`|`uint256`|The total supply of the project's tokens and token credits.|
120
+
121
+
122
+ ### burnFrom
123
+
124
+ Burns (destroys) credits or tokens.
125
+
126
+ *Credits are burned first, then tokens are burned.*
127
+
128
+ *Only a project's current controller can burn its tokens.*
129
+
130
+
131
+ ```solidity
132
+ function burnFrom(address holder, uint256 projectId, uint256 count) external override onlyControllerOf(projectId);
133
+ ```
134
+ **Parameters**
135
+
136
+ |Name|Type|Description|
137
+ |----|----|-----------|
138
+ |`holder`|`address`|The address that owns the tokens which are being burned.|
139
+ |`projectId`|`uint256`|The ID of the project to the burned tokens belong to.|
140
+ |`count`|`uint256`|The number of tokens to burn.|
141
+
142
+
143
+ ### claimTokensFor
144
+
145
+ Redeem credits to claim tokens into a holder's wallet.
146
+
147
+ *Only a project's controller can claim that project's tokens.*
148
+
149
+
150
+ ```solidity
151
+ function claimTokensFor(
152
+ address holder,
153
+ uint256 projectId,
154
+ uint256 count,
155
+ address beneficiary
156
+ )
157
+ external
158
+ override
159
+ onlyControllerOf(projectId);
160
+ ```
161
+ **Parameters**
162
+
163
+ |Name|Type|Description|
164
+ |----|----|-----------|
165
+ |`holder`|`address`|The owner of the credits being redeemed.|
166
+ |`projectId`|`uint256`|The ID of the project whose tokens are being claimed.|
167
+ |`count`|`uint256`|The number of tokens to claim.|
168
+ |`beneficiary`|`address`|The account into which the claimed tokens will go.|
169
+
170
+
171
+ ### deployERC20For
172
+
173
+ Deploys an ERC-20 token for a project. It will be used when claiming tokens.
174
+
175
+ *Deploys a project's ERC-20 token contract.*
176
+
177
+ *Only a project's controller can deploy its token.*
178
+
179
+
180
+ ```solidity
181
+ function deployERC20For(
182
+ uint256 projectId,
183
+ string calldata name,
184
+ string calldata symbol,
185
+ bytes32 salt
186
+ )
187
+ external
188
+ override
189
+ onlyControllerOf(projectId)
190
+ returns (IJBToken token);
191
+ ```
192
+ **Parameters**
193
+
194
+ |Name|Type|Description|
195
+ |----|----|-----------|
196
+ |`projectId`|`uint256`|The ID of the project to deploy an ERC-20 token for.|
197
+ |`name`|`string`|The ERC-20's name.|
198
+ |`symbol`|`string`|The ERC-20's symbol.|
199
+ |`salt`|`bytes32`|The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.|
200
+
201
+ **Returns**
202
+
203
+ |Name|Type|Description|
204
+ |----|----|-----------|
205
+ |`token`|`IJBToken`|The address of the token that was deployed.|
206
+
207
+
208
+ ### mintFor
209
+
210
+ Mint (create) new tokens or credits.
211
+
212
+ *Only a project's current controller can mint its tokens.*
213
+
214
+
215
+ ```solidity
216
+ function mintFor(
217
+ address holder,
218
+ uint256 projectId,
219
+ uint256 count
220
+ )
221
+ external
222
+ override
223
+ onlyControllerOf(projectId)
224
+ returns (IJBToken token);
225
+ ```
226
+ **Parameters**
227
+
228
+ |Name|Type|Description|
229
+ |----|----|-----------|
230
+ |`holder`|`address`|The address receiving the new tokens.|
231
+ |`projectId`|`uint256`|The ID of the project to which the tokens belong.|
232
+ |`count`|`uint256`|The number of tokens to mint.|
233
+
234
+ **Returns**
235
+
236
+ |Name|Type|Description|
237
+ |----|----|-----------|
238
+ |`token`|`IJBToken`|The address of the token that was minted, if the project has a token.|
239
+
240
+
241
+ ### setTokenFor
242
+
243
+ Set a project's token if not already set.
244
+
245
+ *Only a project's controller can set its token.*
246
+
247
+
248
+ ```solidity
249
+ function setTokenFor(uint256 projectId, IJBToken token) external override onlyControllerOf(projectId);
250
+ ```
251
+ **Parameters**
252
+
253
+ |Name|Type|Description|
254
+ |----|----|-----------|
255
+ |`projectId`|`uint256`|The ID of the project to set the token of.|
256
+ |`token`|`IJBToken`|The new token's address.|
257
+
258
+
259
+ ### transferCreditsFrom
260
+
261
+ Allows a holder to transfer credits to another account.
262
+
263
+ *Only a project's controller can transfer credits for that project.*
264
+
265
+
266
+ ```solidity
267
+ function transferCreditsFrom(
268
+ address holder,
269
+ uint256 projectId,
270
+ address recipient,
271
+ uint256 count
272
+ )
273
+ external
274
+ override
275
+ onlyControllerOf(projectId);
276
+ ```
277
+ **Parameters**
278
+
279
+ |Name|Type|Description|
280
+ |----|----|-----------|
281
+ |`holder`|`address`|The address to transfer credits from.|
282
+ |`projectId`|`uint256`|The ID of the project whose credits are being transferred.|
283
+ |`recipient`|`address`|The recipient of the credits.|
284
+ |`count`|`uint256`|The number of token credits to transfer.|
285
+
286
+
287
+ ## Errors
288
+ ### JBTokens_EmptyName
289
+
290
+ ```solidity
291
+ error JBTokens_EmptyName();
292
+ ```
293
+
294
+ ### JBTokens_EmptySymbol
295
+
296
+ ```solidity
297
+ error JBTokens_EmptySymbol();
298
+ ```
299
+
300
+ ### JBTokens_EmptyToken
301
+
302
+ ```solidity
303
+ error JBTokens_EmptyToken();
304
+ ```
305
+
306
+ ### JBTokens_InsufficientCredits
307
+
308
+ ```solidity
309
+ error JBTokens_InsufficientCredits(uint256 count, uint256 creditBalance);
310
+ ```
311
+
312
+ ### JBTokens_InsufficientTokensToBurn
313
+
314
+ ```solidity
315
+ error JBTokens_InsufficientTokensToBurn(uint256 count, uint256 tokenBalance);
316
+ ```
317
+
318
+ ### JBTokens_OverflowAlert
319
+
320
+ ```solidity
321
+ error JBTokens_OverflowAlert(uint256 value, uint256 limit);
322
+ ```
323
+
324
+ ### JBTokens_ProjectAlreadyHasToken
325
+
326
+ ```solidity
327
+ error JBTokens_ProjectAlreadyHasToken(IJBToken token);
328
+ ```
329
+
330
+ ### JBTokens_TokenAlreadyBeingUsed
331
+
332
+ ```solidity
333
+ error JBTokens_TokenAlreadyBeingUsed(uint256 projectId);
334
+ ```
335
+
336
+ ### JBTokens_TokenCantBeAdded
337
+
338
+ ```solidity
339
+ error JBTokens_TokenCantBeAdded(uint256 projectId);
340
+ ```
341
+
342
+ ### JBTokens_TokenNotFound
343
+
344
+ ```solidity
345
+ error JBTokens_TokenNotFound();
346
+ ```
347
+
348
+ ### JBTokens_TokensMustHave18Decimals
349
+
350
+ ```solidity
351
+ error JBTokens_TokensMustHave18Decimals(uint256 decimals);
352
+ ```
353
+
@@ -0,0 +1,25 @@
1
+
2
+
3
+ # Contents
4
+ - [abstract](/src/abstract)
5
+ - [enums](/src/enums)
6
+ - [interfaces](/src/interfaces)
7
+ - [libraries](/src/libraries)
8
+ - [periphery](/src/periphery)
9
+ - [structs](/src/structs)
10
+ - [JBChainlinkV3PriceFeed](JBChainlinkV3PriceFeed.sol/contract.JBChainlinkV3PriceFeed.md)
11
+ - [JBChainlinkV3SequencerPriceFeed](JBChainlinkV3SequencerPriceFeed.sol/contract.JBChainlinkV3SequencerPriceFeed.md)
12
+ - [JBController](JBController.sol/contract.JBController.md)
13
+ - [JBDeadline](JBDeadline.sol/contract.JBDeadline.md)
14
+ - [JBDirectory](JBDirectory.sol/contract.JBDirectory.md)
15
+ - [JBERC20](JBERC20.sol/contract.JBERC20.md)
16
+ - [JBFeelessAddresses](JBFeelessAddresses.sol/contract.JBFeelessAddresses.md)
17
+ - [JBFundAccessLimits](JBFundAccessLimits.sol/contract.JBFundAccessLimits.md)
18
+ - [JBMultiTerminal](JBMultiTerminal.sol/contract.JBMultiTerminal.md)
19
+ - [JBPermissions](JBPermissions.sol/contract.JBPermissions.md)
20
+ - [JBPrices](JBPrices.sol/contract.JBPrices.md)
21
+ - [JBProjects](JBProjects.sol/contract.JBProjects.md)
22
+ - [JBRulesets](JBRulesets.sol/contract.JBRulesets.md)
23
+ - [JBSplits](JBSplits.sol/contract.JBSplits.md)
24
+ - [JBTerminalStore](JBTerminalStore.sol/contract.JBTerminalStore.md)
25
+ - [JBTokens](JBTokens.sol/contract.JBTokens.md)
@@ -0,0 +1,64 @@
1
+ # JBControlled
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/abstract/JBControlled.sol)
3
+
4
+ **Inherits:**
5
+ [IJBControlled](/src/interfaces/IJBControlled.sol/interface.IJBControlled.md)
6
+
7
+ Provides a modifier for contracts with functionality that can only be accessed by a project's controller.
8
+
9
+
10
+ ## State Variables
11
+ ### DIRECTORY
12
+ The directory of terminals and controllers for projects.
13
+
14
+
15
+ ```solidity
16
+ IJBDirectory public immutable override DIRECTORY;
17
+ ```
18
+
19
+
20
+ ## Functions
21
+ ### onlyControllerOf
22
+
23
+ Only allows the controller of the specified project to proceed.
24
+
25
+
26
+ ```solidity
27
+ modifier onlyControllerOf(uint256 projectId);
28
+ ```
29
+ **Parameters**
30
+
31
+ |Name|Type|Description|
32
+ |----|----|-----------|
33
+ |`projectId`|`uint256`|The ID of the project.|
34
+
35
+
36
+ ### constructor
37
+
38
+
39
+ ```solidity
40
+ constructor(IJBDirectory directory);
41
+ ```
42
+ **Parameters**
43
+
44
+ |Name|Type|Description|
45
+ |----|----|-----------|
46
+ |`directory`|`IJBDirectory`|A contract storing directories of terminals and controllers for each project.|
47
+
48
+
49
+ ### _onlyControllerOf
50
+
51
+ Only allows the controller of the specified project to proceed.
52
+
53
+
54
+ ```solidity
55
+ function _onlyControllerOf(uint256 projectId) internal view;
56
+ ```
57
+
58
+ ## Errors
59
+ ### JBControlled_ControllerUnauthorized
60
+
61
+ ```solidity
62
+ error JBControlled_ControllerUnauthorized(address controller);
63
+ ```
64
+
@@ -0,0 +1,84 @@
1
+ # JBPermissioned
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/abstract/JBPermissioned.sol)
3
+
4
+ **Inherits:**
5
+ Context, [IJBPermissioned](/src/interfaces/IJBPermissioned.sol/interface.IJBPermissioned.md)
6
+
7
+ Modifiers to allow access to transactions based on which permissions the message's sender has.
8
+
9
+
10
+ ## State Variables
11
+ ### PERMISSIONS
12
+ A contract storing permissions.
13
+
14
+
15
+ ```solidity
16
+ IJBPermissions public immutable override PERMISSIONS;
17
+ ```
18
+
19
+
20
+ ## Functions
21
+ ### constructor
22
+
23
+
24
+ ```solidity
25
+ constructor(IJBPermissions permissions);
26
+ ```
27
+ **Parameters**
28
+
29
+ |Name|Type|Description|
30
+ |----|----|-----------|
31
+ |`permissions`|`IJBPermissions`|A contract storing permissions.|
32
+
33
+
34
+ ### _requirePermissionFrom
35
+
36
+ Require the message sender to be the account or have the relevant permission.
37
+
38
+
39
+ ```solidity
40
+ function _requirePermissionFrom(address account, uint256 projectId, uint256 permissionId) internal view;
41
+ ```
42
+ **Parameters**
43
+
44
+ |Name|Type|Description|
45
+ |----|----|-----------|
46
+ |`account`|`address`|The account to allow.|
47
+ |`projectId`|`uint256`|The project ID to check the permission under.|
48
+ |`permissionId`|`uint256`|The required permission ID. The operator must have this permission within the specified project ID.|
49
+
50
+
51
+ ### _requirePermissionAllowingOverrideFrom
52
+
53
+ If the 'alsoGrantAccessIf' condition is truthy, proceed. Otherwise, require the message sender to be the
54
+ account or
55
+ have the relevant permission.
56
+
57
+
58
+ ```solidity
59
+ function _requirePermissionAllowingOverrideFrom(
60
+ address account,
61
+ uint256 projectId,
62
+ uint256 permissionId,
63
+ bool alsoGrantAccessIf
64
+ )
65
+ internal
66
+ view;
67
+ ```
68
+ **Parameters**
69
+
70
+ |Name|Type|Description|
71
+ |----|----|-----------|
72
+ |`account`|`address`|The account to allow.|
73
+ |`projectId`|`uint256`|The project ID to check the permission under.|
74
+ |`permissionId`|`uint256`|The required permission ID. The operator must have this permission within the specified project ID.|
75
+ |`alsoGrantAccessIf`|`bool`|An override condition which will allow access regardless of permissions.|
76
+
77
+
78
+ ## Errors
79
+ ### JBPermissioned_Unauthorized
80
+
81
+ ```solidity
82
+ error JBPermissioned_Unauthorized(address account, address sender, uint256 projectId, uint256 permissionId);
83
+ ```
84
+
@@ -0,0 +1,5 @@
1
+
2
+
3
+ # Contents
4
+ - [JBControlled](JBControlled.sol/abstract.JBControlled.md)
5
+ - [JBPermissioned](JBPermissioned.sol/abstract.JBPermissioned.md)
@@ -0,0 +1,17 @@
1
+ # JBApprovalStatus
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/enums/JBApprovalStatus.sol)
3
+
4
+ A ruleset's approval status in a ruleset approval hook.
5
+
6
+
7
+ ```solidity
8
+ enum JBApprovalStatus {
9
+ Empty,
10
+ Upcoming,
11
+ Active,
12
+ ApprovalExpected,
13
+ Approved,
14
+ Failed
15
+ }
16
+ ```
17
+
@@ -0,0 +1,4 @@
1
+
2
+
3
+ # Contents
4
+ - [JBApprovalStatus](JBApprovalStatus.sol/enum.JBApprovalStatus.md)
@@ -0,0 +1,29 @@
1
+ # IJBCashOutHook
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBCashOutHook.sol)
3
+
4
+ **Inherits:**
5
+ IERC165
6
+
7
+ Hook called after a terminal's `cashOutTokensOf(...)` logic completes (if passed by the ruleset's data
8
+ hook).
9
+
10
+
11
+ ## Functions
12
+ ### afterCashOutRecordedWith
13
+
14
+ This function is called by the terminal's `cashOutTokensOf(...)` function after the cash out has been
15
+ recorded in the terminal store.
16
+
17
+ *Critical business logic should be protected by appropriate access control.*
18
+
19
+
20
+ ```solidity
21
+ function afterCashOutRecordedWith(JBAfterCashOutRecordedContext calldata context) external payable;
22
+ ```
23
+ **Parameters**
24
+
25
+ |Name|Type|Description|
26
+ |----|----|-----------|
27
+ |`context`|`JBAfterCashOutRecordedContext`|The context passed in by the terminal, as a `JBAfterCashOutRecordedContext` struct.|
28
+
29
+
@@ -0,0 +1,57 @@
1
+ # IJBCashOutTerminal
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBCashOutTerminal.sol)
3
+
4
+ **Inherits:**
5
+ [IJBTerminal](/src/interfaces/IJBTerminal.sol/interface.IJBTerminal.md)
6
+
7
+ A terminal that can be cashed out from.
8
+
9
+
10
+ ## Functions
11
+ ### cashOutTokensOf
12
+
13
+
14
+ ```solidity
15
+ function cashOutTokensOf(
16
+ address holder,
17
+ uint256 projectId,
18
+ uint256 cashOutCount,
19
+ address tokenToReclaim,
20
+ uint256 minTokensReclaimed,
21
+ address payable beneficiary,
22
+ bytes calldata metadata
23
+ )
24
+ external
25
+ returns (uint256 reclaimAmount);
26
+ ```
27
+
28
+ ## Events
29
+ ### HookAfterRecordCashOut
30
+
31
+ ```solidity
32
+ event HookAfterRecordCashOut(
33
+ IJBCashOutHook indexed hook,
34
+ JBAfterCashOutRecordedContext context,
35
+ uint256 specificationAmount,
36
+ uint256 fee,
37
+ address caller
38
+ );
39
+ ```
40
+
41
+ ### CashOutTokens
42
+
43
+ ```solidity
44
+ event CashOutTokens(
45
+ uint256 indexed rulesetId,
46
+ uint256 indexed rulesetCycleNumber,
47
+ uint256 indexed projectId,
48
+ address holder,
49
+ address beneficiary,
50
+ uint256 cashOutCount,
51
+ uint256 cashOutTaxRate,
52
+ uint256 reclaimAmount,
53
+ bytes metadata,
54
+ address caller
55
+ );
56
+ ```
57
+
@@ -0,0 +1,12 @@
1
+ # IJBControlled
2
+ [Git Source](https://github.com/Bananapus/nana-core/blob/2998dca2fbd2658e2c8791d6dc8348147d69e28e/src/interfaces/IJBControlled.sol)
3
+
4
+
5
+ ## Functions
6
+ ### DIRECTORY
7
+
8
+
9
+ ```solidity
10
+ function DIRECTORY() external view returns (IJBDirectory);
11
+ ```
12
+