@etherisc/gif-next 0.0.2-f634e5c-828 → 0.0.2-f689687-279

Sign up to get free protection for your applications and to get access to all the features.
Files changed (433) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  3. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  5. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  12. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  14. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
  17. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  19. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +77 -65
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -39
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +117 -110
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -26
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +27 -3
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -42
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +259 -184
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +104 -54
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -63
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -48
  54. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +288 -147
  58. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  59. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
  60. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +54 -21
  62. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -3
  64. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/Instance.sol/Instance.json +80 -40
  66. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +331 -99
  68. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +127 -40
  70. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +294 -196
  72. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -58
  74. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
  76. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
  78. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +96 -53
  80. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  81. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  82. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  85. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  87. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  89. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  90. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  91. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  96. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -56
  99. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  101. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -26
  104. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  106. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -40
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +75 -68
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +25 -27
  112. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -39
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -201
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -55
  120. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -80
  122. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -26
  124. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  126. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  127. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -39
  128. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +236 -281
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -47
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +57 -50
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -18
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -130
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +27 -3
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +27 -50
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -117
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +105 -137
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +40 -38
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  167. package/artifacts/contracts/product/Product.sol/Product.json +157 -130
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  175. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  177. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  178. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  179. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  180. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
  188. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  190. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  192. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +315 -49
  194. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  196. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  198. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
  200. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +105 -442
  202. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +40 -70
  204. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  206. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +57 -4
  208. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  212. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
  214. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -291
  216. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -26
  218. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  220. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  224. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  227. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  228. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -39
  230. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  234. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  236. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  237. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  238. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  241. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  242. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  246. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  247. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  248. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  249. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  250. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  251. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +38 -26
  252. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
  254. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  256. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  257. package/artifacts/contracts/staking/Staking.sol/Staking.json +90 -57
  258. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  260. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +27 -19
  262. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  264. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -51
  266. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +18 -20
  268. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +128 -128
  270. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  271. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  272. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  273. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  282. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  283. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +23 -4
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  312. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  314. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  315. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  316. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  317. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  318. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  319. package/contracts/accounting/AccountingService.sol +262 -0
  320. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  321. package/contracts/accounting/IAccountingService.sol +45 -0
  322. package/contracts/authorization/AccessAdmin.sol +156 -82
  323. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  324. package/contracts/authorization/Authorization.sol +277 -229
  325. package/contracts/authorization/IAccessAdmin.sol +13 -7
  326. package/contracts/authorization/IAuthorization.sol +15 -1
  327. package/contracts/distribution/BasicDistribution.sol +4 -4
  328. package/contracts/distribution/BasicDistributionAuthorization.sol +21 -8
  329. package/contracts/distribution/Distribution.sol +27 -24
  330. package/contracts/distribution/DistributionService.sol +18 -15
  331. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  332. package/contracts/examples/fire/FirePool.sol +6 -2
  333. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  334. package/contracts/examples/fire/FireProduct.sol +8 -1
  335. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  336. package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -14
  337. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  338. package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
  339. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  340. package/contracts/examples/unpermissioned/SimpleProduct.sol +25 -0
  341. package/contracts/instance/BundleSet.sol +4 -4
  342. package/contracts/instance/IInstance.sol +6 -7
  343. package/contracts/instance/IInstanceService.sol +2 -0
  344. package/contracts/instance/Instance.sol +19 -11
  345. package/contracts/instance/InstanceAdmin.sol +216 -62
  346. package/contracts/instance/InstanceAuthorizationV3.sol +18 -23
  347. package/contracts/instance/InstanceReader.sol +79 -35
  348. package/contracts/instance/InstanceService.sol +43 -31
  349. package/contracts/instance/InstanceServiceManager.sol +1 -1
  350. package/contracts/instance/InstanceStore.sol +13 -2
  351. package/contracts/instance/RiskSet.sol +11 -12
  352. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  353. package/contracts/instance/base/ObjectSet.sol +7 -8
  354. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  355. package/contracts/instance/module/IComponents.sol +3 -2
  356. package/contracts/instance/module/IRisk.sol +2 -0
  357. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  358. package/contracts/oracle/Oracle.sol +1 -1
  359. package/contracts/oracle/OracleService.sol +16 -15
  360. package/contracts/oracle/OracleServiceManager.sol +1 -1
  361. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  362. package/contracts/pool/BundleService.sol +35 -63
  363. package/contracts/pool/BundleServiceManager.sol +1 -1
  364. package/contracts/pool/IBundleService.sol +13 -20
  365. package/contracts/pool/IPoolService.sol +50 -38
  366. package/contracts/pool/Pool.sol +9 -9
  367. package/contracts/pool/PoolLib.sol +216 -0
  368. package/contracts/pool/PoolService.sol +307 -162
  369. package/contracts/pool/PoolServiceManager.sol +1 -1
  370. package/contracts/product/ApplicationService.sol +3 -3
  371. package/contracts/product/ApplicationServiceManager.sol +1 -1
  372. package/contracts/product/BasicProduct.sol +2 -0
  373. package/contracts/product/BasicProductAuthorization.sol +24 -10
  374. package/contracts/product/ClaimService.sol +157 -139
  375. package/contracts/product/ClaimServiceManager.sol +1 -1
  376. package/contracts/product/IClaimService.sol +14 -2
  377. package/contracts/product/IPolicyService.sol +3 -2
  378. package/contracts/product/IProductComponent.sol +4 -1
  379. package/contracts/product/PolicyService.sol +74 -82
  380. package/contracts/product/PolicyServiceManager.sol +1 -1
  381. package/contracts/product/PricingService.sol +23 -19
  382. package/contracts/product/PricingServiceManager.sol +3 -3
  383. package/contracts/product/Product.sol +36 -0
  384. package/contracts/product/RiskService.sol +61 -23
  385. package/contracts/product/RiskServiceManager.sol +1 -1
  386. package/contracts/registry/IRegistry.sol +8 -15
  387. package/contracts/registry/IRelease.sol +26 -0
  388. package/contracts/registry/Registry.sol +7 -2
  389. package/contracts/registry/RegistryAdmin.sol +129 -226
  390. package/contracts/registry/RegistryService.sol +3 -3
  391. package/contracts/registry/RegistryServiceManager.sol +1 -1
  392. package/contracts/registry/ReleaseAdmin.sol +245 -0
  393. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  394. package/contracts/registry/ReleaseRegistry.sol +124 -99
  395. package/contracts/registry/ServiceAuthorizationV3.sol +85 -14
  396. package/contracts/registry/TokenRegistry.sol +6 -8
  397. package/contracts/shared/Component.sol +32 -27
  398. package/contracts/shared/ComponentService.sol +89 -266
  399. package/contracts/shared/ComponentServiceManager.sol +1 -1
  400. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  401. package/contracts/shared/ContractLib.sol +32 -3
  402. package/contracts/shared/IComponent.sol +3 -9
  403. package/contracts/shared/IComponentService.sol +1 -23
  404. package/contracts/shared/IRegisterable.sol +15 -4
  405. package/contracts/shared/IService.sol +3 -5
  406. package/contracts/shared/InstanceLinkedComponent.sol +3 -3
  407. package/contracts/shared/NftOwnable.sol +4 -4
  408. package/contracts/shared/PolicyHolder.sol +1 -1
  409. package/contracts/shared/Registerable.sol +45 -19
  410. package/contracts/shared/RegistryLinked.sol +1 -1
  411. package/contracts/shared/Service.sol +8 -27
  412. package/contracts/shared/TokenHandler.sol +40 -88
  413. package/contracts/staking/IStaking.sol +0 -8
  414. package/contracts/staking/IStakingService.sol +8 -0
  415. package/contracts/staking/StakeManagerLib.sol +1 -1
  416. package/contracts/staking/Staking.sol +34 -13
  417. package/contracts/staking/StakingReader.sol +1 -1
  418. package/contracts/staking/StakingService.sol +32 -42
  419. package/contracts/staking/StakingServiceManager.sol +5 -4
  420. package/contracts/type/ObjectType.sol +46 -21
  421. package/contracts/type/RiskId.sol +5 -0
  422. package/contracts/type/RoleId.sol +24 -4
  423. package/contracts/type/Selector.sol +5 -0
  424. package/contracts/type/Timestamp.sol +0 -5
  425. package/contracts/type/Version.sol +15 -5
  426. package/contracts/upgradeability/ProxyManager.sol +1 -1
  427. package/package.json +1 -1
  428. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  429. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  430. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  431. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  432. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  433. package/contracts/instance/module/IAccess.sol +0 -46
