@etherisc/gif-next 0.0.2-7d7c399-079 → 0.0.2-7d91021-862

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 (494) hide show
  1. package/README.md +63 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +91 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +603 -280
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +487 -207
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -154
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -77
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -142
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -178
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +380 -45
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +355 -52
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +360 -193
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +380 -45
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +472 -28
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +345 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +510 -85
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +892 -408
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +327 -64
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +674 -494
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -55
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +141 -85
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -31
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +96 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +280 -209
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -71
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +174 -87
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -166
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +547 -340
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +145 -71
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -41
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +137 -139
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +113 -87
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +45 -23
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +133 -65
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +245 -161
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +126 -80
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +100 -70
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -52
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +91 -41
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +52 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +90 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +713 -414
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +76 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +784 -427
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +188 -124
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -252
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +110 -72
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -157
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +62 -161
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +187 -107
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  267. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +129 -70
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +229 -157
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +87 -53
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  323. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  325. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  328. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  330. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  332. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  334. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  336. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  338. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
  340. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  342. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  344. package/contracts/accounting/AccountingService.sol +15 -3
  345. package/contracts/accounting/IAccountingService.sol +4 -2
  346. package/contracts/authorization/AccessAdmin.sol +396 -275
  347. package/contracts/authorization/AccessAdminLib.sol +396 -0
  348. package/contracts/authorization/AccessManagerCloneable.sol +40 -31
  349. package/contracts/authorization/Authorization.sol +142 -262
  350. package/contracts/authorization/IAccess.sol +25 -7
  351. package/contracts/authorization/IAccessAdmin.sol +83 -79
  352. package/contracts/authorization/IAuthorization.sol +9 -43
  353. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  354. package/contracts/authorization/ServiceAuthorization.sol +248 -34
  355. package/contracts/distribution/BasicDistribution.sol +14 -13
  356. package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
  357. package/contracts/distribution/Distribution.sol +22 -64
  358. package/contracts/distribution/DistributionService.sol +166 -75
  359. package/contracts/distribution/IDistributionComponent.sol +3 -10
  360. package/contracts/distribution/IDistributionService.sol +34 -19
  361. package/contracts/examples/fire/FirePool.sol +0 -4
  362. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
  363. package/contracts/examples/fire/FireProduct.sol +7 -12
  364. package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
  365. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  366. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
  367. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  368. package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
  369. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
  370. package/contracts/examples/unpermissioned/SimpleProduct.sol +94 -27
  371. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
  372. package/contracts/instance/BaseStore.sol +93 -0
  373. package/contracts/instance/BundleSet.sol +4 -4
  374. package/contracts/instance/IBaseStore.sol +37 -0
  375. package/contracts/instance/IInstance.sol +103 -13
  376. package/contracts/instance/IInstanceService.sol +54 -7
  377. package/contracts/instance/Instance.sol +177 -61
  378. package/contracts/instance/InstanceAdmin.sol +249 -196
  379. package/contracts/instance/InstanceAuthorizationV3.sol +117 -67
  380. package/contracts/instance/InstanceReader.sol +398 -382
  381. package/contracts/instance/InstanceService.sol +283 -173
  382. package/contracts/instance/InstanceStore.sol +153 -128
  383. package/contracts/instance/ProductStore.sol +290 -0
  384. package/contracts/instance/RiskSet.sol +14 -5
  385. package/contracts/instance/TargetNames.sol +10 -0
  386. package/contracts/instance/base/BalanceStore.sol +4 -6
  387. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  388. package/contracts/instance/base/ObjectSet.sol +7 -8
  389. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  390. package/contracts/instance/module/IBundle.sol +6 -5
  391. package/contracts/instance/module/IComponents.sol +15 -6
  392. package/contracts/instance/module/IDistribution.sol +21 -8
  393. package/contracts/instance/module/IPolicy.sol +28 -8
  394. package/contracts/instance/module/IRisk.sol +2 -0
  395. package/contracts/oracle/BasicOracle.sol +3 -6
  396. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  397. package/contracts/oracle/IOracle.sol +9 -4
  398. package/contracts/oracle/Oracle.sol +4 -8
  399. package/contracts/oracle/OracleService.sol +8 -8
  400. package/contracts/pool/BasicPool.sol +4 -18
  401. package/contracts/pool/BasicPoolAuthorization.sol +29 -16
  402. package/contracts/pool/BundleService.sol +57 -96
  403. package/contracts/pool/IBundleService.sol +27 -32
  404. package/contracts/pool/IPoolService.sol +57 -40
  405. package/contracts/pool/Pool.sol +15 -29
  406. package/contracts/pool/PoolLib.sol +341 -0
  407. package/contracts/pool/PoolService.sol +189 -190
  408. package/contracts/product/ApplicationService.sol +85 -17
  409. package/contracts/product/BasicProduct.sol +2 -5
  410. package/contracts/product/BasicProductAuthorization.sol +31 -9
  411. package/contracts/product/ClaimService.sol +112 -194
  412. package/contracts/product/IApplicationService.sol +24 -2
  413. package/contracts/product/IClaimService.sol +6 -6
  414. package/contracts/product/IPolicyService.sol +20 -8
  415. package/contracts/product/IPricingService.sol +1 -0
  416. package/contracts/product/IRiskService.sol +25 -10
  417. package/contracts/product/PolicyService.sol +110 -201
  418. package/contracts/product/PolicyServiceLib.sol +139 -0
  419. package/contracts/product/PricingService.sol +33 -31
  420. package/contracts/product/Product.sol +61 -33
  421. package/contracts/product/RiskService.sol +63 -25
  422. package/contracts/registry/IRegistry.sol +17 -9
  423. package/contracts/registry/IRelease.sol +6 -3
  424. package/contracts/registry/Registry.sol +19 -9
  425. package/contracts/registry/RegistryAdmin.sol +100 -253
  426. package/contracts/registry/RegistryAuthorization.sol +336 -0
  427. package/contracts/registry/RegistryService.sol +1 -1
  428. package/contracts/registry/ReleaseAdmin.sol +62 -112
  429. package/contracts/registry/ReleaseRegistry.sol +57 -43
  430. package/contracts/registry/ServiceAuthorizationV3.sol +131 -31
  431. package/contracts/registry/TokenRegistry.sol +56 -52
  432. package/contracts/shared/Component.sol +19 -35
  433. package/contracts/shared/ComponentService.sol +281 -290
  434. package/contracts/shared/ContractLib.sol +137 -77
  435. package/contracts/shared/IComponent.sol +1 -4
  436. package/contracts/shared/IComponentService.sol +21 -26
  437. package/contracts/shared/INftOwnable.sol +2 -0
  438. package/contracts/shared/IRegisterable.sol +0 -1
  439. package/contracts/shared/InitializableERC165.sol +9 -1
  440. package/contracts/shared/InstanceLinkedComponent.sol +8 -13
  441. package/contracts/shared/NftOwnable.sol +4 -2
  442. package/contracts/shared/PolicyHolder.sol +3 -2
  443. package/contracts/shared/Registerable.sol +1 -4
  444. package/contracts/shared/Service.sol +6 -4
  445. package/contracts/shared/TokenHandler.sol +44 -91
  446. package/contracts/staking/IStaking.sol +266 -72
  447. package/contracts/staking/IStakingService.sol +45 -75
  448. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  449. package/contracts/staking/Staking.sol +475 -204
  450. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  451. package/contracts/staking/StakingManager.sol +4 -3
  452. package/contracts/staking/StakingReader.sol +58 -77
  453. package/contracts/staking/StakingService.sol +62 -180
  454. package/contracts/staking/StakingServiceManager.sol +6 -4
  455. package/contracts/staking/StakingStore.sol +1093 -330
  456. package/contracts/staking/TargetHandler.sol +132 -0
  457. package/contracts/staking/TargetManagerLib.sol +69 -46
  458. package/contracts/type/Amount.sol +4 -0
  459. package/contracts/type/Blocknumber.sol +15 -15
  460. package/contracts/type/ChainId.sol +101 -0
  461. package/contracts/type/Fee.sol +8 -8
  462. package/contracts/type/NftId.sol +3 -3
  463. package/contracts/type/ObjectType.sol +69 -52
  464. package/contracts/type/RiskId.sol +4 -3
  465. package/contracts/type/RoleId.sol +60 -45
  466. package/contracts/type/Seconds.sol +19 -0
  467. package/contracts/type/Selector.sol +5 -0
  468. package/contracts/type/String.sol +12 -0
  469. package/contracts/type/Timestamp.sol +4 -2
  470. package/contracts/type/UFixed.sol +28 -10
  471. package/contracts/type/Version.sol +39 -0
  472. package/contracts/upgradeability/IVersionable.sol +3 -0
  473. package/contracts/upgradeability/ProxyManager.sol +25 -11
  474. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  475. package/contracts/upgradeability/Versionable.sol +6 -3
  476. package/package.json +2 -2
  477. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  478. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  479. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  480. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  481. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  482. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  483. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  484. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  485. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  486. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  487. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  488. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  489. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  490. package/contracts/instance/module/IAccess.sol +0 -46
  491. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  492. package/contracts/shared/IKeyValueStore.sol +0 -54
  493. package/contracts/shared/KeyValueStore.sol +0 -131
  494. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -5,19 +5,26 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
