@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,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
+