@etherisc/gif-next 0.0.2-bb3faee-097 → 0.0.2-bb9ecaf-723

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