5
5
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
6
  import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
7
 
8
- import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
- import {ContractLib} from "../shared/ContractLib.sol";
8
+ import {IAccess} from "./IAccess.sol";
10
9
  import {IAccessAdmin} from "./IAccessAdmin.sol";
10
+ import {IAuthorization} from "./IAuthorization.sol";
11
11
  import {IRegistry} from "../registry/IRegistry.sol";
12
+
13
+ import {ADMIN_ROLE_NAME, PUBLIC_ROLE_NAME} from "./AccessAdmin.sol";
14
+ import {AccessAdminLib} from "./AccessAdminLib.sol";
15
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
16
+ import {ContractLib} from "../shared/ContractLib.sol";
17
+ import {NftId, NftIdLib} from "../type/NftId.sol";
18
+ import {ObjectType} from "../type/ObjectType.sol";
12
19
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
- import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
20
+ import {Selector, SelectorSetLib} from "../type/Selector.sol";
14
21
  import {Str, StrLib} from "../type/String.sol";
15
22
  import {TimestampLib} from "../type/Timestamp.sol";
16
23
  import {VersionPart} from "../type/Version.sol";
17
24
 
18
- interface IAccessManagedChecker {
19
- function authority() external view returns (address);
20
- }
25
+ function ADMIN_ROLE_NAME() pure returns (string memory) { return "AdminRole"; }
26
+ function PUBLIC_ROLE_NAME() pure returns (string memory) { return "PublicRole"; }
27
+
21
28
 
