@etherisc/gif-next 0.0.2-ada9a19-458 → 0.0.2-adb0ad8-584

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 (524) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +155 -279
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -5
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +133 -501
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +316 -239
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +164 -210
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +181 -47
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +59 -50
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +43 -110
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +74 -202
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1211 -266
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +511 -154
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -316
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -111
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -260
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  79. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  81. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  83. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  89. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  90. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  91. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  92. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  93. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  95. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  97. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +109 -80
  99. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  101. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +119 -358
  103. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  105. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  107. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  108. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
  109. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  111. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +498 -167
  113. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
  115. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
  117. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +125 -319
  119. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
  121. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  122. package/artifacts/contracts/pool/Pool.sol/Pool.json +165 -632
  123. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
  125. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
  127. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  128. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  129. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  131. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  132. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  133. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  134. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  135. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
  137. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  139. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  141. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  143. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
  145. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  147. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  148. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +154 -137
  149. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  150. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  151. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
  153. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
  155. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  156. package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
  157. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  159. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  160. package/artifacts/contracts/product/Product.sol/Product.json +168 -434
  161. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  162. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  163. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  165. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  166. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  167. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +311 -55
  169. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -146
  171. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  173. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/Registry.sol/Registry.json +537 -112
  175. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +384 -394
  177. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  179. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  181. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  182. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  183. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  185. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +102 -12
  187. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  189. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  190. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  191. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +518 -261
  193. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -118
  195. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  197. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  199. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  201. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
  203. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -80
  205. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
  207. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  209. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  211. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  213. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  215. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  218. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  220. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +111 -318
  222. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  223. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
  224. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  226. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  228. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  230. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  232. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  236. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  238. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  240. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  241. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  242. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  243. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  244. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  245. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  246. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  248. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  249. package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
  250. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  252. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
  254. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  256. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  258. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  260. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -164
  262. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  263. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  264. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  265. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  266. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  268. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  270. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  272. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  274. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  276. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  278. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  280. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  282. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  286. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  288. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  290. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  292. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  294. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  296. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  298. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  300. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  302. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  304. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  306. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  308. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  310. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  312. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  314. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  315. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  316. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  318. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  320. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  321. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  322. package/contracts/{shared → authorization}/AccessAdmin.sol +190 -344
  323. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  324. package/contracts/authorization/Authorization.sol +289 -0
  325. package/contracts/authorization/IAccess.sol +49 -0
  326. package/contracts/{shared → authorization}/IAccessAdmin.sol +38 -63
  327. package/contracts/authorization/IAuthorization.sol +60 -0
  328. package/contracts/{registry → authorization}/IServiceAuthorization.sol +10 -5
  329. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  330. package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -22
  331. package/contracts/distribution/BasicDistribution.sol +139 -0
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  333. package/contracts/distribution/Distribution.sol +140 -116
  334. package/contracts/distribution/DistributionService.sol +138 -80
  335. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  336. package/contracts/distribution/IDistributionComponent.sol +26 -40
  337. package/contracts/distribution/IDistributionService.sol +23 -3
  338. package/contracts/examples/fire/DamageLevel.sol +59 -0
  339. package/contracts/examples/fire/FirePool.sol +75 -0
  340. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  341. package/contracts/examples/fire/FireProduct.sol +418 -0
  342. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  343. package/contracts/examples/fire/FireUSD.sol +26 -0
  344. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  345. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  346. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  347. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  348. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  349. package/contracts/instance/IInstance.sol +17 -38
  350. package/contracts/instance/IInstanceService.sol +9 -34
  351. package/contracts/instance/Instance.sol +84 -115
  352. package/contracts/instance/InstanceAdmin.sol +216 -270
  353. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  354. package/contracts/instance/InstanceReader.sol +137 -34
  355. package/contracts/instance/InstanceService.sol +98 -126
  356. package/contracts/instance/InstanceServiceManager.sol +8 -13
  357. package/contracts/instance/InstanceStore.sol +23 -5
  358. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  359. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  360. package/contracts/instance/module/IBundle.sol +1 -1
  361. package/contracts/instance/module/IComponents.sol +10 -11
  362. package/contracts/instance/module/IDistribution.sol +0 -1
  363. package/contracts/instance/module/IPolicy.sol +24 -24
  364. package/contracts/mock/Dip.sol +1 -1
  365. package/contracts/oracle/BasicOracle.sol +47 -0
  366. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  367. package/contracts/oracle/IOracle.sol +16 -0
  368. package/contracts/oracle/IOracleComponent.sol +2 -1
  369. package/contracts/oracle/IOracleService.sol +2 -1
  370. package/contracts/oracle/Oracle.sol +64 -53
  371. package/contracts/oracle/OracleService.sol +47 -34
  372. package/contracts/oracle/OracleServiceManager.sol +8 -11
  373. package/contracts/pool/BasicPool.sol +154 -0
  374. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  375. package/contracts/pool/BundleService.sol +267 -70
  376. package/contracts/pool/BundleServiceManager.sol +8 -11
  377. package/contracts/pool/IBundleService.sol +42 -5
  378. package/contracts/pool/IPoolComponent.sol +24 -68
  379. package/contracts/pool/IPoolService.sol +56 -39
  380. package/contracts/pool/Pool.sol +184 -148
  381. package/contracts/pool/PoolService.sol +256 -164
  382. package/contracts/pool/PoolServiceManager.sol +6 -9
  383. package/contracts/product/ApplicationService.sol +70 -65
  384. package/contracts/product/ApplicationServiceManager.sol +6 -6
  385. package/contracts/product/BasicProduct.sol +53 -0
  386. package/contracts/product/BasicProductAuthorization.sol +42 -0
  387. package/contracts/product/ClaimService.sol +316 -146
  388. package/contracts/product/ClaimServiceManager.sol +6 -6
  389. package/contracts/product/IApplicationService.sol +1 -0
  390. package/contracts/product/IClaimService.sol +31 -7
  391. package/contracts/product/IPolicyService.sol +34 -32
  392. package/contracts/product/IPricingService.sol +10 -10
  393. package/contracts/product/IProductComponent.sol +26 -9
  394. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  395. package/contracts/product/PolicyService.sol +419 -203
  396. package/contracts/product/PolicyServiceManager.sol +6 -9
  397. package/contracts/product/PricingService.sol +54 -54
  398. package/contracts/product/PricingServiceManager.sol +5 -8
  399. package/contracts/product/Product.sol +211 -133
  400. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  401. package/contracts/product/RiskServiceManager.sol +39 -0
  402. package/contracts/registry/ChainNft.sol +68 -38
  403. package/contracts/registry/IRegistry.sol +69 -22
  404. package/contracts/registry/IRegistryService.sol +3 -10
  405. package/contracts/registry/ITransferInterceptor.sol +1 -2
  406. package/contracts/registry/Registry.sol +354 -213
  407. package/contracts/registry/RegistryAdmin.sol +244 -129
  408. package/contracts/registry/RegistryService.sol +39 -64
  409. package/contracts/registry/RegistryServiceManager.sol +4 -4
  410. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  411. package/contracts/registry/ReleaseRegistry.sol +501 -0
  412. package/contracts/registry/ServiceAuthorizationV3.sol +23 -29
  413. package/contracts/registry/TokenRegistry.sol +2 -2
  414. package/contracts/shared/Component.sol +47 -63
  415. package/contracts/shared/ComponentService.sol +314 -186
  416. package/contracts/shared/ComponentServiceManager.sol +10 -7
  417. package/contracts/shared/ComponentVerifyingService.sol +24 -15
  418. package/contracts/shared/ContractLib.sol +38 -0
  419. package/contracts/shared/IComponent.sol +10 -6
  420. package/contracts/shared/IComponentService.sol +38 -20
  421. package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
  422. package/contracts/shared/IKeyValueStore.sol +1 -0
  423. package/contracts/shared/ILifecycle.sol +3 -2
  424. package/contracts/shared/INftOwnable.sol +2 -0
  425. package/contracts/shared/IPolicyHolder.sol +12 -22
  426. package/contracts/shared/IRegisterable.sol +11 -0
  427. package/contracts/shared/IService.sol +1 -1
  428. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  429. package/contracts/shared/InstanceLinkedComponent.sol +106 -37
  430. package/contracts/shared/KeyValueStore.sol +7 -3
  431. package/contracts/shared/Lifecycle.sol +30 -72
  432. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  433. package/contracts/shared/NftOwnable.sol +29 -9
  434. package/contracts/shared/PolicyHolder.sol +17 -57
  435. package/contracts/shared/Registerable.sol +19 -9
  436. package/contracts/shared/RegistryLinked.sol +3 -2
  437. package/contracts/shared/Service.sol +23 -22
  438. package/contracts/shared/TokenHandler.sol +100 -19
  439. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  440. package/contracts/staking/IStaking.sol +3 -3
  441. package/contracts/staking/IStakingService.sol +12 -8
  442. package/contracts/staking/StakeManagerLib.sol +18 -25
  443. package/contracts/staking/Staking.sol +29 -45
  444. package/contracts/staking/StakingLifecycle.sol +23 -0
  445. package/contracts/staking/StakingManager.sol +10 -12
  446. package/contracts/staking/StakingReader.sol +23 -20
  447. package/contracts/staking/StakingService.sol +25 -29
  448. package/contracts/staking/StakingServiceManager.sol +4 -4
  449. package/contracts/staking/StakingStore.sol +15 -23
  450. package/contracts/staking/TargetManagerLib.sol +7 -3
  451. package/contracts/type/Amount.sol +27 -5
  452. package/contracts/type/Blocknumber.sol +7 -1
  453. package/contracts/type/ClaimId.sol +6 -1
  454. package/contracts/type/NftId.sol +1 -0
  455. package/contracts/type/ObjectType.sol +53 -18
  456. package/contracts/type/PayoutId.sol +10 -10
  457. package/contracts/type/Referral.sol +1 -0
  458. package/contracts/type/RiskId.sol +15 -1
  459. package/contracts/type/RoleId.sol +55 -94
  460. package/contracts/type/Seconds.sol +21 -1
  461. package/contracts/type/StateId.sol +15 -1
  462. package/contracts/type/Timestamp.sol +11 -1
  463. package/contracts/type/UFixed.sol +38 -9
  464. package/contracts/type/Version.sol +3 -1
  465. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  466. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  467. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  468. package/package.json +7 -3
  469. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  470. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  471. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  472. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  473. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  474. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  475. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  476. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  477. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  478. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  479. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  480. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  481. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  482. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  483. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  484. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
  485. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  486. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
  487. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  488. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  489. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  490. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  491. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  492. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  493. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  494. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  495. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  496. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  497. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  498. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  499. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  500. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  501. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  502. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  503. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  504. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  505. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  506. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  507. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  508. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  509. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  510. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  511. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  512. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  513. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  514. package/contracts/product/ProductServiceManager.sol +0 -42
  515. package/contracts/registry/ReleaseManager.sol +0 -521
  516. package/contracts/shared/AccessManagerCustom.sol +0 -741
  517. package/contracts/shared/AccessManagerExtended.sol +0 -481
  518. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  519. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  520. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  521. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  522. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  523. package/contracts/shared/InitializableCustom.sol +0 -177
  524. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+