@@ -8,10 +8,12 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/ut
8
8
  import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
9
  import {ContractLib} from "../shared/ContractLib.sol";
10
10
  import {IAccessAdmin} from "./IAccessAdmin.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
11
12
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
12
13
  import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
13
14
  import {Str, StrLib} from "../type/String.sol";
14
15
  import {TimestampLib} from "../type/Timestamp.sol";
16
+ import {VersionPart} from "../type/Version.sol";
15
17
 
16
18
  interface IAccessManagedChecker {
17
19
  function authority() external view returns (address);
@@ -71,7 +73,7 @@ contract AccessAdmin is
71
73
 
72
74
  modifier onlyDeployer() {
73
75
  // special case for cloned AccessAdmin contracts
74
- // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
76
+ // IMPORTANT cloning and initialize authority needs to be done in a single transaction
75
77
  if (_deployer == address(0)) {
76
78
  _deployer = msg.sender;
77
79
  }
@@ -98,8 +100,15 @@ contract AccessAdmin is
98
100
  _;
99
101
  }
100
102
 
101
- modifier onlyExistingRole(RoleId roleId, bool onlyActiveRole) {
102
- _checkRoleExists(roleId, onlyActiveRole);
103
+ modifier onlyExistingRole(
104
+ RoleId roleId,
105
+ bool onlyActiveRole,
106
+ bool allowLockedRoles
107
+ )
108
+ {
109
+ if (!allowLockedRoles) {
110
+ _checkRoleExists(roleId, onlyActiveRole);
111
+ }
103
112
  _;
104
113
  }
105
114
 
@@ -108,15 +117,90 @@ contract AccessAdmin is
108
117
  _;
109
118
  }
110
119
 
111
- constructor() {
112
- _deployer = msg.sender;
113
- _authority = new AccessManagerCloneable();
114
- _authority.initialize(address(this));
120
+ //-------------- initialization functions ------------------------------//
121
+
122
+ // event LogAccessAdminDebug(string message);
123
+
124
+ /// @dev Initializes this admin with the provided accessManager (and authorization specification).
125
+ /// Internally initializes access manager with this admin and creates basic role setup.
126
+ function initialize(
127
+ AccessManagerCloneable authority
128
+ )
129
+ public
130
+ initializer()
131
+ {
132
+ __AccessAdmin_init(authority);
133
+ }
134
+
135
+
136
+ function __AccessAdmin_init(
137
+ AccessManagerCloneable authority
138
+ )
139
+ internal
140
+ onlyInitializing()
141
+ onlyDeployer() // initializes deployer if not initialized yet
142
+ {
143
+ authority.initialize(address(this));
144
+
145
+ // set and initialize this access manager contract as
146
+ // the admin (ADMIN_ROLE) of the provided authority
147
+ __AccessManaged_init(address(authority));
148
+ _authority = authority;
149
+
150
+ // create admin and public roles
151
+ _initializeAdminAndPublicRoles();
152
+
153
+ // additional use case specific initialization
154
+ _initializeCustom();
155
+ }
156
+
157
+
158
+ function getRegistry() public view returns (IRegistry registry) {
159
+ return _authority.getRegistry();
160
+ }
161
+
162
+
163
+ function getRelease() public view returns (VersionPart release) {
164
+ return _authority.getRelease();
165
+ }
166
+
167
+
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}));
115
183
 
