@etherisc/gif-next 0.0.2-da2c7dd-538 → 0.0.2-da87b00-860

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