6
+ contract AccessManagerCloneable is
7
+ AccessManagerUpgradeable
8
+ {
9
+
10
+ function initialize(address initialAdmin)
11
+ external
12
+ initializer()
13
+ {
14
+ __AccessManager_init(initialAdmin);
15
+ }
16
+ }
@@ -0,0 +1,289 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "./IAccess.sol";
5
+ import {IAuthorization} from "./IAuthorization.sol";
6
+ import {ObjectType, ObjectTypeLib} from "../type/ObjectType.sol";
7
+ import {RoleId, RoleIdLib, ADMIN_ROLE} from "../type/RoleId.sol";
8
+ import {SelectorLib} from "../type/Selector.sol";
9
+ import {Str, StrLib} from "../type/String.sol";
10
+ import {TimestampLib} from "../type/Timestamp.sol";
11
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
+
13
+ contract Authorization
14
+ is IAuthorization
15
+ {
16
+ uint256 public constant GIF_RELEASE = 3;
17
+
18
+ string public constant ROLE_NAME_SUFFIX = "Role";
19
+ string public constant SERVICE_ROLE_NAME_SUFFIX = "ServiceRole";
20
+
21
+ ObjectType[] internal _serviceDomains;
22
+ mapping(ObjectType domain => Str target) internal _serviceTarget;
23
+
24
+ string internal _mainTargetName = "Component";
25
+ Str[] internal _targets;
26
+
27
+ mapping(Str target => RoleId roleid) internal _targetRole;
28
+ mapping(Str target => bool exists) internal _targetExists;
29
+
30
+ RoleId[] internal _roles;
31
+ mapping(RoleId role => RoleInfo info) internal _roleInfo;
32
+
33
+ mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
34
+ mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
35
+
36
+
37
+ constructor(string memory mainTargetName) {
38
+ _mainTargetName = mainTargetName;
39
+
40
+ _setupServiceTargets();
41
+ _setupRoles();
42
+ _setupTargets();
43
+ _setupTargetAuthorizations();
44
+ }
45
+
46
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
47
+ return _serviceDomains;
48
+ }
49
+
50
+ function getServiceRole(ObjectType serviceDomain) public virtual pure returns (RoleId serviceRoleId) {
51
+ return RoleIdLib.roleForTypeAndVersion(
52
+ serviceDomain,
53
+ getRelease());
54
+ }
55
+
56
+ function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget) {
57
+ return _serviceTarget[serviceDomain];
58
+ }
59
+
60
+ function getRoles() external view returns(RoleId[] memory roles) {
61
+ return _roles;
62
+ }
63
+
64
+ function roleExists(RoleId roleId) public view returns(bool exists) {
65
+ return _roleInfo[roleId].roleType != RoleType.Undefined;
66
+ }
67
+
68
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory info) {
69
+ return _roleInfo[roleId];
70
+ }
71
+
72
+ function getTargetName() public virtual view returns (string memory name) {
73
+ return _mainTargetName;
74
+ }
75
+
76
+ function getMainTarget() public view returns(Str) {
77
+ return getTarget(_mainTargetName);
78
+ }
79
+
80
+ function getTarget(string memory targetName) public view returns(Str target) {
81
+ return StrLib.toStr(targetName);
82
+ }
83
+
84
+ function getTargets() external view returns(Str[] memory targets) {
85
+ return _targets;
86
+ }
87
+
88
+ function targetExists(Str target) external view returns(bool exists) {
89
+ return _targetExists[target];
90
+ }
91
+
92
+ function getTargetRole(Str target) external view returns(RoleId roleId) {
93
+ return _targetRole[target];
94
+ }
95
+
96
+ function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds) {
97
+ return _authorizedRoles[target];
98
+ }
99
+
100
+ function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions) {
101
+ return _authorizedFunctions[target][roleId];
102
+ }
103
+
104
+ function getRelease() public virtual pure returns(VersionPart release) {
105
+ return VersionPartLib.toVersionPart(GIF_RELEASE);
106
+ }
107
+
108
+ /// @dev Sets up the relevant service targets for the component.
109
+ /// Overwrite this function for a specific component.
110
+ function _setupServiceTargets() internal virtual { }
111
+
112
+ /// @dev Sets up the relevant (non-service) targets for the component.
113
+ /// Overwrite this function for a specific component.
114
+ function _setupTargets() internal virtual { }
115
+
116
+ /// @dev Sets up the relevant roles for the component.
117
+ /// Overwrite this function for a specific component.
118
+ function _setupRoles() internal virtual {}
119
+
120
+ /// @dev Sets up the relevant target authorizations for the component.
121
+ /// Overwrite this function for a specific realease.
122
+ function _setupTargetAuthorizations() internal virtual {}
123
+
124
+
125
+ /// @dev Add the service target role for the specified service domain
126
+ function _addServiceTargetWithRole(ObjectType serviceDomain) internal {
127
+ // add service domain
128
+ _serviceDomains.push(serviceDomain);
129
+
130
+ // get versioned target name
131
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
132
+ ObjectTypeLib.toName(serviceDomain),
133
+ "Service",
134
+ getRelease().toInt());
135
+
136
+ _serviceTarget[serviceDomain] = StrLib.toStr(serviceTargetName);
137
+
138
+ RoleId serviceRoleId = getServiceRole(serviceDomain);
139
+ string memory serviceRoleName = ObjectTypeLib.toVersionedName(
140
+ ObjectTypeLib.toName(serviceDomain),
141
+ "ServiceRole",
142
+ getRelease().toInt());
143
+
144
+ _addTargetWithRole(
145
+ serviceTargetName,
146
+ serviceRoleId,
147
+ serviceRoleName);
148
+ }
149
+
150
+
151
+ /// @dev Use this method to to add an authorized role.
152
+ function _addRole(RoleId roleId, RoleInfo memory info) internal {
153
+ _roles.push(roleId);
154
+ _roleInfo[roleId] = info;
155
+ }
156
+
157
+
158
+ /// @dev Add a contract role for the provided role id and name.
159
+ function _addContractRole(RoleId roleId, string memory name) internal {
160
+ _addRole(
161
+ roleId,
162
+ _toRoleInfo(
163
+ ADMIN_ROLE(),
164
+ RoleType.Contract,
165
+ 1,
166
+ name));
167
+ }
168
+
169
+
170
+ /// @dev Add the versioned service role for the specified service domain
171
+ function _addServiceRole(ObjectType serviceDomain) internal {
172
+ _addContractRole(
173
+ getServiceRole(serviceDomain),
174
+ ObjectTypeLib.toVersionedName(
175
+ ObjectTypeLib.toName(serviceDomain),
176
+ SERVICE_ROLE_NAME_SUFFIX,
177
+ getRelease().toInt()));
178
+ }
179
+
180
+
181
+ function _addComponentTargetWithRole(ObjectType componentType) internal {
182
+ _addComponentTargetWithRole(componentType, 0);
183
+ }
184
+
185
+
186
+ function _addComponentTargetWithRole(ObjectType componentType, uint64 index) internal {
187
+ _addTargetWithRole(
188
+ getTargetName(),
189
+ RoleIdLib.toComponentRoleId(componentType, index),
190
+ _toTargetRoleName(
191
+ getTargetName()));
192
+ }
193
+
194
+
195
+ /// @dev Add a contract role for the provided role id and name.
196
+ function _addCustomRole(RoleId roleId, RoleId adminRoleId, uint32 maxMemberCount, string memory name) internal {
197
+ _addRole(
198
+ roleId,
199
+ _toRoleInfo(
200
+ adminRoleId,
201
+ RoleType.Custom,
202
+ maxMemberCount,
203
+ name));
204
+ }
205
+
206
+ /// @dev Use this method to to add an authorized target together with its target role.
207
+ function _addTargetWithRole(
208
+ string memory targetName,
209
+ RoleId roleId,
210
+ string memory roleName
211
+ )
212
+ internal
213
+ {
214
+ // add target
215
+ Str target = StrLib.toStr(targetName);
216
+ _targets.push(target);
217
+
218
+ _targetExists[target] = true;
219
+
220
+ // link role to target if defined
221
+ if (roleId != RoleIdLib.zero()) {
222
+ // add role if new
223
+ if (!roleExists(roleId)) {
224
+ _addContractRole(roleId, roleName);
225
+ }
226
+
227
+ // link target to role
228
+ _targetRole[target] = roleId;
229
+ }
230
+ }
231
+
232
+
233
+ /// @dev Use this method to to add an authorized target.
234
+ function _addTarget(string memory name) internal {
235
+ _addTargetWithRole(name, RoleIdLib.zero(), "");
236
+ }
237
+
238
+
239
+ /// @dev Use this method to authorize the specified role to access the target.
240
+ function _authorizeForTarget(string memory target, RoleId authorizedRoleId)
241
+ internal
242
+ returns (IAccess.FunctionInfo[] storage authorizatedFunctions)
243
+ {
244
+ Str targetStr = StrLib.toStr(target);
245
+ _authorizedRoles[targetStr].push(authorizedRoleId);
246
+ return _authorizedFunctions[targetStr][authorizedRoleId];
247
+ }
248
+
249
+
250
+ /// @dev Use this method to authorize a specific function authorization
251
+ function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
252
+ functions.push(
253
+ IAccess.FunctionInfo({
254
+ selector: SelectorLib.toSelector(selector),
255
+ name: StrLib.toStr(name),
256
+ createdAt: TimestampLib.blockTimestamp()}));
257
+ }
258
+
259
+
260
+ /// @dev role id for targets registry, staking and instance
261
+ function _toTargetRoleId(ObjectType targetDomain)
262
+ internal
263
+ pure
264
+ returns (RoleId targetRoleId)
265
+ {
266
+ return RoleIdLib.roleForType(targetDomain);
267
+ }
268
+
269
+
270
+ function _toTargetRoleName(string memory targetName) internal pure returns (string memory) {
271
+ return string(
272
+ abi.encodePacked(
273
+ targetName,
274
+ ROLE_NAME_SUFFIX));
275
+ }
276
+
277
+
278
+ /// @dev creates a role info object from the provided parameters
279
+ function _toRoleInfo(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) internal view returns (RoleInfo memory info) {
280
+ return RoleInfo({
281
+ name: StrLib.toStr(name),
282
+ adminRoleId: adminRoleId,
283
+ roleType: roleType,
284
+ maxMemberCount: maxMemberCount,
285
+ createdAt: TimestampLib.blockTimestamp(),
286
+ pausedAt: TimestampLib.max()});
287
+ }
288
+ }
289
+
@@ -0,0 +1,49 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {RoleId} from "../type/RoleId.sol";
5
+ import {Selector} from "../type/Selector.sol";
6
+ import {Str} from "../type/String.sol";
7
+ import {Timestamp} from "../type/Timestamp.sol";
8
+
9
+ interface IAccess {
10
+
11
+ enum RoleType {
12
+ Undefined, // no role must have this type
13
+ Contract, // roles assigned to contracts, cannot be revoked
14
+ Gif, // framework roles that may be freely assigned and revoked
15
+ Custom // use case specific rules for components
16
+ }
17
+
18
+ struct RoleInfo {
19
+ RoleId adminRoleId;
20
+ RoleType roleType;
21
+ uint32 maxMemberCount;
22
+ Str name;
23
+ Timestamp createdAt;
24
+ Timestamp pausedAt;
25
+ }
26
+
27
+ struct TargetInfo {
28
+ Str name;
29
+ bool isCustom;
30
+ Timestamp createdAt;
31
+ }
32
+
33
+ struct FunctionInfo {
34
+ Str name; // function name
35
+ Selector selector; // function selector
36
+ Timestamp createdAt;
37
+ }
38
+
39
+ struct RoleNameInfo {
40
+ RoleId roleId;
41
+ bool exists;
42
+ }
43
+
44
+ struct TargeNameInfo {
45
+ address target;
46
+ bool exists;
47
+ }
48
+
49
+ }
@@ -3,18 +3,19 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
+ import {IAccess} from "./IAccess.sol";
6
7
  import {RoleId} from "../type/RoleId.sol";