116
- _setAuthority(address(_authority)); // set authority for oz access managed
117
- _createAdminAndPublicRoles();
184
+ // add this contract as admin role member
185
+ _roleMembers[adminRoleId].add(address(this));
186
+
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}));
118
195
  }
119
196
 
197
+
198
+ function _initializeCustom()
199
+ internal
200
+ virtual
201
+ onlyInitializing()
202
+ { }
203
+
120
204
  //--- view functions for roles ------------------------------------------//
121
205
 
122
206
  function roles() external view returns (uint256 numberOfRoles) {
@@ -155,6 +239,7 @@ contract AccessAdmin is
155
239
  return _roleMembers[roleId].at(idx);
156
240
  }
157
241
 
242
+ // TODO false because not role member or because role not exists?
158
243
  function hasRole(address account, RoleId roleId) public view returns (bool) {
159
244
  (bool isMember, ) = _authority.hasRole(
160
245
  RoleId.unwrap(roleId),
@@ -259,11 +344,18 @@ contract AccessAdmin is
259
344
  revert ErrorAuthorizeForAdminRoleInvalid(target);
260
345
  }
261
346
 
262
- bool addFunctions = true;
263
- bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
347
+ (
348
+ bytes4[] memory functionSelectors,
349
+ string[] memory functionNames
350
+ ) = _processFunctionSelectors(target, functions, true);
264
351
 
265
352
  // apply authz via access manager
266
- _grantRoleAccessToFunctions(target, roleId, functionSelectors);
353
+ _grantRoleAccessToFunctions(
354
+ target,
355
+ roleId,
356
+ functionSelectors,
357
+ functionNames,
358
+ false); // allow locked roles
267
359
  }
