@etherisc/gif-next 0.0.2-c8cedfe-604 → 0.0.2-c9577b6-545

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 (696) hide show
  1. package/README.md +121 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +363 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +521 -543
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +263 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +295 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +395 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1358 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +419 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1028 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1421 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +834 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +922 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +948 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1507 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +419 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1978 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +423 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1427 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +534 -310
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +462 -169
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +351 -3036
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1690 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +610 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1100 -340
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +541 -299
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +353 -91
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3648 -0
  76. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  78. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  80. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  82. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  84. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  86. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  88. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  90. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  91. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  94. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  95. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  96. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +995 -0
  98. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +427 -0
  100. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  102. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +398 -368
  104. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +691 -0
  106. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +887 -0
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +943 -0
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +726 -0
  112. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1292 -0
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +419 -0
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1447 -0
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +838 -0
  120. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +947 -0
  122. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +953 -0
  124. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  126. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  127. package/artifacts/contracts/pool/Pool.sol/Pool.json +1078 -0
  128. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1628 -0
  130. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  132. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  133. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +753 -0
  134. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +714 -0
  136. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  137. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1114 -0
  138. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  139. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +419 -0
  140. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  141. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1413 -0
  142. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +842 -0
  144. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → product/IApplicationService.sol/IApplicationService.json} +238 -186
  146. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +929 -0
  148. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +912 -0
  150. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +306 -187
  152. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  153. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  154. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +141 -191
  156. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  157. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1284 -0
  158. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +786 -0
  160. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  161. package/artifacts/contracts/product/PricingService.sol/PricingService.json +889 -0
  162. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +766 -0
  164. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  165. package/artifacts/contracts/product/Product.sol/Product.json +1072 -0
  166. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  167. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  168. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  170. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  172. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +595 -186
  174. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +372 -269
  176. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  178. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/Registry.sol/Registry.json +921 -213
  180. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  181. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  182. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +307 -366
  184. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +328 -136
  186. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  188. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  190. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  192. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  194. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  195. package/artifacts/contracts/shared/Component.sol/Component.json +701 -0
  196. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1589 -0
  198. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +810 -0
  200. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  201. package/artifacts/contracts/shared/{RegisterableUpgradable.sol/RegisterableUpgradable.json → ComponentVerifyingService.sol/ComponentVerifyingService.json} +165 -159
  202. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  204. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +316 -256
  206. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1049 -0
  208. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +716 -0
  210. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  212. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  214. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  216. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  218. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +27 -31
  220. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  222. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IService.sol/IService.json +113 -172
  224. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  226. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  227. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +809 -0
  228. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  229. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  230. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  232. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  233. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  234. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  236. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  237. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  238. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +54 -48
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  241. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  242. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Service.sol/Service.json +131 -183
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  247. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1454 -0
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  251. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1030 -0
  252. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  254. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  255. package/artifacts/contracts/staking/Staking.sol/Staking.json +1844 -0
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +766 -0
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +714 -0
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  269. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  271. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  278. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  280. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  282. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  287. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  306. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  308. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  312. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  324. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  326. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  328. package/contracts/authorization/AccessAdmin.sol +595 -0
  329. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  330. package/contracts/authorization/Authorization.sol +222 -0
  331. package/contracts/authorization/IAccess.sol +49 -0
  332. package/contracts/authorization/IAccessAdmin.sol +137 -0
  333. package/contracts/authorization/IAuthorization.sol +54 -0
  334. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  335. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  336. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  337. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  338. package/contracts/distribution/BasicDistribution.sol +140 -0
  339. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  340. package/contracts/distribution/Distribution.sol +296 -0
  341. package/contracts/distribution/DistributionService.sol +348 -0
  342. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  343. package/contracts/distribution/IDistributionComponent.sol +52 -0
  344. package/contracts/distribution/IDistributionService.sol +101 -0
  345. package/contracts/examples/fire/DamageLevel.sol +59 -0
  346. package/contracts/examples/fire/FirePool.sol +75 -0
  347. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  348. package/contracts/examples/fire/FireProduct.sol +411 -0
  349. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  350. package/contracts/examples/fire/FireUSD.sol +26 -0
  351. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  352. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  353. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  354. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  355. package/contracts/instance/BundleSet.sol +126 -0
  356. package/contracts/instance/IInstance.sol +56 -26
  357. package/contracts/instance/IInstanceService.sol +78 -16
  358. package/contracts/instance/Instance.sol +159 -373
  359. package/contracts/instance/InstanceAdmin.sol +288 -0
  360. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  361. package/contracts/instance/InstanceReader.sol +279 -74
  362. package/contracts/instance/InstanceService.sol +406 -102
  363. package/contracts/instance/InstanceServiceManager.sol +14 -31
  364. package/contracts/instance/InstanceStore.sol +287 -0
  365. package/contracts/instance/base/BalanceStore.sol +123 -0
  366. package/contracts/instance/base/Cloneable.sol +28 -0
  367. package/contracts/instance/base/ObjectCounter.sol +21 -0
  368. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  369. package/contracts/instance/base/ObjectSet.sol +79 -0
  370. package/contracts/instance/module/IAccess.sol +29 -21
  371. package/contracts/instance/module/IBundle.sol +8 -7
  372. package/contracts/instance/module/IComponents.sol +48 -0
  373. package/contracts/instance/module/IDistribution.sol +6 -4
  374. package/contracts/instance/module/IPolicy.sol +58 -19
  375. package/contracts/instance/module/IRisk.sol +1 -1
  376. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  377. package/contracts/oracle/BasicOracle.sol +48 -0
  378. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  379. package/contracts/oracle/IOracle.sol +36 -0
  380. package/contracts/oracle/IOracleComponent.sol +33 -0
  381. package/contracts/oracle/IOracleService.sol +65 -0
  382. package/contracts/oracle/Oracle.sol +167 -0
  383. package/contracts/oracle/OracleService.sol +286 -0
  384. package/contracts/oracle/OracleServiceManager.sol +39 -0
  385. package/contracts/pool/BasicPool.sol +165 -0
  386. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  387. package/contracts/pool/BundleService.sol +461 -0
  388. package/contracts/pool/BundleServiceManager.sol +39 -0
  389. package/contracts/pool/IBundleService.sol +143 -0
  390. package/contracts/pool/IPoolComponent.sol +68 -0
  391. package/contracts/pool/IPoolService.sol +171 -0
  392. package/contracts/pool/Pool.sol +357 -0
  393. package/contracts/pool/PoolService.sol +563 -0
  394. package/contracts/pool/PoolServiceManager.sol +39 -0
  395. package/contracts/product/ApplicationService.sol +251 -0
  396. package/contracts/product/ApplicationServiceManager.sol +38 -0
  397. package/contracts/product/BasicProduct.sol +53 -0
  398. package/contracts/product/BasicProductAuthorization.sol +43 -0
  399. package/contracts/product/ClaimService.sol +581 -0
  400. package/contracts/product/ClaimServiceManager.sol +38 -0
  401. package/contracts/product/IApplicationService.sol +63 -0
  402. package/contracts/product/IClaimService.sol +123 -0
  403. package/contracts/product/IPolicyService.sol +80 -0
  404. package/contracts/product/IPricingService.sol +39 -0
  405. package/contracts/product/IProductComponent.sol +53 -0
  406. package/contracts/product/IRiskService.sol +33 -0
  407. package/contracts/product/PolicyService.sol +683 -0
  408. package/contracts/product/PolicyServiceManager.sol +39 -0
  409. package/contracts/product/PricingService.sol +297 -0
  410. package/contracts/product/PricingServiceManager.sol +39 -0
  411. package/contracts/product/Product.sol +434 -0
  412. package/contracts/product/RiskService.sol +96 -0
  413. package/contracts/product/RiskServiceManager.sol +39 -0
  414. package/contracts/registry/ChainNft.sol +79 -31
  415. package/contracts/registry/IRegistry.sol +125 -48
  416. package/contracts/registry/IRegistryService.sol +43 -16
  417. package/contracts/registry/ITransferInterceptor.sol +1 -0
  418. package/contracts/registry/Registry.sol +530 -304
  419. package/contracts/registry/RegistryAdmin.sol +448 -0
  420. package/contracts/registry/RegistryService.sol +146 -288
  421. package/contracts/registry/RegistryServiceManager.sol +26 -53
  422. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  423. package/contracts/registry/ReleaseRegistry.sol +501 -0
  424. package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
  425. package/contracts/registry/TokenRegistry.sol +261 -57
  426. package/contracts/shared/Component.sol +261 -0
  427. package/contracts/shared/ComponentService.sol +641 -0
  428. package/contracts/shared/ComponentServiceManager.sol +38 -0
  429. package/contracts/shared/ComponentVerifyingService.sol +116 -0
  430. package/contracts/shared/ContractLib.sol +38 -0
  431. package/contracts/shared/IComponent.sol +70 -0
  432. package/contracts/shared/IComponentService.sol +108 -0
  433. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  434. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  435. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  436. package/contracts/shared/INftOwnable.sol +15 -12
  437. package/contracts/shared/IPolicyHolder.sol +35 -0
  438. package/contracts/shared/IRegisterable.sol +4 -6
  439. package/contracts/shared/IRegistryLinked.sol +11 -0
  440. package/contracts/shared/IService.sol +16 -6
  441. package/contracts/shared/InitializableERC165.sol +27 -0
  442. package/contracts/shared/InstanceLinkedComponent.sol +171 -0
  443. package/contracts/shared/KeyValueStore.sol +131 -0
  444. package/contracts/shared/Lifecycle.sol +88 -0
  445. package/contracts/shared/NftIdSet.sol +65 -0
  446. package/contracts/shared/NftOwnable.sol +72 -85
  447. package/contracts/shared/PolicyHolder.sol +62 -0
  448. package/contracts/shared/Registerable.sol +23 -38
  449. package/contracts/shared/RegistryLinked.sol +44 -0
  450. package/contracts/shared/Service.sol +63 -30
  451. package/contracts/shared/TokenHandler.sol +122 -10
  452. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  453. package/contracts/staking/IStaking.sol +168 -0
  454. package/contracts/staking/IStakingService.sol +157 -0
  455. package/contracts/staking/StakeManagerLib.sol +224 -0
  456. package/contracts/staking/Staking.sol +498 -0
  457. package/contracts/staking/StakingLifecycle.sol +23 -0
  458. package/contracts/staking/StakingManager.sol +52 -0
  459. package/contracts/staking/StakingReader.sol +190 -0
  460. package/contracts/staking/StakingService.sol +393 -0
  461. package/contracts/staking/StakingServiceManager.sol +44 -0
  462. package/contracts/staking/StakingStore.sol +605 -0
  463. package/contracts/staking/TargetManagerLib.sol +211 -0
  464. package/contracts/{types → type}/AddressSet.sol +1 -1
  465. package/contracts/type/Amount.sol +150 -0
  466. package/contracts/{types → type}/Blocknumber.sol +27 -3
  467. package/contracts/type/ClaimId.sol +80 -0
  468. package/contracts/{types → type}/DistributorType.sol +2 -2
  469. package/contracts/{types → type}/Fee.sol +33 -23
  470. package/contracts/{types → type}/NftId.sol +22 -15
  471. package/contracts/type/NftIdSet.sol +62 -0
  472. package/contracts/type/ObjectType.sol +276 -0
  473. package/contracts/type/PayoutId.sol +82 -0
  474. package/contracts/{types → type}/Referral.sol +6 -1
  475. package/contracts/type/RequestId.sol +75 -0
  476. package/contracts/{types → type}/RiskId.sol +16 -2
  477. package/contracts/type/RoleId.sol +174 -0
  478. package/contracts/type/Seconds.sol +101 -0
  479. package/contracts/type/Selector.sol +102 -0
  480. package/contracts/{types → type}/StateId.sol +48 -4
  481. package/contracts/type/String.sol +53 -0
  482. package/contracts/{types → type}/Timestamp.sol +34 -15
  483. package/contracts/{types → type}/UFixed.sol +39 -9
  484. package/contracts/{types → type}/Version.sol +5 -2
  485. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  486. package/contracts/upgradeability/ProxyManager.sol +231 -0
  487. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  488. package/contracts/upgradeability/Versionable.sol +59 -0
  489. package/package.json +11 -7
  490. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  492. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  493. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  494. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  495. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  496. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  497. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  498. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  499. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  500. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  501. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  502. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  503. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -790
  504. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  505. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  506. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  508. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  510. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  512. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  514. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  516. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  518. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  520. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  522. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  524. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  526. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  529. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  531. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  532. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  534. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  535. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  536. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  537. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  538. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  539. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  541. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  543. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  545. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  546. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  547. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  548. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  549. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  550. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  551. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  552. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  553. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  554. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  555. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  558. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  559. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  560. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  564. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -636
  566. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  568. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  572. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  573. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  574. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  575. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  576. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  577. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  578. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  579. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  580. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  581. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  582. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  583. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  584. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  585. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  586. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  587. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  588. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  589. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  590. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  591. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  593. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  595. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  597. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  598. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  599. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  600. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  601. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  602. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  603. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  605. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  607. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  609. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  611. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  613. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  615. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  616. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  617. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  619. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  621. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  623. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  625. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  627. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  629. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  631. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  633. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  635. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  637. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  639. package/contracts/components/BaseComponent.sol +0 -91
  640. package/contracts/components/Distribution.sol +0 -166
  641. package/contracts/components/IBaseComponent.sol +0 -25
  642. package/contracts/components/IDistributionComponent.sol +0 -46
  643. package/contracts/components/IPoolComponent.sol +0 -62
  644. package/contracts/components/IProductComponent.sol +0 -35
  645. package/contracts/components/Pool.sol +0 -258
  646. package/contracts/components/Product.sol +0 -297
  647. package/contracts/experiment/cloning/Cloner.sol +0 -47
  648. package/contracts/experiment/errors/Require.sol +0 -38
  649. package/contracts/experiment/errors/Revert.sol +0 -44
  650. package/contracts/experiment/inheritance/A.sol +0 -53
  651. package/contracts/experiment/inheritance/B.sol +0 -28
  652. package/contracts/experiment/inheritance/C.sol +0 -34
  653. package/contracts/experiment/inheritance/IA.sol +0 -13
  654. package/contracts/experiment/inheritance/IB.sol +0 -10
  655. package/contracts/experiment/inheritance/IC.sol +0 -12
  656. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  657. package/contracts/experiment/statemachine/ISM.sol +0 -25
  658. package/contracts/experiment/statemachine/SM.sol +0 -57
  659. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  660. package/contracts/experiment/types/TypeA.sol +0 -47
  661. package/contracts/experiment/types/TypeB.sol +0 -29
  662. package/contracts/instance/AccessManagedSimple.sol +0 -115
  663. package/contracts/instance/AccessManagerSimple.sol +0 -692
  664. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  665. package/contracts/instance/InstanceAccessManager.sol +0 -288
  666. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  667. package/contracts/instance/base/IInstanceBase.sol +0 -23
  668. package/contracts/instance/base/KeyValueStore.sol +0 -172
  669. package/contracts/instance/base/Lifecycle.sol +0 -100
  670. package/contracts/instance/module/ISetup.sol +0 -43
  671. package/contracts/instance/module/ITreasury.sol +0 -23
  672. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  673. package/contracts/instance/service/DistributionService.sol +0 -96
  674. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  675. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  676. package/contracts/instance/service/IDistributionService.sol +0 -12
  677. package/contracts/instance/service/IPoolService.sol +0 -37
  678. package/contracts/instance/service/IProductService.sol +0 -107
  679. package/contracts/shared/ContractDeployerLib.sol +0 -72
  680. package/contracts/shared/ERC165.sol +0 -25
  681. package/contracts/shared/ProxyManager.sol +0 -94
  682. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  683. package/contracts/shared/Versionable.sol +0 -147
  684. package/contracts/test/TestFee.sol +0 -25
  685. package/contracts/test/TestRegisterable.sol +0 -18
  686. package/contracts/test/TestRoleId.sol +0 -14
  687. package/contracts/test/TestService.sol +0 -24
  688. package/contracts/test/TestToken.sol +0 -26
  689. package/contracts/test/TestVersion.sol +0 -44
  690. package/contracts/test/TestVersionable.sol +0 -17
  691. package/contracts/types/ChainId.sol +0 -38
  692. package/contracts/types/NftIdSet.sol +0 -60
  693. package/contracts/types/NumberId.sol +0 -52
  694. package/contracts/types/ObjectType.sol +0 -152
  695. package/contracts/types/RoleId.sol +0 -88
  696. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,595 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