7
8
  import {Selector} from "../type/Selector.sol";
8
9
  import {Str} from "../type/String.sol";
9
10
  import {Timestamp} from "../type/Timestamp.sol";
10
11
 
11
12
  interface IAccessAdmin is
12
- IAccessManaged
13
+ IAccessManaged,
14
+ IAccess
13
15
  {
14
16
 
15
17
  // roles
16
- event LogRoleCreated(RoleId roleId, RoleId roleAdminId, string name);
17
- event LogRoleDisabled(RoleId roleId, bool disabled, Timestamp disabledAtOld);
18
+ event LogRoleCreated(RoleId roleId, RoleType roleType, RoleId roleAdminId, string name);
18
19
  event LogTargetCreated(address target, string name);
19
20
  event LogFunctionCreated(address target, Selector selector, string name);
20
21
 
@@ -40,9 +41,10 @@ interface IAccessAdmin is
40
41
  // grant/revoke/renounce role
41
42
  error ErrorRoleUnknown(RoleId roleId);
42
43
  error ErrorRoleIsLocked(RoleId roleId);
43
- error ErrorRoleIsDisabled(RoleId roleId);
44
+ error ErrorRoleIsPaused(RoleId roleId);
44
45
  error ErrorRoleMembersLimitReached(RoleId roleId, uint256 memberCountLimit);
45
- error ErrorRoleRemovalDisabled(RoleId roleId);
46
+ error ErrorRoleMemberNotContract(RoleId roleId, address notContract);
47
+ error ErrorRoleMemberRemovalDisabled(RoleId roleId, address expectedMember);
46
48
 
47
49
  // create target
48
50
  error ErrorTargetAlreadyCreated(address target, string name);
@@ -51,97 +53,70 @@ interface IAccessAdmin is
51
53
  error ErrorTargetNotAccessManaged(address target);
52
54
  error ErrorTargetAuthorityMismatch(address expectedAuthority, address actualAuthority);
53
55
 
56
+ // lock target
57
+ error ErrorTagetNotLockable();
58
+ error ErrorTargetAlreadyLocked(address target, bool isLocked);
59
+
54
60
  // authorize target functions
55
61
  error ErrorAuthorizeForAdminRoleInvalid(address target);
56
62
 
57
63
  // check target
58
64
  error ErrorTargetUnknown(address target);
59
65
 
60
- struct RoleInfo {
61
- RoleId adminRoleId;
62
- Str name;
63
- uint256 maxMemberCount;
64
- bool memberRemovalDisabled;
65
- Timestamp disabledAt;
66
- bool exists;
67
- }
68
-
69
- struct RoleNameInfo {
70
- RoleId roleId;
71
- bool exists;
72
- }
73
-
74
- struct TargetInfo {
75
- Str name;
76
- Timestamp createdAt;
77
- }
78
-
79
- struct Function {
80
- Selector selector; // function selector
81
- Str name; // function name
82
- }
83
-
84
- /// @dev Create a new named role using the specified parameters.
85
- /// The adminRoleId refers to the required role to grant/revoke the newly created role.
86
- /// permissioned: the caller must have the manager role (getManagerRole).
87
- function createRole(
88
- RoleId roleId,
89
- RoleId adminRoleId,
90
- string memory name,
91
- uint256 maxMemberCount,
92
- bool memberRemovalDisabled
93
- )
94
- external;
95
-
96
66
  /// @dev Set the disabled status of the speicified role.
97
67
  /// Role disabling only prevents the role from being granted to new accounts.
98
68
  /// Existing role members may still execute functions that are authorized for that role.
99
- /// permissioned: the caller must have the manager role (getManagerRole).
100
- function setRoleDisabled(RoleId roleId, bool disabled) external;
69
+ /// Permissioned: the caller must have the manager role (getManagerRole).
70
+ // TODO move to instance admin
71
+ // function setRoleDisabled(RoleId roleId, bool disabled) external;
101
72
 
102
73
  /// @dev Grant the specified account the provided role.
103
- /// permissioned: the caller must have the roles admin role.
104
- function grantRole(address account, RoleId roleId) external;
74
+ /// Permissioned: the caller must have the roles admin role.
75
+ // TODO move to instance admin
76
+ // function grantRole(address account, RoleId roleId) external;
105
77
 
106
78
  /// @dev Revoke the provided role from the specified account.
107
- /// permissioned: the caller must have the roles admin role.
108
- function revokeRole(address account, RoleId roleId) external;
79
+ /// Permissioned: the caller must have the roles admin role.
80
+ // TODO move to instance admin
81
+ // function revokeRole(address account, RoleId roleId) external;
109
82
 
110
83
  /// @dev Removes the provided role from the caller
111
- function renounceRole(RoleId roleId) external;
112
-
113
- /// @dev Create a new named target.
114
- /// permissioned: the caller must have the manager role (getManagerRole).
115
- function createTarget(address target, string memory name) external;
84
+ // TODO move to instance admin
85
+ // function renounceRole(RoleId roleId) external;
116
86
 
117
87
  /// @dev Set the locked status of the speicified contract.
118
- /// permissioned: the caller must have the manager role (getManagerRole).
119
- function setTargetLocked(address target, bool locked) external;
88
+ /// IMPORTANT: using this function the AccessManager might itself be put into locked state from which it cannot be unlocked again.
89
+ /// Overwrite this function if a different use case specific behaviour is required.
90
+ /// Alternatively, add specific function to just unlock this contract without a restricted() modifier.
91
+ /// Permissioned: the caller must have the manager role (getManagerRole).
92
+ // TODO move to instance admin
93
+ // function setTargetLocked(address target, bool locked) external;
120
94
 
121
95
  /// @dev Specifies which functions of the target can be accessed by the provided role.
122
96
  /// Previously existing authorizations will be overwritten.
123
97
  /// Authorizing the admin role is not allowed, use function unauthorizedFunctions for this.
124
- /// permissioned: the caller must have the manager role (getManagerRole).
125
- function authorizeFunctions(address target, RoleId roleId, Function[] memory functions) external;
98
+ /// Permissioned: the caller must have the manager role (getManagerRole).
99
+ // TODO move to instance admin
100
+ // function authorizeFunctions(address target, RoleId roleId, FunctionInfo[] memory functions) external;
126
101
 
127
102
  /// @dev Specifies for which functionss to remove any previous authorization
128
- /// permissioned: the caller must have the manager role (getManagerRole).
129
- function unauthorizeFunctions(address target, Function[] memory functions) external;
103
+ /// Permissioned: the caller must have the manager role (getManagerRole).
104
+ // TODO move to instance admin
105
+ // function unauthorizeFunctions(address target, FunctionInfo[] memory functions) external;
130
106
 
131
107
  //--- view functions ----------------------------------------------------//
132
108
 
133
109
  function roles() external view returns (uint256 numberOfRoles);
134
110
  function getRoleId(uint256 idx) external view returns (RoleId roleId);
135
111
  function getAdminRole() external view returns (RoleId roleId);
136
- function getManagerRole() external view returns (RoleId roleId);
137
112
  function getPublicRole() external view returns (RoleId roleId);
138
113
 
139
114
  function roleExists(RoleId roleId) external view returns (bool exists);
140
- function isRoleDisabled(RoleId roleId) external view returns (bool roleIsActive);
141
115
  function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory roleInfo);