268
360
 
269
361
  function _unauthorizeTargetFunctions(
@@ -272,9 +364,17 @@ contract AccessAdmin is
272
364
  )
273
365
  internal
274
366
  {
275
- bool addFunctions = false;
276
- bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
277
- _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
367
+ (
368
+ bytes4[] memory functionSelectors,
369
+ string[] memory functionNames
370
+ ) = _processFunctionSelectors(target, functions, false);
371
+
372
+ _grantRoleAccessToFunctions(
373
+ target,
374
+ getAdminRole(),
375
+ functionSelectors,
376
+ functionNames,
377
+ true); // allowLockedRoles
278
378
  }
279
379
 
280
380
  function _processFunctionSelectors(
@@ -283,12 +383,15 @@ contract AccessAdmin is
283
383
  bool addFunctions
284
384
  )
285
385
  internal
386
+ onlyExistingTarget(target)
286
387
  returns (
287
- bytes4[] memory functionSelectors
388
+ bytes4[] memory functionSelectors,
389
+ string[] memory functionNames
288
390
  )
289
391
  {
290
392
  uint256 n = functions.length;
291
393
  functionSelectors = new bytes4[](n);
394
+ functionNames = new string[](n);
292
395
  FunctionInfo memory func;
293
396
  Selector selector;
294
397
 
@@ -305,85 +408,43 @@ contract AccessAdmin is
305
408
 
306
409
  // add bytes4 selector to function selector array
307
410
  functionSelectors[i] = selector.toBytes4();
411
+ functionNames[i] = func.name.toString();
308
412
  }
309
413
  }
310
414
 
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
415
  /// @dev grant the specified role access to all functions in the provided selector list
367
416
  function _grantRoleAccessToFunctions(
368
417
  address target,
369
418
  RoleId roleId,
370
- bytes4[] memory functionSelectors
419
+ bytes4[] memory functionSelectors,
420
+ string[] memory functionNames,
421
+ bool allowLockedRoles // admin and public roles are locked
371
422
  )
372
423
  internal
424
+ onlyExistingTarget(target)
425
+ onlyExistingRole(roleId, true, allowLockedRoles)
373
426
  {
427
+
374
428
  _authority.setTargetFunctionRole(
375
429
  target,
376
430
  functionSelectors,
377
431
  RoleId.unwrap(roleId));
378
432
 
379
- // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
433
+ for (uint256 i = 0; i < functionSelectors.length; i++) {
434
+ emit LogAccessAdminFunctionGranted(
435
+ target,
436
+ // _getAccountName(target),
437
+ // string(abi.encodePacked("", functionSelectors[i])),
438
+ functionNames[i],
439
+ _getRoleName(roleId));
440
+ }
380
441
  }
