@etherisc/gif-next 0.0.2-bf51045-496 → 0.0.2-bf9f7e6-880

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