142
116
  function getRoleForName(Str name) external view returns (RoleNameInfo memory);
143
117
 
144
118
  function hasRole(address account, RoleId roleId) external view returns (bool);
119
+ function hasAdminRole(address account, RoleId roleId) external view returns (bool);
145
120
  function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers);
146
121
  function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account);
147
122
 
@@ -153,10 +128,10 @@ interface IAccessAdmin is
153
128
  function getTargetForName(Str name) external view returns (address target);
154
129
 
155
130
  function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions);
156
- function getAuthorizedFunction(address target, uint256 idx) external view returns (Function memory func, RoleId roleId);
131
+ function getAuthorizedFunction(address target, uint256 idx) external view returns (FunctionInfo memory func, RoleId roleId);
157
132
  function canCall(address caller, address target, Selector selector) external view returns (bool can);
158
133
 
159
- function toFunction(bytes4 selector, string memory name) external pure returns (Function memory);
160
- function isAccessManaged(address target) external view returns (bool);
134
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) external view returns (RoleInfo memory);
135
+ function toFunction(bytes4 selector, string memory name) external view returns (FunctionInfo memory);
161
136
  function deployer() external view returns (address);
162
137
  }
@@ -0,0 +1,60 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {ObjectType} from "../type/ObjectType.sol";
6
+ import {RoleId} from "../type/RoleId.sol";
7
+ import {Str} from "../type/String.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+
10
+ interface IAuthorization is
11
+ IAccess
12
+ {
13
+
14
+ /// @dev Returns the list of service targets.
15
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains);
16
+
17
+ /// @dev Returns the service role for the specified service domain.
18
+ function getServiceRole(ObjectType serviceDomain) external pure returns (RoleId serviceRoleId);
19
+
20
+ /// @dev Returns the service target for the specified domain.
21
+ function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget);
22
+
23
+ /// @dev Returns the list of involved roles.
24
+ function getRoles() external view returns(RoleId[] memory roles);
25
+
26
+ /// @dev Returns the name for the provided role id.
27
+ function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory roleInfo);
28
+
29
+ /// @dev Returns true iff the specified role id exists.
30
+ function roleExists(RoleId roleId) external view returns(bool exists);
31
+
32
+ /// @dev Returns the main target id name as string.
33
+ /// This name is used to derive the target id and a corresponding target role name
34
+ /// Overwrite this function to change the basic pool target name.
35
+ function getTargetName() external view returns (string memory name);
36
+
37
+ /// @dev Returns the main target.
38
+ function getMainTarget() external view returns(Str target);
39
+
40
+ /// @dev Returns the complete list of targets.
41
+ function getTargets() external view returns(Str[] memory targets);
42
+
43
+ /// @dev Returns true iff the specified target exists.
44
+ function targetExists(Str target) external view returns(bool exists);
45
+
46
+ /// @dev Returns the role id associated with the target.
47
+ /// If no role is associated with the target the zero role id is returned.
48
+ function getTargetRole(Str target) external view returns(RoleId roleId);
49
+
50
+ /// @dev For the given target the list of authorized role ids is returned
51
+ function getAuthorizedRoles(Str target) external view returns(RoleId[] memory roleIds);
52
+
53
+ /// @dev For the given target and role id the list of authorized functions is returned
54
+ function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(FunctionInfo[] memory authorizatedFunctions);
55
+
56
+ /// @dev Returns the release (VersionPart) for which the authorizations are defined by this contract.
57
+ /// Matches with the release returned by the linked service authorization.
58
+ function getRelease() external view returns(VersionPart release);
59
+ }
60
+
@@ -1,11 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
5
- import {ObjectType} from "../../contracts/type/ObjectType.sol";
6
- import {VersionPart} from "../../contracts/type/Version.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
7
5
 