381
442
 
382
443
 
383
444
  /// @dev grant the specified role to the provided account
384
445
  function _grantRoleToAccount(RoleId roleId, address account)
385
446
  internal
386
- onlyExistingRole(roleId, true)
447
+ onlyExistingRole(roleId, true, false)
387
448
  {
388
449
  // check max role members will not be exceeded
389
450
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
@@ -405,13 +466,13 @@ contract AccessAdmin is
405
466
  account,
406
467
  0);
407
468
 
408
- // indirect logging: rely on OpenZeppelin log RoleGranted
469
+ emit LogAccessAdminRoleGranted(account, _getRoleName(roleId));
409
470
  }
410
471
 
411
472
  /// @dev revoke the specified role from the provided account
412
473
  function _revokeRoleFromAccount(RoleId roleId, address account)
413
474
  internal
414
- onlyExistingRole(roleId, false)
475
+ onlyExistingRole(roleId, false, false)
415
476
  {
416
477
 
417
478
  // check role removal is permitted
@@ -425,7 +486,7 @@ contract AccessAdmin is
425
486
  RoleId.unwrap(roleId),
426
487
  account);
427
488
 
428
- // indirect logging: rely on OpenZeppelin log RoleGranted
489
+ emit LogAccessAdminRoleRevoked(account, _roleInfo[roleId].name.toString());
429
490
  }
430
491
 
431
492
 
@@ -484,7 +545,7 @@ contract AccessAdmin is
484
545
  // add role to list of roles
485
546
  _roleIds.push(roleId);
486
547
 
487
- emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
548
+ emit LogAccessAdminRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
488
549
  }
489
550
 
490
551
 
@@ -543,7 +604,7 @@ contract AccessAdmin is
543
604
  // add role to list of roles
544
605
  _targets.push(target);
545
606
 
546
- emit LogTargetCreated(target, targetName);
607
+ emit LogAccessAdminTargetCreated(target, targetName);
547
608
  }
548
609
 
549
610
 
@@ -577,6 +638,21 @@ contract AccessAdmin is
577
638
  _authority.setTargetClosed(target, locked);
578
639
  }
579
640
 
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
+
649
+ function _getRoleName(RoleId roleId) internal view returns (string memory) {
650
+ if (roleExists(roleId)) {
651
+ return _roleInfo[roleId].name.toString();
652
+ }
653
+ return "<unknown-role>";
654
+ }
655
+
580
656
 
581
657
  function _checkRoleExists(
582
658
  RoleId roleId,
@@ -590,9 +666,7 @@ contract AccessAdmin is
590
666
  }
591
667
 
592
668
  uint64 roleIdInt = RoleId.unwrap(roleId);