22
29
  /**
23
30
  * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
@@ -31,16 +38,23 @@ contract AccessAdmin is
31
38
  {
32
39
  using EnumerableSet for EnumerableSet.AddressSet;
33
40
 
34
- string public constant ADMIN_ROLE_NAME = "AdminRole";
35
- string public constant PUBLIC_ROLE_NAME = "PublicRole";
41
+ /// @dev admin name used for logging only
42
+ string internal _adminName;
36
43
 
37
- /// @dev the OpenZeppelin access manager driving the access admin contract
44
+ /// @dev the access manager driving the access admin contract
45
+ /// hold link to registry and release version
38
46
  AccessManagerCloneable internal _authority;
39
47
 
48
+ /// @dev the authorization contract used for initial access control
49
+ IAuthorization internal _authorization;
50
+
40
51
  /// @dev stores the deployer address and allows to create initializers
41
52
  /// that are restricted to the deployer address.
42
53
  address internal _deployer;
43
54
 
55
+ /// @dev the linked NFT ID
56
+ NftId internal _linkedNftId;
57
+
44
58
  /// @dev store role info per role id
45
59
  mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
46
60
 
@@ -71,6 +85,9 @@ contract AccessAdmin is
71
85
  /// @dev temporary dynamic functions array
72
86
  bytes4[] private _functions;
73
87
 
88
+ // @dev target type specific role id counters
89
+ mapping(TargetType => uint64) internal _nextRoleId;
90
+
74
91
  modifier onlyDeployer() {
75
92
  // special case for cloned AccessAdmin contracts
76
93
  // IMPORTANT cloning and initialize authority needs to be done in a single transaction
@@ -79,79 +96,73 @@ contract AccessAdmin is
79
96
  }
80
97
 
81
98
  if (msg.sender != _deployer) {
82
- revert ErrorNotDeployer();
83
- }
84
- _;
85
- }
86
-
87
- modifier onlyRoleAdmin(RoleId roleId) {
88
- _checkRoleExists(roleId, false);
89
-
90
- if (!hasAdminRole(msg.sender, roleId)) {
91
- revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
99
+ revert ErrorAccessAdminNotDeployer();
92
100
  }
93
101
  _;
94
102
  }
95
103
 
96
- modifier onlyRoleMember(RoleId roleId) {
97
- if (!hasRole(msg.sender, roleId)) {
98
- revert ErrorNotRoleOwner(roleId);
99
- }
100
- _;
101
- }
102
-
103
- modifier onlyExistingRole(
104
- RoleId roleId,
105
- bool onlyActiveRole,
106
- bool allowLockedRoles
107
- )
108
- {
109
- if (!allowLockedRoles) {
110
- _checkRoleExists(roleId, onlyActiveRole);
111
- }
112
- _;
113
- }
114
-
115
- modifier onlyExistingTarget(address target) {
116
- _checkTarget(target);
117
- _;
118
- }
119
104
 
120
105
  //-------------- initialization functions ------------------------------//
121
106
 
122
- // event LogAccessAdminDebug(string message);
123
-
124
107
  /// @dev Initializes this admin with the provided accessManager (and authorization specification).
125
108
  /// Internally initializes access manager with this admin and creates basic role setup.
126
109
  function initialize(
127
- AccessManagerCloneable authority
110
+ address authority,
111
+ string memory adminName
128
112
  )
129
113
  public
130
114
  initializer()
131
115
  {
132
- __AccessAdmin_init(authority);
116
+ __AccessAdmin_init(authority, adminName);
133
117
  }
134
118
 
135
119
 
136
120
  function __AccessAdmin_init(
137
- AccessManagerCloneable authority
121
+ address authority,
122
+ string memory adminName
138
123
  )
139
124
  internal
140
125
  onlyInitializing()
141
- onlyDeployer() // initializes deployer if not initialized yet
126
+ onlyDeployer()
142
127
  {
143
- authority.initialize(address(this));
128
+ // checks
129
+ // only contract check (authority might not yet be initialized at this time)
130
+ if (!ContractLib.isContract(authority)) {
131
+ revert ErrorAccessAdminAuthorityNotContract(authority);
132
+ }
133
+
134
+ // check name not empty
135
+ if (bytes(adminName).length == 0) {
136
+ revert ErrorAccessAdminAccessManagerEmptyName();
137
+ }
138
+
139
+ _authority = AccessManagerCloneable(authority);
140
+ _authority.initialize(address(this));
141
+
142
+ // delayed additional check for authority after its initialization
143
+ if (!ContractLib.isAuthority(authority)) {
144
+ revert ErrorAccessAdminAccessManagerNotAccessManager(authority);
145
+ }
144
146
 
147
+ // effects
145
148
  // set and initialize this access manager contract as
146
149
  // the admin (ADMIN_ROLE) of the provided authority
147
- __AccessManaged_init(address(authority));
148
- _authority = authority;
150
+ __AccessManaged_init(authority);
151
+
152
+ // set name for logging
153
+ _adminName = adminName;
154
+
155
+ // set initial linked NFT ID to zero
156
+ _linkedNftId = NftIdLib.zero();
149
157
 
150
158
  // create admin and public roles
151
159
  _initializeAdminAndPublicRoles();
160
+ }
161
+
162
+ //--- view functions for access amdin ---------------------------------------//
152
163
 
153
- // additional use case specific initialization
154
- _initializeCustom();
164
+ function getRelease() public view virtual returns (VersionPart release) {
165
+ return _authority.getRelease();
155
166
  }
156
167
 
157
168
 
@@ -160,46 +171,24 @@ contract AccessAdmin is
160
171
  }
161
172
 
162
173
 
163
- function getRelease() public view returns (VersionPart release) {
164
- return _authority.getRelease();
174
+ function getLinkedNftId() external view returns (NftId linkedNftId) {
175
+ return _linkedNftId;
165
176
  }
166
177
 
167
178
 
168
- function _initializeAdminAndPublicRoles()
169
- internal
170
- virtual
171
- onlyInitializing()
172
- {
173
- RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
174
-
175
- // setup admin role
176
- _createRoleUnchecked(
177
- ADMIN_ROLE(),
178
- toRole({
179
- adminRoleId: ADMIN_ROLE(),
180
- roleType: RoleType.Contract,
181
- maxMemberCount: 1,
182
- name: ADMIN_ROLE_NAME}));
179
+ function getLinkedOwner() external view returns (address linkedOwner) {
180
+ return getRegistry().ownerOf(_linkedNftId);
181
+ }
183
182
 
184
- // add this contract as admin role member
185
- _roleMembers[adminRoleId].add(address(this));
186
183
 
187
- // setup public role
188
- _createRoleUnchecked(
189
- PUBLIC_ROLE(),
190
- toRole({
191
- adminRoleId: ADMIN_ROLE(),
192
- roleType: RoleType.Gif,
193
- maxMemberCount: type(uint32).max,
194
- name: PUBLIC_ROLE_NAME}));
184
+ function getAuthorization() public view returns (IAuthorization authorization) {
185
+ return _authorization;
195
186
  }
196
187
 
197
188
 
198
- function _initializeCustom()
199
- internal
200
- virtual
201
- onlyInitializing()
202
- { }
189
+ function isLocked() public view returns (bool locked) {
190
+ return _authority.isLocked();
191
+ }
203
192
 
204
193
  //--- view functions for roles ------------------------------------------//
205
194
 
@@ -219,16 +208,33 @@ contract AccessAdmin is
219
208
  return RoleId.wrap(_authority.PUBLIC_ROLE());
220
209
  }
221
210
 
211
+ function roleExists(string memory name) public view returns (bool exists) {
212
+ // special case for admin and public roles
213
+ if (StrLib.eq(name, ADMIN_ROLE_NAME()) || StrLib.eq(name, PUBLIC_ROLE_NAME())) {
214
+ return true;
215
+ }
216
+
217
+ return _roleForName[StrLib.toStr(name)].roleId.gtz();
218
+ }
219
+
222
220
  function roleExists(RoleId roleId) public view returns (bool exists) {
223
221
  return _roleInfo[roleId].createdAt.gtz();
224
222
  }
225
223
 
226
- function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
224
+ function getRoleForName(string memory name) public view returns (RoleId roleId) {
225
+ return _roleForName[StrLib.toStr(name)].roleId;
226
+ }
227
+
228
+ function getRoleInfo(RoleId roleId) public view returns (RoleInfo memory) {
227
229
  return _roleInfo[roleId];
228
230
  }
229
231
 
230
- function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
231
- return _roleForName[name];
232
+ function isRoleActive(RoleId roleId) external view returns (bool isActive) {
233
+ return _roleInfo[roleId].pausedAt > TimestampLib.current();
234
+ }
235
+
236
+ function isRoleCustom(RoleId roleId) external view returns (bool isActive) {
237
+ return _roleInfo[roleId].roleType == RoleType.Custom;
232
238
  }
233
239
 
234
240
  function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
@@ -239,21 +245,15 @@ contract AccessAdmin is
239
245
  return _roleMembers[roleId].at(idx);
240
246
  }
241
247
 
242
- // TODO false because not role member or because role not exists?
243
- function hasRole(address account, RoleId roleId) public view returns (bool) {
248
+ function isRoleMember(RoleId roleId, address account) public view returns (bool) {
244
249
  (bool isMember, ) = _authority.hasRole(
245
250
  RoleId.unwrap(roleId),
246
251
  account);
247
252
  return isMember;
248
253
  }
249
254
 
250
- function hasAdminRole(address account, RoleId roleId)
251
- public
252
- virtual
253
- view
254
- returns (bool)
255
- {
256
- return hasRole(account, _roleInfo[roleId].adminRoleId);
255
+ function isRoleAdmin(RoleId roleId, address account) public virtual view returns (bool) {
256
+ return isRoleMember(_roleInfo[roleId].adminRoleId, account);
257
257
  }
258
258
 
259
259
  //--- view functions for targets ----------------------------------------//
@@ -270,7 +270,7 @@ contract AccessAdmin is
270
270
  return _targets[idx];
271
271
  }
272
272
 
273
- function getTargetInfo(address target) external view returns (TargetInfo memory targetInfo) {
273
+ function getTargetInfo(address target) public view returns (TargetInfo memory targetInfo) {
274
274
  return _targetInfo[target];
275
275
  }
276
276
 
@@ -279,7 +279,7 @@ contract AccessAdmin is
279
279
  }
280
280
 
281
281
  function isTargetLocked(address target) public view returns (bool locked) {
282
- return _authority.isTargetClosed(target);
282
+ return _authority.isLocked() || _authority.isTargetClosed(target);
283
283
  }
284
284
 
285
285
  function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
@@ -305,132 +305,177 @@ contract AccessAdmin is
305
305
  selector.toBytes4()));
306
306
  }
307
307
 
308
- function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
309
- (can, ) = _authority.canCall(caller, target, selector.toBytes4());
308
+ function deployer() public view returns (address) {
309
+ return _deployer;
310
310
  }
311
311
 
312
- function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
313
- return RoleInfo({
314
- name: StrLib.toStr(name),
315
- adminRoleId: adminRoleId,
316
- roleType: roleType,
317
- maxMemberCount: maxMemberCount,
318
- createdAt: TimestampLib.blockTimestamp(),
319
- pausedAt: TimestampLib.max()
320
- });
312
+ //--- internal/private functions -------------------------------------------------//
313
+
314
+ function _linkToNftOwnable(address registerable) internal {
315
+ if (!getRegistry().isRegistered(registerable)) {
316
+ revert ErrorAccessAdminNotRegistered(registerable);
317
+ }
318
+
319
+ _linkedNftId = getRegistry().getNftIdForAddress(registerable);
321
320
  }
322
321
 
323
- function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
324
- return FunctionInfo({
325
- name: StrLib.toStr(name),
326
- selector: SelectorLib.toSelector(selector),
327
- createdAt: TimestampLib.blockTimestamp()});
322
+
323
+ function _initializeAdminAndPublicRoles()
324
+ internal
325
+ virtual
326
+ onlyInitializing()
327
+ {
328
+ // setup admin role
329
+ _createRoleUnchecked(
330
+ ADMIN_ROLE(),
331
+ AccessAdminLib.toRole({
332
+ adminRoleId: ADMIN_ROLE(),
333
+ roleType: RoleType.Contract,
334
+ maxMemberCount: 1,
335
+ name: ADMIN_ROLE_NAME()}));
336
+
337
+ // add this contract as admin role member, as contract roles cannot be revoked
338
+ // and max member count is 1 for admin role this access admin contract will
339
+ // always be the only admin of the access manager.
340
+ _roleMembers[
341
+ RoleIdLib.toRoleId(_authority.ADMIN_ROLE())].add(address(this));
342
+
343
+ // setup public role
344
+ _createRoleUnchecked(
345
+ PUBLIC_ROLE(),
346
+ AccessAdminLib.toRole({
347
+ adminRoleId: ADMIN_ROLE(),
348
+ roleType: RoleType.Core,
349
+ maxMemberCount: type(uint32).max,
350
+ name: PUBLIC_ROLE_NAME()}));
328
351
  }
329
352
 
330
- function deployer() public view returns (address) {
331
- return _deployer;
353
+
354
+ /// @dev Authorize the functions of the target for the specified role.
355
+ function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
356
+ internal
357
+ {
358
+ _authorizeTargetFunctions(
359
+ getTargetForName(target),
360
+ _toAuthorizedRoleId(authorization, roleId),
361
+ authorization.getAuthorizedFunctions(
362
+ target,
363
+ roleId),
364
+ true);
332
365
  }
333
366
 
334
- //--- internal/private functions -------------------------------------------------//
335
367
 
336
- function _authorizeTargetFunctions(
337
- address target,
338
- RoleId roleId,
339
- FunctionInfo[] memory functions
340
- )
368
+ function _toAuthorizedRoleId(IAuthorization authorization, RoleId roleId)
341
369
  internal
370
+ returns (RoleId authorizedRoleId)
342
371
  {
343
- if (roleId == getAdminRole()) {
344
- revert ErrorAuthorizeForAdminRoleInvalid(target);
345
- }
372
+ // special case for service roles (service roles have predefined role ids)
373
+ if (roleId.isServiceRole()) {
374
+
375
+ // create service role if missing
376
+ if (!roleExists(roleId)) {
377
+ _createRole(
378
+ roleId,
379
+ AccessAdminLib.toRole(
380
+ ADMIN_ROLE(),
381
+ RoleType.Contract,
382
+ 1,
383
+ authorization.getRoleName(roleId)));
384
+ }
346
385
 
347
- bool addFunctions = true;
348
- bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
386
+ return roleId;
387
+ }
349
388
 
350
- // apply authz via access manager
351
- _grantRoleAccessToFunctions(
352
- target,
353
- roleId,
354
- functionSelectors,
355
- false); // allowLockedRoles
389
+ string memory roleName = authorization.getRoleInfo(roleId).name.toString();
390
+ return authorizedRoleId = getRoleForName(roleName);
356
391
  }
357
392
 
358
- function _unauthorizeTargetFunctions(
393
+
394
+ function _authorizeTargetFunctions(
359
395
  address target,
360
- FunctionInfo[] memory functions
396
+ RoleId roleId,
397
+ FunctionInfo[] memory functions,
398
+ bool addFunctions
361
399
  )
362
400
  internal
363
401
  {
364
- bool addFunctions = false;
365
- bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
402
+ if (addFunctions && roleId == getAdminRole()) {
403
+ revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
404
+ }
366
405
 
406
+ // apply authz via access manager
367
407
  _grantRoleAccessToFunctions(
368
408
  target,
369
- getAdminRole(),
370
- functionSelectors,
371
- true); // allowLockedRoles
409
+ roleId,
410
+ functions,
411
+ addFunctions); // add functions
372
412
  }
373
413
 
374
- function _processFunctionSelectors(
414
+
415
+ /// @dev grant the specified role access to all functions in the provided selector list
416
+ function _grantRoleAccessToFunctions(
375
417
  address target,
418
+ RoleId roleId,
376
419
  FunctionInfo[] memory functions,
377
420
  bool addFunctions
378
421
  )
379
422
  internal
380
- onlyExistingTarget(target)
381
- returns (
382
- bytes4[] memory functionSelectors
383
- )
384
423
  {
385
- uint256 n = functions.length;
386
- functionSelectors = new bytes4[](n);
387
- FunctionInfo memory func;
388
- Selector selector;
424
+ _checkTargetExists(target);
425
+ _checkRoleExists(roleId, true, true);
389
426
 
390
- for (uint256 i = 0; i < n; i++) {
391
- func = functions[i];
392
- selector = func.selector;
393
-
394
- // add function selector to target selector set if not in set
395
- if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
396
- else { SelectorSetLib.remove(_targetFunctions[target], selector); }
397
-
398
- // set function name
399
- _functionInfo[target][selector] = func;
427
+ _authority.setTargetFunctionRole(
428
+ target,
429
+ AccessAdminLib.getSelectors(functions),
430
+ RoleId.unwrap(roleId));
400
431
 
401
- // add bytes4 selector to function selector array
402
- functionSelectors[i] = selector.toBytes4();
432
+ // update function set and log function grantings
433
+ for (uint256 i = 0; i < functions.length; i++) {
434
+ _updateFunctionAccess(
435
+ target,
436
+ roleId,
437
+ functions[i],
438
+ addFunctions);
403
439
  }
404
440
  }
405
441
 
406
- /// @dev grant the specified role access to all functions in the provided selector list
407
- function _grantRoleAccessToFunctions(
408
- address target,
409
- RoleId roleId,
410
- bytes4[] memory functionSelectors,
411
- bool allowLockedRoles // admin and public roles are locked
442
+
443
+ function _updateFunctionAccess(
444
+ address target,
445
+ RoleId roleId,
446
+ FunctionInfo memory func,
447
+ bool addFunction
412
448
  )
413
449
  internal
414
- onlyExistingTarget(target)
415
- onlyExistingRole(roleId, true, allowLockedRoles)
416
450
  {
417
- _authority.setTargetFunctionRole(
418
- target,
419
- functionSelectors,
420
- RoleId.unwrap(roleId));
451
+ // update functions info
452
+ Selector selector = func.selector;
453
+ _functionInfo[target][selector] = func;
454
+
455
+ // update function sets
456
+ if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
457
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
421
458
 
422
- // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
459
+ // logging
460
+ emit LogAccessAdminFunctionGranted(
461
+ _adminName,
462
+ target,
463
+ string(abi.encodePacked(
464
+ func.name.toString(),
465
+ "(): ",
466
+ _getRoleName(roleId))));
423
467
  }
424
468
 
425
469
 
426
470
  /// @dev grant the specified role to the provided account
427
471
  function _grantRoleToAccount(RoleId roleId, address account)
428
472
  internal
429
- onlyExistingRole(roleId, true, false)
430
473
  {
474
+ _checkRoleExists(roleId, true, false);
475
+
431
476
  // check max role members will not be exceeded
432
477
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
433
- revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
478
+ revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
434
479
  }
435
480
 
436
481
  // check account is contract for contract role
@@ -438,37 +483,38 @@ contract AccessAdmin is
438
483
  _roleInfo[roleId].roleType == RoleType.Contract &&
439
484
  !ContractLib.isContract(account) // will fail in account's constructor
440
485
  ) {
441
- revert ErrorRoleMemberNotContract(roleId, account);
486
+ revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
442
487
  }
443
488
 
444
- // TODO check account already have roleId
489
+ // effects
445
490
  _roleMembers[roleId].add(account);
446
491
  _authority.grantRole(
447
492
  RoleId.unwrap(roleId),
448
493
  account,
449
494
  0);
450
495
 
451
- // indirect logging: rely on OpenZeppelin log RoleGranted
496
+ emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
452
497
  }
453
498
 
499
+
454
500
  /// @dev revoke the specified role from the provided account
455
501
  function _revokeRoleFromAccount(RoleId roleId, address account)
456
502
  internal
457
- onlyExistingRole(roleId, false, false)
458
503
  {
504
+ _checkRoleExists(roleId, false, false);
459
505
 
460
- // check role removal is permitted
506
+ // check for attempt to revoke contract role
461
507
  if (_roleInfo[roleId].roleType == RoleType.Contract) {
462
- revert ErrorRoleMemberRemovalDisabled(roleId, account);
508
+ revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
463
509
  }
464
510
 
465
- // TODO check account have roleId?
511
+ // effects
466
512
  _roleMembers[roleId].remove(account);
467
513
  _authority.revokeRole(
468
514
  RoleId.unwrap(roleId),
469
515
  account);
470
516
 
471
- // indirect logging: rely on OpenZeppelin log RoleGranted
517
+ emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
472
518
  }
473
519
 
474
520
 
@@ -480,32 +526,84 @@ contract AccessAdmin is
480
526
  )
481
527
  internal
482
528
  {
483
- // check role does not yet exist
484
- if(roleExists(roleId)) {
485
- revert ErrorRoleAlreadyCreated(
486
- roleId,
487
- _roleInfo[roleId].name.toString());
529
+ // skip admin and public roles (they are created during initialization)
530
+ if (roleId == ADMIN_ROLE() || roleId == PUBLIC_ROLE()) {
531
+ return;
488
532
  }
533
+
534
+ AccessAdminLib.checkRoleCreation(this, roleId, info);
535
+ _createRoleUnchecked(roleId, info);
536
+ }
489
537
 
490
- // check admin role exists
491
- if(!roleExists(info.adminRoleId)) {
492
- revert ErrorRoleAdminNotExisting(info.adminRoleId);
493
- }
494
538
 
495
- // check role name is not empty
496
- if(info.name.length() == 0) {
497
- revert ErrorRoleNameEmpty(roleId);
539
+ /// @dev Activates or deactivates role.
540
+ /// The role activ property is indirectly controlled over the pausedAt timestamp.
541
+ function _setRoleActive(RoleId roleId, bool active)
542
+ internal
543
+ {
544
+ if (active) {
545
+ _roleInfo[roleId].pausedAt = TimestampLib.max();
546
+ } else {
547
+ _roleInfo[roleId].pausedAt = TimestampLib.current();
498
548
  }
549
+ }
499
550
 
500
- // check role name is not used for another role
501
- if(_roleForName[info.name].exists) {
502
- revert ErrorRoleNameAlreadyExists(
503
- roleId,
504
- info.name.toString(),
505
- _roleForName[info.name].roleId);
506
- }
507
551
 
508
- _createRoleUnchecked(roleId, info);
552
+ function _createManagedTarget(
553
+ address target,
554
+ string memory targetName,
555
+ TargetType targetType
556
+ )
557
+ internal
558
+ returns (RoleId contractRoleId)
559
+ {
560
+ return _createTarget(target, targetName, targetType, true);
561
+ }
562
+
563
+
564
+ function _createUncheckedTarget(
565
+ address target,
566
+ string memory targetName,
567
+ TargetType targetType
568
+ )
569
+ internal
570
+ {
571
+ _createTarget(target, targetName, targetType, false);
572
+ }
573
+
574
+
575
+ function _createTarget(
576
+ address target,
577
+ string memory targetName,
578
+ TargetType targetType,
579
+ bool checkAuthority
580
+ )
581
+ private
582
+ returns (RoleId contractRoleId)
583
+ {
584
+ // checks
585
+ AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
586
+
587
+ // effects
588
+ contractRoleId = _createTargetUnchecked(
589
+ target,
590
+ targetName,
591
+ targetType,
592
+ checkAuthority);
593
+
594
+ // deal with token handler, if applicable
595
+ (
596
+ address tokenHandler,
597
+ string memory tokenHandlerName
598
+ ) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
599
+
600
+ if (tokenHandler != address(0)) {
601
+ _createTargetUnchecked(
602
+ tokenHandler,
603
+ tokenHandlerName,
604
+ targetType,
605
+ checkAuthority);
606
+ }
509
607
  }
510
608
 
511
609
 
@@ -516,7 +614,8 @@ contract AccessAdmin is
516
614
  private
517
615
  {
518
616
  // create role info
519
- info.createdAt = TimestampLib.blockTimestamp();
617
+ info.createdAt = TimestampLib.current();
618
+ info.pausedAt = TimestampLib.max();
520
619
  _roleInfo[roleId] = info;
521
620
 
522
621
  // create role name info
@@ -527,133 +626,155 @@ contract AccessAdmin is
527
626
  // add role to list of roles
528
627
  _roleIds.push(roleId);
529
628
 
530
- emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
629
+ emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
531
630
  }
532
631
 
533
632
 
534
- function _createTarget(
633
+ /// @dev Creates a new target and a corresponding contract role.
634
+ /// The function assigns the role to the target and logs the creation.
635
+ function _createTargetUnchecked(
535
636
  address target,
536
637
  string memory targetName,
537
- bool checkAuthority,
538
- bool custom
638
+ TargetType targetType,
639
+ bool managed
539
640
  )
540
641
  internal
642
+ returns (RoleId targetRoleId)
541
643
  {
542
- // check target does not yet exist
543
- if(targetExists(target)) {
544
- revert ErrorTargetAlreadyCreated(
545
- target,
546
- _targetInfo[target].name.toString());
547
- }
548
-
549
- // check target name is not empty
550
- Str name = StrLib.toStr(targetName);
551
- if(name.length() == 0) {
552
- revert ErrorTargetNameEmpty(target);
553
- }
554
-
555
- // check target name is not used for another target
556
- if( _targetForName[name] != address(0)) {
557
- revert ErrorTargetNameAlreadyExists(
558
- target,
559
- targetName,
560
- _targetForName[name]);
561
- }
562
-
563
- // check target is an access managed contract
564
- if (!_isAccessManaged(target)) {
565
- revert ErrorTargetNotAccessManaged(target);
566
- }
567
-
568
- // check target shares authority with this contract
569
- if (checkAuthority) {
570
- address targetAuthority = AccessManagedUpgradeable(target).authority();
571
- if (targetAuthority != authority()) {
572
- revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
573
- }
644
+ // create target role (if not existing)
645
+ string memory roleName;
646
+ (targetRoleId, roleName) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
647
+
648
+ if (!roleExists(targetRoleId)) {
649
+ _createRole(
650
+ targetRoleId,
651
+ AccessAdminLib.toRole(ADMIN_ROLE(), IAccess.RoleType.Contract, 1, roleName));
574
652
  }
575
653
 
576
654
  // create target info
655
+ Str name = StrLib.toStr(targetName);
577
656
  _targetInfo[target] = TargetInfo({
578
657
  name: name,
579
- isCustom: custom,
580
- createdAt: TimestampLib.blockTimestamp()
658
+ targetType: targetType,
659
+ roleId: targetRoleId,
660
+ createdAt: TimestampLib.current()
581
661
  });
582
662
 
583
663
  // create name to target mapping
584
664
  _targetForName[name] = target;
585
665
 
586
- // add role to list of roles
666
+ // add target to list of targets
587
667
  _targets.push(target);
588
668
 
589
- emit LogTargetCreated(target, targetName);
669
+ // grant contract role to target
670
+ _grantRoleToAccount(targetRoleId, target);
671
+
672
+ emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
590
673
  }
591
674
 
592
675
 
593
- function _isAccessManaged(address target)
676
+ function _getOrCreateTargetRoleIdAndName(
677
+ address target,
678
+ string memory targetName,
679
+ TargetType targetType
680
+ )
594
681
  internal
595
- view
596
- returns (bool)
682
+ returns (
683
+ RoleId roleId,
684
+ string memory roleName
685
+ )
597
686
  {
598
- if (!ContractLib.isContract(target)) {
599
- return false;
687
+ // get roleId
688
+ if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
689
+ roleId = AccessAdminLib.getServiceRoleId(target, targetType);
690
+ } else {
691
+ roleId = AccessAdminLib.getTargetRoleId(target, targetType, _nextRoleId[targetType]);
692
+
693
+ // increment target type specific role id counter
694
+ _nextRoleId[targetType]++;
600
695
  }
601
696
 
602
- (bool success, ) = target.staticcall(
603
- abi.encodeWithSelector(
604
- IAccessManagedChecker.authority.selector));
605
-
606
- return success;
697
+ // create role name
698
+ roleName = AccessAdminLib.toRoleName(targetName);
607
699
  }
608
700
 
609
701
 
610
- function _setTargetClosed(address target, bool locked)
702
+ function _setTargetLocked(address target, bool locked)
611
703
  internal
612
704
  {
613
- _checkTarget(target);
705
+ _checkTargetExists(target);
706
+ _authority.setTargetClosed(target, locked);
707
+ }
614
708
 
615
- // target locked/unlocked already
616
- if(_authority.isTargetClosed(target) == locked) {
617
- revert ErrorTargetAlreadyLocked(target, locked);
709
+
710
+ function _getRoleName(RoleId roleId) internal view returns (string memory) {
711
+ if (roleExists(roleId)) {
712
+ return _roleInfo[roleId].name.toString();
618
713
  }
714
+ return "<unknown-role>";
715
+ }
619
716
 
620
- _authority.setTargetClosed(target, locked);
717
+
718
+ function _checkAuthorization(
719
+ address authorization,
720
+ ObjectType expectedDomain,
721
+ VersionPart expectedRelease,
722
+ bool expectServiceAuthorization,
723
+ bool checkAlreadyInitialized
724
+ )
725
+ internal
726
+ view
727
+ {
728
+ AccessAdminLib.checkAuthorization(
729
+ address(_authorization),
730
+ authorization,
731
+ expectedDomain,
732
+ expectedRelease,
733
+ expectServiceAuthorization,
734
+ checkAlreadyInitialized);
621
735
  }
622
736
 
623
737
 
624
- function _checkRoleExists(
738
+ function _checkRoleExists(
625
739
  RoleId roleId,
626
- bool onlyActiveRole
740
+ bool onlyActiveRole,
741
+ bool allowAdminAndPublicRoles
627
742
  )
628
743
  internal
629
744
  view
630
745
  {
631
746
  if (!roleExists(roleId)) {
632
- revert ErrorRoleUnknown(roleId);
747
+ revert ErrorAccessAdminRoleUnknown(roleId);
633
748
  }
634
749
 
635
- uint64 roleIdInt = RoleId.unwrap(roleId);
636
- if (roleIdInt == _authority.ADMIN_ROLE())
637
- // TODO cleanup
638
- //|| roleIdInt == _authority.PUBLIC_ROLE()) prevents granting of public role
639
- {
640
- revert ErrorRoleIsLocked(roleId);
750
+ if (!allowAdminAndPublicRoles) {
751
+ if (roleId == ADMIN_ROLE()) {
752
+ revert ErrorAccessAdminInvalidUserOfAdminRole();
753
+ }
754
+
755
+ // check role is not public role
756
+ if (roleId == PUBLIC_ROLE()) {
757
+ revert ErrorAccessAdminInvalidUserOfPublicRole();
758
+ }
641
759
  }
642
760
 
643
761
  // check if role is disabled
644
- if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
645
- revert ErrorRoleIsPaused(roleId);
762
+ if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.current()) {
763
+ revert ErrorAccessAdminRoleIsPaused(roleId);
646
764
  }
647
765
  }
648
766
 
649
767
 
650
768
  /// @dev check if target exists and reverts if it doesn't
651
- function _checkTarget(address target)
769
+ function _checkTargetExists(
770
+ address target
771
+ )
652
772
  internal
653
773
  view
654
774
  {
775
+ // check not yet created
655
776
  if (!targetExists(target)) {
656
- revert ErrorTargetUnknown(target);
777
+ revert ErrorAccessAdminTargetNotCreated(target);
657
778
  }
658
779
  }
659
780
  }