8
- interface IServiceAuthorization {
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+
10
+ interface IServiceAuthorization is IERC165 {
9
11
 
10
12
  /// @dev Returns the commit hash representing the deployed release
11
13
  function getCommitHash()
@@ -19,6 +21,9 @@ interface IServiceAuthorization {
19
21
  view
20
22
  returns(VersionPart release);
21
23
 
24
+ /// @dev Returns the service domain for the provided index.
25
+ function getServiceDomain(uint idx) external view returns(ObjectType serviceDomain);
26
+
22
27
  /// @dev Returns the full list of service domains for this release.
23
28
  /// Services need to be registered for the release in revers order of this list.
24
29
  function getServiceDomains() external view returns(ObjectType[] memory serviceDomains);
@@ -30,6 +35,6 @@ interface IServiceAuthorization {
30
35
  function getAuthorizedDomains(ObjectType serviceDomain) external view returns(ObjectType[] memory authorizatedDomains);
31
36
 
32
37
  /// @dev For the given service domain and authorized domain the function returns the list of authorized functions
33
- function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccessAdmin.Function[] memory authorizatedFunctions);
38
+ function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccess.FunctionInfo[] memory authorizatedFunctions);
34
39
  }
35
40
 
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
+
6
+ abstract contract ReleaseAccessManager is
7
+ AccessManager
8
+ {
9
+ bool private _releaseIsLocked;
10
+
11
+ function setReleaseLocked(bool locked)
12
+ external
13
+ onlyAuthorized()
14
+ {
15
+ _releaseIsLocked = locked;
16
+ }
17
+
18
+ function isReleaseLocked()
19
+ external
20
+ view
21
+ returns (bool isLocked)
22
+ {
23
+ return _releaseIsLocked;
24
+ }
25
+
26
+ function isTargetClosed(address target)
27
+ public
28
+ virtual override
29
+ view
30
+ returns (bool)
31
+ {
32
+ if (_releaseIsLocked) {
33
+ return true;
34
+ }
35
+
36
+ return super.isTargetClosed(target);
37
+ }
38
+ }