+
8
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {IAccessAdmin} from "./IAccessAdmin.sol";
11
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
12
+ import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
13
+ import {Str, StrLib} from "../type/String.sol";
14
+ import {TimestampLib} from "../type/Timestamp.sol";
15
+
16
+
17
+ /**
18
+ * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
19
+ * The contract provides read functions to query all available roles, targets and access rights.
20
+ * This contract works for both a constructor based deployment or a deployment based on cloning and initialization.
21
+ */
22
+ contract AccessAdmin is
23
+ AccessManagedUpgradeable,
24
+ ReentrancyGuardUpgradeable,
25
+ IAccessAdmin
26
+ {
27
+ using EnumerableSet for EnumerableSet.AddressSet;
28
+
29
+ string public constant ADMIN_ROLE_NAME = "AdminRole";
30
+ string public constant PUBLIC_ROLE_NAME = "PublicRole";
31
+
32
+ /// @dev the OpenZeppelin access manager driving the access admin contract
33
+ AccessManagerCloneable internal _authority;
34
+
35
+ /// @dev stores the deployer address and allows to create initializers
36
+ /// that are restricted to the deployer address.
37
+ address internal _deployer;
38
+
39
+ /// @dev store role info per role id
40
+ mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
41
+
42
+ /// @dev store role name info per role name
43
+ mapping(Str roleName => RoleNameInfo nameInfo) internal _roleForName;
44
+
45
+ /// @dev store array with all created roles
46
+ RoleId [] internal _roleIds;
47
+
48
+ /// @dev store set of current role members for given role
49
+ mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
50
+
51
+ /// @dev store target info per target address
52
+ mapping(address target => TargetInfo info) internal _targetInfo;
53
+
54
+ /// @dev store role name info per role name
55
+ mapping(Str targetName => address target) internal _targetForName;
56
+
57
+ /// @dev store array with all created targets
58
+ address [] internal _targets;
59
+
60
+ /// @dev store all managed functions per target
61
+ mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
62
+
63
+ /// @dev function infos array
64
+ mapping(address target => mapping(Selector selector => FunctionInfo)) internal _functionInfo;
65
+
66
+ /// @dev temporary dynamic functions array
67
+ bytes4[] private _functions;
68
+
69
+ modifier onlyDeployer() {
70
+ // special case for cloned AccessAdmin contracts
71
+ // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
72
+ if (_deployer == address(0)) {
73
+ _deployer = msg.sender;
74
+ }
75
+
76
+ if (msg.sender != _deployer) {
77
+ revert ErrorNotDeployer();
78
+ }
79
+ _;
80
+ }
81
+
82
+ modifier onlyRoleAdmin(RoleId roleId) {
83
+ _checkRoleExists(roleId, false);
84
+
85
+ if (!hasAdminRole(msg.sender, roleId)) {
86
+ revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
87
+ }
88
+ _;
89
+ }
90
+
91
+ modifier onlyRoleMember(RoleId roleId) {
92
+ if (!hasRole(msg.sender, roleId)) {
93
+ revert ErrorNotRoleOwner(roleId);
94
+ }
95
+ _;
96
+ }
97
+
98
+ modifier onlyExistingRole(RoleId roleId, bool onlyActiveRole) {
99
+ _checkRoleExists(roleId, onlyActiveRole);
100
+ _;
101
+ }
102
+
103
+ modifier onlyExistingTarget(address target) {
104
+ _checkTarget(target);
105
+ _;
106
+ }
107
+
108
+ constructor() {
109
+ _deployer = msg.sender;
110
+ _authority = new AccessManagerCloneable();
111
+ _authority.initialize(address(this));
112
+
113
+ _setAuthority(address(_authority)); // set authority for oz access managed
114
+ _createAdminAndPublicRoles();
115
+ }
116
+
117
+ //--- view functions for roles ------------------------------------------//
118
+
119
+ function roles() external view returns (uint256 numberOfRoles) {
120
+ return _roleIds.length;
121
+ }
122
+
123
+ function getRoleId(uint256 idx) external view returns (RoleId roleId) {
124
+ return _roleIds[idx];
125
+ }
126
+
127
+ function getAdminRole() public view returns (RoleId roleId) {
128
+ return RoleId.wrap(_authority.ADMIN_ROLE());
129
+ }
130
+
131
+ function getPublicRole() public view returns (RoleId roleId) {
132
+ return RoleId.wrap(_authority.PUBLIC_ROLE());
133
+ }
134
+
135
+ function roleExists(RoleId roleId) public view returns (bool exists) {
136
+ return _roleInfo[roleId].createdAt.gtz();
137
+ }
138
+
139
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
140
+ return _roleInfo[roleId];
141
+ }
142
+
143
+ function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
144
+ return _roleForName[name];
145
+ }
146
+
147
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
148
+ return _roleMembers[roleId].length();
149
+ }
150
+
151
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
152
+ return _roleMembers[roleId].at(idx);
153
+ }
154
+
155
+ function hasRole(address account, RoleId roleId) public view returns (bool) {
156
+ (bool isMember, ) = _authority.hasRole(
157
+ RoleId.unwrap(roleId),
158
+ account);
159
+ return isMember;
160
+ }
161
+
162
+ function hasAdminRole(address account, RoleId roleId)
163
+ public
164
+ virtual
165
+ view
166
+ returns (bool)
167
+ {
168
+ return hasRole(account, _roleInfo[roleId].adminRoleId);
169
+ }
170
+
171
+ //--- view functions for targets ----------------------------------------//
172
+
173
+ function targetExists(address target) public view returns (bool exists) {
174
+ return _targetInfo[target].createdAt.gtz();
175
+ }
176
+
177
+ function targets() external view returns (uint256 numberOfTargets) {
178
+ return _targets.length;
179
+ }
180
+
181
+ function getTargetAddress(uint256 idx) external view returns (address target) {
182
+ return _targets[idx];
183
+ }
184
+
185
+ function getTargetInfo(address target) external view returns (TargetInfo memory targetInfo) {
186
+ return _targetInfo[target];
187
+ }
188
+
189
+ function getTargetForName(Str name) public view returns (address target) {
190
+ return _targetForName[name];
191
+ }
192
+
193
+ function isTargetLocked(address target) public view returns (bool locked) {
194
+ return _authority.isTargetClosed(target);
195
+ }
196
+
197
+ function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
198
+ return SelectorSetLib.size(_targetFunctions[target]);
199
+ }
200
+
201
+ function getAuthorizedFunction(
202
+ address target,
203
+ uint256 idx
204
+ )
205
+ external
206
+ view
207
+ returns (
208
+ FunctionInfo memory func,
209
+ RoleId roleId
210
+ )
211
+ {
212
+ Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
213
+ func = _functionInfo[target][selector];
214
+ roleId = RoleIdLib.toRoleId(
215
+ _authority.getTargetFunctionRole(
216
+ target,
217
+ selector.toBytes4()));
218
+ }
219
+
220
+ function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
221
+ (can, ) = _authority.canCall(caller, target, selector.toBytes4());
222
+ }
223
+
224
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
225
+ return RoleInfo({
226
+ name: StrLib.toStr(name),
227
+ adminRoleId: adminRoleId,
228
+ roleType: roleType,
229
+ maxMemberCount: maxMemberCount,
230
+ createdAt: TimestampLib.blockTimestamp(),
231
+ pausedAt: TimestampLib.max()
232
+ });
233
+ }
234
+
235
+ function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
236
+ return FunctionInfo({
237
+ name: StrLib.toStr(name),
238
+ selector: SelectorLib.toSelector(selector),
239
+ createdAt: TimestampLib.blockTimestamp()});
240
+ }
241
+
242
+ function deployer() public view returns (address) {
243
+ return _deployer;
244
+ }
245
+
246
+ //--- internal/private functions -------------------------------------------------//
247
+
248
+ function _authorizeTargetFunctions(
249
+ address target,
250
+ RoleId roleId,
251
+ FunctionInfo[] memory functions
252
+ )
253
+ internal
254
+ {
255
+ if (roleId == getAdminRole()) {
256
+ revert ErrorAuthorizeForAdminRoleInvalid(target);
257
+ }
258
+
259
+ bool addFunctions = true;
260
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
261
+
262
+ // apply authz via access manager
263
+ _grantRoleAccessToFunctions(target, roleId, functionSelectors);
264
+ }
265
+
266
+ function _unauthorizeTargetFunctions(
267
+ address target,
268
+ FunctionInfo[] memory functions
269
+ )
270
+ internal
271
+ {
272
+ bool addFunctions = false;
273
+ bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
274
+ _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
275
+ }
276
+
277
+ function _processFunctionSelectors(
278
+ address target,
279
+ FunctionInfo[] memory functions,
280
+ bool addFunctions
281
+ )
282
+ internal
283
+ returns (
284
+ bytes4[] memory functionSelectors
285
+ )
286
+ {
287
+ uint256 n = functions.length;
288
+ functionSelectors = new bytes4[](n);
289
+ FunctionInfo memory func;
290
+ Selector selector;
291
+
292
+ for (uint256 i = 0; i < n; i++) {
293
+ func = functions[i];
294
+ selector = func.selector;
295
+
296
+ // add function selector to target selector set if not in set
297
+ if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
298
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
299
+
300
+ // set function name
301
+ _functionInfo[target][selector] = func;
302
+
303
+ // add bytes4 selector to function selector array
304
+ functionSelectors[i] = selector.toBytes4();
305
+ }
306
+ }
307
+
308
+ function _initializeAuthority(
309
+ address authorityAddress
310
+ )
311
+ internal
312
+ virtual
313
+ onlyInitializing()
314
+ onlyDeployer()
315
+ {
316
+ if (authority() != address(0)) {
317
+ revert ErrorAuthorityAlreadySet();
318
+ }
319
+
320
+ _authority = AccessManagerCloneable(authorityAddress);
321
+ __AccessManaged_init(address(_authority));
322
+ }
323
+
324
+
325
+ function _initializeAdminAndPublicRoles()
326
+ internal
327
+ virtual
328
+ onlyInitializing()
329
+ {
330
+ _createAdminAndPublicRoles();
331
+ }
332
+
333
+
334
+ /// @dev internal setup function that can be used in both constructor and initializer.
335
+ function _createAdminAndPublicRoles()
336
+ internal
337
+ {
338
+ RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
339
+
340
+ // setup admin role
341
+ _createRoleUnchecked(
342
+ ADMIN_ROLE(),
343
+ toRole({
344
+ adminRoleId: ADMIN_ROLE(),
345
+ roleType: RoleType.Contract,
346
+ maxMemberCount: 1,
347
+ name: ADMIN_ROLE_NAME}));
348
+
349
+ // add this contract as admin role member
350
+ _roleMembers[adminRoleId].add(address(this));
351
+
352
+ // setup public role
353
+ _createRoleUnchecked(
354
+ PUBLIC_ROLE(),
355
+ toRole({
356
+ adminRoleId: ADMIN_ROLE(),
357
+ roleType: RoleType.Gif,
358
+ maxMemberCount: type(uint32).max,
359
+ name: PUBLIC_ROLE_NAME}));
360
+ }
361
+
362
+
363
+ /// @dev grant the specified role access to all functions in the provided selector list
364
+ function _grantRoleAccessToFunctions(
365
+ address target,
366
+ RoleId roleId,
367
+ bytes4[] memory functionSelectors
368
+ )
369
+ internal
370
+ {
371
+ _authority.setTargetFunctionRole(
372
+ target,
373
+ functionSelectors,
374
+ RoleId.unwrap(roleId));
375
+
376
+ // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
377
+ }
378
+
379
+
380
+ /// @dev grant the specified role to the provided account
381
+ function _grantRoleToAccount(RoleId roleId, address account)
382
+ internal
383
+ onlyExistingRole(roleId, true)
384
+ {
385
+ // check max role members will not be exceeded
386
+ if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
387
+ revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
388
+ }
389
+
390
+ // check account is contract for contract role
391
+ if (
392
+ _roleInfo[roleId].roleType == RoleType.Contract &&
393
+ !ContractLib.isContract(account) // will fail in account's constructor
394
+ ) {
395
+ revert ErrorRoleMemberNotContract(roleId, account);
396
+ }
397
+
398
+ // TODO check account already have roleId
399
+ _roleMembers[roleId].add(account);
400
+ _authority.grantRole(
401
+ RoleId.unwrap(roleId),
402
+ account,
403
+ 0);
404
+
405
+ // indirect logging: rely on OpenZeppelin log RoleGranted
406
+ }
407
+
408
+ /// @dev revoke the specified role from the provided account
409
+ function _revokeRoleFromAccount(RoleId roleId, address account)
410
+ internal
411
+ onlyExistingRole(roleId, false)
412
+ {
413
+
414
+ // check role removal is permitted
415
+ if (_roleInfo[roleId].roleType == RoleType.Contract) {
416
+ revert ErrorRoleMemberRemovalDisabled(roleId, account);
417
+ }
418
+
419
+ // TODO check account have roleId?
420
+ _roleMembers[roleId].remove(account);
421
+ _authority.revokeRole(
422
+ RoleId.unwrap(roleId),
423
+ account);
424
+
425
+ // indirect logging: rely on OpenZeppelin log RoleGranted
426
+ }
427
+
428
+
429
+ /// @dev Creates a role based on the provided parameters.
430
+ /// Checks that the provided role and role id and role name not already used.
431
+ function _createRole(
432
+ RoleId roleId,
433
+ RoleInfo memory info
434
+ )
435
+ internal
436
+ {
437
+ // check role does not yet exist
438
+ if(roleExists(roleId)) {
439
+ revert ErrorRoleAlreadyCreated(
440
+ roleId,
441
+ _roleInfo[roleId].name.toString());
442
+ }
443
+
444
+ // check admin role exists
445
+ if(!roleExists(info.adminRoleId)) {
446
+ revert ErrorRoleAdminNotExisting(info.adminRoleId);
447
+ }
448
+
449
+ // check role name is not empty
450
+ if(info.name.length() == 0) {
451
+ revert ErrorRoleNameEmpty(roleId);
452
+ }
453
+
454
+ // check role name is not used for another role
455
+ if(_roleForName[info.name].exists) {
456
+ revert ErrorRoleNameAlreadyExists(
457
+ roleId,
458
+ info.name.toString(),
459
+ _roleForName[info.name].roleId);
460
+ }
461
+
462
+ _createRoleUnchecked(roleId, info);
463
+ }
464
+
465
+
466
+ function _createRoleUnchecked(
467
+ RoleId roleId,
468
+ RoleInfo memory info
469
+ )
470
+ private
471
+ {
472
+ // create role info
473
+ info.createdAt = TimestampLib.blockTimestamp();
474
+ _roleInfo[roleId] = info;
475
+
476
+ // create role name info
477
+ _roleForName[info.name] = RoleNameInfo({
478
+ roleId: roleId,
479
+ exists: true});
480
+
481
+ // add role to list of roles
482
+ _roleIds.push(roleId);
483
+
484
+ emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
485
+ }
486
+
487
+
488
+ function _createTarget(
489
+ address target,
490
+ string memory targetName,
491
+ bool checkAuthority,
492
+ bool custom
493
+ )
494
+ internal
495
+ nonReentrant()
496
+ {
497
+ // check target does not yet exist
498
+ if(targetExists(target)) {
499
+ revert ErrorTargetAlreadyCreated(
500
+ target,
501
+ _targetInfo[target].name.toString());
502
+ }
503
+
504
+ // check target name is not empty
505
+ Str name = StrLib.toStr(targetName);
506
+ if(name.length() == 0) {
507
+ revert ErrorTargetNameEmpty(target);
508
+ }
509
+
510
+ // check target name is not used for another target
511
+ if( _targetForName[name] != address(0)) {
512
+ revert ErrorTargetNameAlreadyExists(
513
+ target,
514
+ targetName,
515
+ _targetForName[name]);
516
+ }
517
+
518
+ // check target is an access managed contract
519
+ if (!ContractLib.isAccessManaged(target)) {
520
+ revert ErrorTargetNotAccessManaged(target);
521
+ }
522
+
523
+ // check target shares authority with this contract
524
+ if (checkAuthority) {
525
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
526
+ if (targetAuthority != authority()) {
527
+ revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
528
+ }
529
+ }
530
+
531
+ // create target info
532
+ _targetInfo[target] = TargetInfo({
533
+ name: name,
534
+ isCustom: custom,
535
+ createdAt: TimestampLib.blockTimestamp()
536
+ });
537
+
538
+ // create name to target mapping
539
+ _targetForName[name] = target;
540
+
541
+ // add role to list of roles
542
+ _targets.push(target);
543
+
544
+ emit LogTargetCreated(target, targetName);
545
+ }
546
+
547
+ function _setTargetClosed(address target, bool locked)
548
+ internal
549
+ {
550
+ _checkTarget(target);
551
+
552
+ // target locked/unlocked already
553
+ if(_authority.isTargetClosed(target) == locked) {
554
+ revert ErrorTargetAlreadyLocked(target, locked);
555
+ }
556
+
557
+ _authority.setTargetClosed(target, locked);
558
+ }
559
+
560
+
561
+ function _checkRoleExists(
562
+ RoleId roleId,
563
+ bool onlyActiveRole
564
+ )
565
+ internal
566
+ view
567
+ {
568
+ if (!roleExists(roleId)) {
569
+ revert ErrorRoleUnknown(roleId);
570
+ }
571
+
572
+ uint64 roleIdInt = RoleId.unwrap(roleId);
573
+ if (roleIdInt == _authority.ADMIN_ROLE()
574
+ || roleIdInt == _authority.PUBLIC_ROLE())
575
+ {
576
+ revert ErrorRoleIsLocked(roleId);
577
+ }
578
+
579
+ // check if role is disabled
580
+ if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
581
+ revert ErrorRoleIsPaused(roleId);
582
+ }
583
+ }
584
+
585
+
586
+ /// @dev check if target exists and reverts if it doesn't
587
+ function _checkTarget(address target)
588
+ internal
589
+ view
590
+ {
591
+ if (!targetExists(target)) {
592
+ revert ErrorTargetUnknown(target);
593
+ }
594
+ }
595
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+
6
+ contract AccessManagerCloneable is
7
+ AccessManagerUpgradeable
8
+ {
9
+
10
+ function initialize(address initialAdmin)
11
+ external
12
+ initializer()
13
+ {
14
+ __AccessManager_init(initialAdmin);
15
+ }
16
+ }