593
- if (roleIdInt == _authority.ADMIN_ROLE()
594
- || roleIdInt == _authority.PUBLIC_ROLE())
595
- {
669
+ if (roleIdInt == _authority.ADMIN_ROLE()) {
596
670
  revert ErrorRoleIsLocked(roleId);
597
671
  }
598
672
 
@@ -2,15 +2,148 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
5
7
 
8
+ import {InitializableERC165} from "../shared/InitializableERC165.sol";
9
+ import {RegistryLinked} from "../shared/RegistryLinked.sol";
10
+ import {VersionPart, VersionLib} from "../type/Version.sol";
11
+
12
+
13
+ /// @dev An AccessManager based on OpenZeppelin that is cloneable and has a central lock property.
14
+ /// The lock property allows to lock all services of a release in a central place.
15
+ /// Cloned by upon release preparation and instance cloning.
6
16
  contract AccessManagerCloneable is
7
- AccessManagerUpgradeable
17
+ AccessManagerUpgradeable,
18
+ InitializableERC165,
19
+ RegistryLinked
8
20
  {
21
+ error ErrorAccessManagerCallerNotAdmin(address caller);
22
+ error ErrorAccessManagerRegistryAlreadySet(address registry);
23
+ error ErrorAccessManagerInvalidRelease(VersionPart release);
24
+
25
+ error ErrorAccessManagerTargetAdminLocked(address target);
26
+ error ErrorAccessManagerCallerAdminLocked(address caller);
9
27
 
10
- function initialize(address initialAdmin)
28
+ VersionPart private _release;
29
+ bool private _isLocked;
30
+
31
+ modifier onlyAdminRole() {
32
+ (bool isMember, ) = hasRole(ADMIN_ROLE, msg.sender);
33
+ if(!isMember) {
34
+ revert ErrorAccessManagerCallerNotAdmin(msg.sender);
35
+ }
36
+ _;
37
+ }
38
+
39
+ function initialize(address admin)
11
40
  external
12
41
  initializer()
13
42
  {
14
- __AccessManager_init(initialAdmin);
43
+ __AccessManager_init(admin);
44
+ _initializeERC165();
45
+ _registerInterface(type(IAccessManager).interfaceId);
46
+ }
47
+
48
+
49
+ /// @dev Completes the setup of the access manager.
50
+ /// Links the access manager to the registry and sets the release version.
51
+ function completeSetup(
52
+ address registry,
53
+ VersionPart release
54
+ )
55
+ external
56
+ onlyAdminRole
57
+ reinitializer(uint64(release.toInt()))
58
+ {
59
+ _completeSetup(registry, release, true);
60
+ }
61
+
62
+ /// @dev Completes the setup of the access manager.
63
+ /// Links the access manager to the registry and sets the release version.
64
+ function completeSetup(
65
+ address registry,
66
+ VersionPart release,
67
+ bool verifyRelease
68
+ )
69
+ public
70
+ onlyAdminRole
71
+ reinitializer(uint64(release.toInt()))
72
+ {
73
+ _completeSetup(registry, release, verifyRelease);
74
+ }
75
+
76
+ /// @dev Returns true if the caller is authorized to call the target with the given selector and the manager lock is not set to locked.
77
+ /// Feturn values as in OpenZeppelin AccessManager.
78
+ /// For a locked manager the function reverts with ErrorAccessManagerTargetAdminLocked.
79
+ function canCall(
80
+ address caller,
81
+ address target,
82
+ bytes4 selector
83
+ )
84
+ public
85
+ view
86
+ virtual override
87
+ returns (
88
+ bool immediate,
89
+ uint32 delay
90
+ )
91
+ {
92
+ (immediate, delay) = super.canCall(caller, target, selector);
93
+
94
+ // locking of all contracts under control of this access manager
95
+ if (isLocked()) {
96
+ revert ErrorAccessManagerTargetAdminLocked(target);
97
+ }
98
+ }
99
+
100
+
101
+ /// @dev Locks/unlocks all services of this access manager.
102
+ /// Only the corresponding access admin can lock/unlock the services.
103
+ function setLocked(bool locked)
104
+ external
105
+ onlyAdminRole()
106
+ {
107
+ _isLocked = locked;
108
+ }
109
+
110
+
111
+ /// @dev Returns the release version of this access manager.
112
+ /// For the registry admin release 3 is returned.
113
+ /// For the release admin and the instance admin the actual release version is returned.
114
+ function getRelease() external view returns (VersionPart release) {
115
+ return _release;
116
+ }
117
+
118
+
119
+ /// @dev Returns true iff all contracts of this access manager are locked.
120
+ function isLocked()
121
+ public
122
+ view
123
+ returns (bool)
124
+ {
125
+ return _isLocked;
126
+ }
127
+
128
+
129
+ function _completeSetup(
130
+ address registry,
131
+ VersionPart release,
132
+ bool verifyRelease
133
+ )
134
+ internal
135
+ {
136
+ // checks
137
+ if(address(getRegistry()) != address(0)) {
138
+ revert ErrorAccessManagerRegistryAlreadySet(address(getRegistry()) );
139
+ }
140
+
141
+ if (verifyRelease && !release.isValidRelease()) {
142
+ revert ErrorAccessManagerInvalidRelease(release);
143
+ }
144
+
145
+ // effects
146
+ __RegistryLinked_init(registry);
147
+ _release = release;
15
148
  }
16
149
  }