@etherisc/gif-next 0.0.2-82c6d88-499 → 0.0.2-8311e70-020

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 (571) hide show
  1. package/README.md +67 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1341 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +181 -278
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -10
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -245
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +143 -109
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +201 -261
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +230 -49
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +134 -78
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +116 -126
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +162 -215
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1354 -262
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +966 -328
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +135 -330
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -111
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +651 -531
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  99. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -126
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -398
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +435 -202
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +448 -217
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -212
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +318 -8
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
  165. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  166. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +455 -318
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +258 -536
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +340 -55
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +566 -112
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +396 -436
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1325 -0
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +101 -16
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
  209. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +578 -492
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -113
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +550 -209
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
  233. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  235. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  239. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  241. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  244. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  246. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +112 -351
  248. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
  250. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  252. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  254. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  256. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  258. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  260. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  262. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  268. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  270. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
  272. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +55 -23
  274. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  276. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
  278. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  280. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
  282. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  284. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +100 -171
  286. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -84
  288. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -164
  290. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  292. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  293. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  296. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  330. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  332. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  334. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  338. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -2
  342. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  343. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  346. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  347. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  348. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  349. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  350. package/contracts/accounting/AccountingService.sol +262 -0
  351. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  352. package/contracts/accounting/IAccountingService.sol +45 -0
  353. package/contracts/{shared → authorization}/AccessAdmin.sol +271 -371
  354. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  355. package/contracts/authorization/Authorization.sol +289 -0
  356. package/contracts/authorization/IAccess.sol +49 -0
  357. package/contracts/{shared → authorization}/IAccessAdmin.sol +31 -59
  358. package/contracts/authorization/IAuthorization.sol +60 -0
  359. package/contracts/{registry → authorization}/IServiceAuthorization.sol +11 -6
  360. package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -25
  361. package/contracts/distribution/BasicDistribution.sol +139 -0
  362. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  363. package/contracts/distribution/Distribution.sol +147 -121
  364. package/contracts/distribution/DistributionService.sol +160 -100
  365. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  366. package/contracts/distribution/IDistributionComponent.sol +26 -40
  367. package/contracts/distribution/IDistributionService.sol +28 -9
  368. package/contracts/examples/fire/DamageLevel.sol +59 -0
  369. package/contracts/examples/fire/FirePool.sol +90 -0
  370. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  371. package/contracts/examples/fire/FireProduct.sol +438 -0
  372. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  373. package/contracts/examples/fire/FireUSD.sol +26 -0
  374. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  375. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  376. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  377. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  378. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  379. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  380. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  381. package/contracts/instance/BundleSet.sol +130 -0
  382. package/contracts/instance/IInstance.sol +23 -44
  383. package/contracts/instance/IInstanceService.sol +16 -41
  384. package/contracts/instance/Instance.sol +92 -120
  385. package/contracts/instance/InstanceAdmin.sol +250 -255
  386. package/contracts/instance/InstanceAuthorizationV3.sol +225 -0
  387. package/contracts/instance/InstanceReader.sol +238 -34
  388. package/contracts/instance/InstanceService.sol +145 -180
  389. package/contracts/instance/InstanceServiceManager.sol +8 -13
  390. package/contracts/instance/InstanceStore.sol +35 -6
  391. package/contracts/instance/RiskSet.sol +118 -0
  392. package/contracts/instance/base/ObjectCounter.sol +1 -2
  393. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  394. package/contracts/instance/base/ObjectSet.sol +77 -0
  395. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  396. package/contracts/instance/module/IBundle.sol +1 -1
  397. package/contracts/instance/module/IComponents.sol +14 -15
  398. package/contracts/instance/module/IDistribution.sol +0 -1
  399. package/contracts/instance/module/IPolicy.sol +26 -25
  400. package/contracts/instance/module/IRisk.sol +3 -0
  401. package/contracts/mock/Dip.sol +1 -1
  402. package/contracts/oracle/BasicOracle.sol +47 -0
  403. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  404. package/contracts/oracle/IOracle.sol +16 -0
  405. package/contracts/oracle/IOracleComponent.sol +2 -1
  406. package/contracts/oracle/IOracleService.sol +2 -1
  407. package/contracts/oracle/Oracle.sol +64 -53
  408. package/contracts/oracle/OracleService.sol +113 -81
  409. package/contracts/oracle/OracleServiceManager.sol +8 -11
  410. package/contracts/pool/BasicPool.sol +175 -0
  411. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  412. package/contracts/pool/BundleService.sol +231 -102
  413. package/contracts/pool/BundleServiceManager.sol +8 -11
  414. package/contracts/pool/IBundleService.sol +33 -18
  415. package/contracts/pool/IPoolComponent.sol +20 -70
  416. package/contracts/pool/IPoolService.sol +53 -50
  417. package/contracts/pool/Pool.sol +208 -162
  418. package/contracts/pool/PoolService.sol +343 -180
  419. package/contracts/pool/PoolServiceManager.sol +6 -9
  420. package/contracts/product/ApplicationService.sol +83 -78
  421. package/contracts/product/ApplicationServiceManager.sol +6 -6
  422. package/contracts/product/BasicProduct.sol +51 -0
  423. package/contracts/product/BasicProductAuthorization.sol +41 -0
  424. package/contracts/product/ClaimService.sol +425 -159
  425. package/contracts/product/ClaimServiceManager.sol +6 -6
  426. package/contracts/product/IApplicationService.sol +6 -2
  427. package/contracts/product/IClaimService.sol +44 -7
  428. package/contracts/product/IPolicyService.sol +46 -34
  429. package/contracts/product/IPricingService.sol +10 -10
  430. package/contracts/product/IProductComponent.sol +29 -9
  431. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  432. package/contracts/product/PolicyService.sol +520 -259
  433. package/contracts/product/PolicyServiceManager.sol +6 -9
  434. package/contracts/product/PricingService.sol +66 -62
  435. package/contracts/product/PricingServiceManager.sol +6 -9
  436. package/contracts/product/Product.sol +220 -134
  437. package/contracts/product/RiskService.sol +151 -0
  438. package/contracts/product/RiskServiceManager.sol +39 -0
  439. package/contracts/registry/ChainNft.sol +72 -40
  440. package/contracts/registry/IRegistry.sol +72 -32
  441. package/contracts/registry/IRegistryService.sol +3 -10
  442. package/contracts/registry/IRelease.sol +26 -0
  443. package/contracts/registry/ITransferInterceptor.sol +1 -2
  444. package/contracts/registry/Registry.sol +364 -220
  445. package/contracts/registry/RegistryAdmin.sol +228 -217
  446. package/contracts/registry/RegistryService.sol +41 -66
  447. package/contracts/registry/RegistryServiceManager.sol +5 -5
  448. package/contracts/registry/ReleaseAdmin.sol +245 -0
  449. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  450. package/contracts/registry/ReleaseRegistry.sol +511 -0
  451. package/contracts/registry/ServiceAuthorizationV3.sol +102 -60
  452. package/contracts/registry/TokenRegistry.sol +8 -10
  453. package/contracts/shared/Component.sol +71 -126
  454. package/contracts/shared/ComponentService.sol +463 -380
  455. package/contracts/shared/ComponentServiceManager.sol +10 -7
  456. package/contracts/shared/ComponentVerifyingService.sol +29 -18
  457. package/contracts/shared/ContractLib.sol +252 -0
  458. package/contracts/shared/IComponent.sol +8 -17
  459. package/contracts/shared/IComponentService.sol +53 -39
  460. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  461. package/contracts/shared/IKeyValueStore.sol +1 -0
  462. package/contracts/shared/ILifecycle.sol +3 -2
  463. package/contracts/shared/INftOwnable.sol +2 -0
  464. package/contracts/shared/IPolicyHolder.sol +12 -22
  465. package/contracts/shared/IRegisterable.sol +23 -1
  466. package/contracts/shared/IService.sol +4 -6
  467. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  468. package/contracts/shared/InstanceLinkedComponent.sol +95 -42
  469. package/contracts/shared/KeyValueStore.sol +7 -3
  470. package/contracts/shared/Lifecycle.sol +30 -72
  471. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  472. package/contracts/shared/NftOwnable.sol +31 -11
  473. package/contracts/shared/PolicyHolder.sol +17 -57
  474. package/contracts/shared/Registerable.sol +55 -21
  475. package/contracts/shared/RegistryLinked.sol +9 -14
  476. package/contracts/shared/Service.sol +18 -36
  477. package/contracts/shared/TokenHandler.sol +357 -26
  478. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  479. package/contracts/staking/IStaking.sol +12 -7
  480. package/contracts/staking/IStakingService.sol +12 -8
  481. package/contracts/staking/StakeManagerLib.sol +18 -25
  482. package/contracts/staking/Staking.sol +86 -73
  483. package/contracts/staking/StakingLifecycle.sol +23 -0
  484. package/contracts/staking/StakingManager.sol +10 -12
  485. package/contracts/staking/StakingReader.sol +23 -20
  486. package/contracts/staking/StakingService.sol +64 -36
  487. package/contracts/staking/StakingServiceManager.sol +4 -4
  488. package/contracts/staking/StakingStore.sol +15 -23
  489. package/contracts/staking/TargetManagerLib.sol +7 -3
  490. package/contracts/type/Amount.sol +27 -5
  491. package/contracts/type/Blocknumber.sol +7 -1
  492. package/contracts/type/ClaimId.sol +6 -1
  493. package/contracts/type/Key32.sol +2 -2
  494. package/contracts/type/Key32Set.sol +62 -0
  495. package/contracts/type/NftId.sol +7 -0
  496. package/contracts/type/ObjectType.sol +73 -24
  497. package/contracts/type/PayoutId.sol +10 -10
  498. package/contracts/type/Referral.sol +1 -0
  499. package/contracts/type/RiskId.sol +35 -4
  500. package/contracts/type/RoleId.sol +57 -93
  501. package/contracts/type/Seconds.sol +21 -1
  502. package/contracts/type/StateId.sol +15 -1
  503. package/contracts/type/Timestamp.sol +10 -5
  504. package/contracts/type/UFixed.sol +40 -121
  505. package/contracts/type/Version.sol +18 -6
  506. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  507. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  508. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  509. package/package.json +8 -5
  510. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  512. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  513. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  514. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  516. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  517. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  519. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  521. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  522. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  523. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  524. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  525. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  526. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  527. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  528. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  529. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  530. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  531. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  532. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  533. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  534. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  535. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  536. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  537. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  538. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  539. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  540. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  541. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  542. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  543. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  544. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  545. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  546. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  547. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  548. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  549. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  550. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  551. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  552. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  553. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  554. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  555. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  556. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  557. package/contracts/instance/BundleManager.sol +0 -126
  558. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  559. package/contracts/instance/base/ObjectManager.sol +0 -80
  560. package/contracts/product/ProductService.sol +0 -124
  561. package/contracts/product/ProductServiceManager.sol +0 -42
  562. package/contracts/registry/ReleaseManager.sol +0 -527
  563. package/contracts/shared/AccessManagerCustom.sol +0 -741
  564. package/contracts/shared/AccessManagerExtended.sol +0 -481
  565. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  566. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  567. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  568. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  569. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  570. package/contracts/shared/InitializableCustom.sol +0 -177
  571. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,16 +1,23 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
6
5
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
7
 
8
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
8
10
  import {IAccessAdmin} from "./IAccessAdmin.sol";
9
- import {RoleId, RoleIdLib} from "../type/RoleId.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
12
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
10
13
  import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
11
14
  import {Str, StrLib} from "../type/String.sol";
12
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
15
+ import {TimestampLib} from "../type/Timestamp.sol";
16
+ import {VersionPart} from "../type/Version.sol";
13
17
 
18
+ interface IAccessManagedChecker {
19
+ function authority() external view returns (address);
20
+ }
14
21
 
15
22
  /**
16
23
  * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
@@ -19,6 +26,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
19
26
  */
20
27
  contract AccessAdmin is
21
28
  AccessManagedUpgradeable,
29
+ ReentrancyGuardUpgradeable,
22
30
  IAccessAdmin
23
31
  {
24
32
  using EnumerableSet for EnumerableSet.AddressSet;
@@ -26,19 +34,13 @@ contract AccessAdmin is
26
34
  string public constant ADMIN_ROLE_NAME = "AdminRole";
27
35
  string public constant PUBLIC_ROLE_NAME = "PublicRole";
28
36
 
29
- uint64 public constant MANAGER_ROLE = type(uint64).min + 1;
30
- string public constant MANAGER_ROLE_NAME = "ManagerRole";
31
-
32
37
  /// @dev the OpenZeppelin access manager driving the access admin contract
33
- AccessManager internal _authority;
38
+ AccessManagerCloneable internal _authority;
34
39
 
35
40
  /// @dev stores the deployer address and allows to create initializers
36
41
  /// that are restricted to the deployer address.
37
42
  address internal _deployer;
38
43
 
39
- /// @dev required role for state changes to this contract
40
- RoleId internal _managerRoleId;
41
-
42
44
  /// @dev store role info per role id
43
45
  mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
44
46
 
@@ -63,15 +65,15 @@ contract AccessAdmin is
63
65
  /// @dev store all managed functions per target
64
66
  mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
65
67
 
66
- /// @dev temporary dynamic function infos array
67
- mapping(address target => mapping(Selector selector => Str functionName)) internal _functionName;
68
+ /// @dev function infos array
69
+ mapping(address target => mapping(Selector selector => FunctionInfo)) internal _functionInfo;
68
70
 
69
71
  /// @dev temporary dynamic functions array
70
72
  bytes4[] private _functions;
71
73
 
72
74
  modifier onlyDeployer() {
73
75
  // special case for cloned AccessAdmin contracts
74
- // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
76
+ // IMPORTANT cloning and initialize authority needs to be done in a single transaction
75
77
  if (_deployer == address(0)) {
76
78
  _deployer = msg.sender;
77
79
  }
@@ -83,11 +85,9 @@ contract AccessAdmin is
83
85
  }
84
86
 
85
87
  modifier onlyRoleAdmin(RoleId roleId) {
86
- if (!roleExists(roleId)) {
87
- revert ErrorRoleUnknown(roleId);
88
- }
88
+ _checkRoleExists(roleId, false);
89
89
 
90
- if (!hasRole(msg.sender, _roleInfo[roleId].adminRoleId)) {
90
+ if (!hasAdminRole(msg.sender, roleId)) {
91
91
  revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
92
92
  }
93
93
  _;
@@ -100,8 +100,15 @@ contract AccessAdmin is
100
100
  _;
101
101
  }
102
102
 
103
- modifier onlyExistingRole(RoleId roleId) {
104
- _checkRoleId(roleId);
103
+ modifier onlyExistingRole(
104
+ RoleId roleId,
105
+ bool onlyActiveRole,
106
+ bool allowLockedRoles
107
+ )
108
+ {
109
+ if (!allowLockedRoles) {
110
+ _checkRoleExists(roleId, onlyActiveRole);
111
+ }
105
112
  _;
106
113
  }
107
114
 
@@ -110,159 +117,91 @@ contract AccessAdmin is
110
117
  _;
111
118
  }
112
119
 
113
- constructor() {
114
- _deployer = msg.sender;
115
- _authority = new AccessManager(address(this));
120
+ //-------------- initialization functions ------------------------------//
116
121
 
117
- _setAuthority(address(_authority));
118
- _createInitialRoleSetup();
122
+ // event LogAccessAdminDebug(string message);
119
123
 
120
- _disableInitializers();
121
- }
122
-
123
- //--- role management functions -----------------------------------------//
124
-
125
- function createRole(
126
- RoleId roleId,
127
- RoleId adminRoleId,
128
- string memory name,
129
- uint256 maxMemberCount,
130
- bool memberRemovalDisabled
124
+ /// @dev Initializes this admin with the provided accessManager (and authorization specification).
125
+ /// Internally initializes access manager with this admin and creates basic role setup.
126
+ function initialize(
127
+ AccessManagerCloneable authority
131
128
  )
132
- external
133
- virtual
134
- restricted()
129
+ public
130
+ initializer()
135
131
  {
136
- _createRole(roleId, adminRoleId, name, maxMemberCount, memberRemovalDisabled);
132
+ __AccessAdmin_init(authority);
137
133
  }
138
134
 
139
- function setRoleDisabled(
140
- RoleId roleId,
141
- bool disabled
142
- )
143
- external
144
- virtual
145
- restricted()
146
- {
147
- _setRoleDisabled(roleId, disabled);
148
- }
149
135
 
150
- function grantRole(
151
- address account,
152
- RoleId roleId
136
+ function __AccessAdmin_init(
137
+ AccessManagerCloneable authority
153
138
  )
154
- external
155
- virtual
156
- onlyRoleAdmin(roleId)
157
- restricted()
139
+ internal
140
+ onlyInitializing()
141
+ onlyDeployer() // initializes deployer if not initialized yet
158
142
  {
159
- _grantRoleToAccount(roleId, account);
160
- }
143
+ authority.initialize(address(this));
161
144
 
162
- function revokeRole(
163
- address account,
164
- RoleId roleId
165
- )
166
- external
167
- virtual
168
- onlyRoleAdmin(roleId)
169
- restricted()
170
- {
171
- _revokeRoleFromAccount(roleId, account);
172
- }
145
+ // set and initialize this access manager contract as
146
+ // the admin (ADMIN_ROLE) of the provided authority
147
+ __AccessManaged_init(address(authority));
148
+ _authority = authority;
173
149
 
174
- function renounceRole(
175
- RoleId roleId
176
- )
177
- external
178
- virtual
179
- onlyRoleMember(roleId)
180
- restricted()
181
- {
182
- _revokeRoleFromAccount(roleId, msg.sender);
150
+ // create admin and public roles
151
+ _initializeAdminAndPublicRoles();
152
+
153
+ // additional use case specific initialization
154
+ _initializeCustom();
183
155
  }
184
156
 
185
- //--- target management functions ---------------------------------------//
186
157
 
187
- function createTarget(
188
- address target,
189
- string memory name
190
- )
191
- external
192
- virtual
193
- restricted()
194
- {
195
- _createTarget(target, name);
158
+ function getRegistry() public view returns (IRegistry registry) {
159
+ return _authority.getRegistry();
196
160
  }
197
161
 
198
- function setTargetLocked(
199
- address target,
200
- bool locked
201
- )
202
- external
203
- virtual
204
- onlyExistingTarget(target)
205
- restricted()
206
- {
207
- _authority.setTargetClosed(target, locked);
208
162
 
209
- // implizit logging: rely on OpenZeppelin log TargetClosed
163
+ function getRelease() public view returns (VersionPart release) {
164
+ return _authority.getRelease();
210
165
  }
211
166
 
212
- function authorizeFunctions(
213
- address target,
214
- RoleId roleId,
215
- Function[] memory functions
216
- )
217
- external
218
- virtual
219
- onlyExistingTarget(target)
220
- onlyExistingRole(roleId)
221
- restricted()
222
- {
223
- _authorizeTargetFunctions(target, roleId, functions);
224
- }
225
167
 
226
- function unauthorizeFunctions(
227
- address target,
228
- Function[] memory functions
229
- )
230
- external
168
+ function _initializeAdminAndPublicRoles()
169
+ internal
231
170
  virtual
232
- restricted()
171
+ onlyInitializing()
233
172
  {
234
- _unauthorizeTargetFunctions(target, functions);
235
- }
173
+ RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
236
174
 
175
+ // setup admin role
176
+ _createRoleUnchecked(
177
+ ADMIN_ROLE(),
178
+ toRole({
179
+ adminRoleId: ADMIN_ROLE(),
180
+ roleType: RoleType.Contract,
181
+ maxMemberCount: 1,
182
+ name: ADMIN_ROLE_NAME}));
237
183
 
238
- function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
239
- return SelectorSetLib.size(_targetFunctions[target]);
240
- }
184
+ // add this contract as admin role member
185
+ _roleMembers[adminRoleId].add(address(this));
241
186
 
242
- function getAuthorizedFunction(
243
- address target,
244
- uint256 idx
245
- )
246
- external
247
- view
248
- returns (
249
- Function memory func,
250
- RoleId roleId
251
- )
252
- {
253
- Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
187
+ // setup public role
188
+ _createRoleUnchecked(
189
+ PUBLIC_ROLE(),
190
+ toRole({
191
+ adminRoleId: ADMIN_ROLE(),
192
+ roleType: RoleType.Gif,
193
+ maxMemberCount: type(uint32).max,
194
+ name: PUBLIC_ROLE_NAME}));
195
+ }
254
196
 
255
- func = Function({
256
- selector: selector,
257
- name: _functionName[target][selector]});
258
197
 
259
- roleId = RoleIdLib.toRoleId(
260
- _authority.getTargetFunctionRole(
261
- target,
262
- selector.toBytes4()));
263
- }
198
+ function _initializeCustom()
199
+ internal
200
+ virtual
201
+ onlyInitializing()
202
+ { }
264
203
 
265
- //--- view functions ----------------------------------------------------//
204
+ //--- view functions for roles ------------------------------------------//
266
205
 
267
206
  function roles() external view returns (uint256 numberOfRoles) {
268
207
  return _roleIds.length;
@@ -280,16 +219,8 @@ contract AccessAdmin is
280
219
  return RoleId.wrap(_authority.PUBLIC_ROLE());
281
220
  }
282
221
 
283
- function getManagerRole() public view returns (RoleId roleId) {
284
- return _managerRoleId;
285
- }
286
-
287
222
  function roleExists(RoleId roleId) public view returns (bool exists) {
288
- return _roleInfo[roleId].exists;
289
- }
290
-
291
- function isRoleDisabled(RoleId roleId) public view returns (bool isActive) {
292
- return _roleInfo[roleId].disabledAt <= TimestampLib.blockTimestamp();
223
+ return _roleInfo[roleId].createdAt.gtz();
293
224
  }
294
225
 
295
226
  function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
@@ -300,6 +231,15 @@ contract AccessAdmin is
300
231
  return _roleForName[name];
301
232
  }
302
233
 
234
+ function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
235
+ return _roleMembers[roleId].length();
236
+ }
237
+
238
+ function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
239
+ return _roleMembers[roleId].at(idx);
240
+ }
241
+
242
+ // TODO false because not role member or because role not exists?
303
243
  function hasRole(address account, RoleId roleId) public view returns (bool) {
304
244
  (bool isMember, ) = _authority.hasRole(
305
245
  RoleId.unwrap(roleId),
@@ -307,22 +247,21 @@ contract AccessAdmin is
307
247
  return isMember;
308
248
  }
309
249
 
310
- function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
311
- return _roleMembers[roleId].length();
250
+ function hasAdminRole(address account, RoleId roleId)
251
+ public
252
+ virtual
253
+ view
254
+ returns (bool)
255
+ {
256
+ return hasRole(account, _roleInfo[roleId].adminRoleId);
312
257
  }
313
258
 
314
- function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
315
- return _roleMembers[roleId].at(idx);
316
- }
259
+ //--- view functions for targets ----------------------------------------//
317
260
 
318
261
  function targetExists(address target) public view returns (bool exists) {
319
262
  return _targetInfo[target].createdAt.gtz();
320
263
  }
321
264
 
322
- function isTargetLocked(address target) public view returns (bool locked) {
323
- return _authority.isTargetClosed(target);
324
- }
325
-
326
265
  function targets() external view returns (uint256 numberOfTargets) {
327
266
  return _targets.length;
328
267
  }
@@ -335,34 +274,61 @@ contract AccessAdmin is
335
274
  return _targetInfo[target];
336
275
  }
337
276
 
338
- function getTargetForName(Str name) external view returns (address target) {
277
+ function getTargetForName(Str name) public view returns (address target) {
339
278
  return _targetForName[name];
340
279
  }
341
280
 
342
- function isAccessManaged(address target) public view returns (bool) {
343
- if (!_isContract(target)) {
344
- return false;
345
- }
281
+ function isTargetLocked(address target) public view returns (bool locked) {
282
+ return _authority.isTargetClosed(target);
283
+ }
346
284
 
347
- (bool success, ) = target.staticcall(
348
- abi.encodeWithSelector(
349
- AccessManagedUpgradeable.authority.selector));
285
+ function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
286
+ return SelectorSetLib.size(_targetFunctions[target]);
287
+ }
350
288
 
351
- return success;
289
+ function getAuthorizedFunction(
290
+ address target,
291
+ uint256 idx
292
+ )
293
+ external
294
+ view
295
+ returns (
296
+ FunctionInfo memory func,
297
+ RoleId roleId
298
+ )
299
+ {
300
+ Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
301
+ func = _functionInfo[target][selector];
302
+ roleId = RoleIdLib.toRoleId(
303
+ _authority.getTargetFunctionRole(
304
+ target,
305
+ selector.toBytes4()));
352
306
  }
353
307
 
354
- function canCall(address caller, address target, Selector selector) external view returns (bool can) {
308
+ function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
355
309
  (can, ) = _authority.canCall(caller, target, selector.toBytes4());
356
310
  }
357
311
 
358
- function deployer() public view returns (address) {
359
- return _deployer;
312
+ function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
313
+ return RoleInfo({
314
+ name: StrLib.toStr(name),
315
+ adminRoleId: adminRoleId,
316
+ roleType: roleType,
317
+ maxMemberCount: maxMemberCount,
318
+ createdAt: TimestampLib.blockTimestamp(),
319
+ pausedAt: TimestampLib.max()
320
+ });
360
321
  }
361
322
 
362
- function toFunction(bytes4 selector, string memory name) public pure returns (Function memory) {
363
- return Function({
364
- selector: SelectorLib.toSelector(selector),
365
- name: StrLib.toStr(name)});
323
+ function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
324
+ return FunctionInfo({
325
+ name: StrLib.toStr(name),
326
+ selector: SelectorLib.toSelector(selector),
327
+ createdAt: TimestampLib.blockTimestamp()});
328
+ }
329
+
330
+ function deployer() public view returns (address) {
331
+ return _deployer;
366
332
  }
367
333
 
368
334
  //--- internal/private functions -------------------------------------------------//
@@ -370,7 +336,7 @@ contract AccessAdmin is
370
336
  function _authorizeTargetFunctions(
371
337
  address target,
372
338
  RoleId roleId,
373
- Function[] memory functions
339
+ FunctionInfo[] memory functions
374
340
  )
375
341
  internal
376
342
  {
@@ -382,33 +348,43 @@ contract AccessAdmin is
382
348
  bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
383
349
 
384
350
  // apply authz via access manager
385
- _grantRoleAccessToFunctions(target, roleId, functionSelectors);
351
+ _grantRoleAccessToFunctions(
352
+ target,
353
+ roleId,
354
+ functionSelectors,
355
+ false); // allowLockedRoles
386
356
  }
387
357
 
388
358
  function _unauthorizeTargetFunctions(
389
359
  address target,
390
- Function[] memory functions
360
+ FunctionInfo[] memory functions
391
361
  )
392
362
  internal
393
363
  {
394
364
  bool addFunctions = false;
395
365
  bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
396
- _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
366
+
367
+ _grantRoleAccessToFunctions(
368
+ target,
369
+ getAdminRole(),
370
+ functionSelectors,
371
+ true); // allowLockedRoles
397
372
  }
398
373
 
399
374
  function _processFunctionSelectors(
400
375
  address target,
401
- Function[] memory functions,
376
+ FunctionInfo[] memory functions,
402
377
  bool addFunctions
403
378
  )
404
379
  internal
380
+ onlyExistingTarget(target)
405
381
  returns (
406
382
  bytes4[] memory functionSelectors
407
383
  )
408
384
  {
409
385
  uint256 n = functions.length;
410
386
  functionSelectors = new bytes4[](n);
411
- Function memory func;
387
+ FunctionInfo memory func;
412
388
  Selector selector;
413
389
 
414
390
  for (uint256 i = 0; i < n; i++) {
@@ -420,112 +396,23 @@ contract AccessAdmin is
420
396
  else { SelectorSetLib.remove(_targetFunctions[target], selector); }
421
397
 
422
398
  // set function name
423
- _functionName[target][selector] = func.name;
399
+ _functionInfo[target][selector] = func;
424
400
 
425
401
  // add bytes4 selector to function selector array
426
402
  functionSelectors[i] = selector.toBytes4();
427
403
  }
428
404
  }
429
405
 
430
- function _initializeAuthority(
431
- address authorityAddress
432
- )
433
- internal
434
- virtual
435
- onlyInitializing()
436
- onlyDeployer()
437
- {
438
- if (authority() != address(0)) {
439
- revert ErrorAuthorityAlreadySet();
440
- }
441
-
442
- _authority = AccessManager(authorityAddress);
443
-
444
- if(!hasRole(address(this), RoleId.wrap(_authority.ADMIN_ROLE()))) {
445
- revert ErrorAdminRoleMissing();
446
- }
447
-
448
- __AccessManaged_init(address(_authority));
449
- }
450
-
451
-
452
- function _initializeRoleSetup()
453
- internal
454
- virtual
455
- onlyInitializing()
456
- {
457
- _createInitialRoleSetup();
458
- }
459
-
460
-
461
- function _createInitialRoleSetup()
462
- internal
463
- {
464
- RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
465
- Function[] memory functions;
466
-
467
- // setup admin role
468
- _createRoleUnchecked(
469
- adminRoleId,
470
- adminRoleId,
471
- StrLib.toStr(ADMIN_ROLE_NAME),
472
- 1,
473
- true);
474
-
475
- // add this contract as admin role member
476
- _roleMembers[adminRoleId].add(address(this));
477
-
478
- // setup public role
479
- _createRoleUnchecked(
480
- RoleIdLib.toRoleId(_authority.PUBLIC_ROLE()),
481
- adminRoleId,
482
- StrLib.toStr(PUBLIC_ROLE_NAME),
483
- type(uint256).max,
484
- true);
485
-
486
- // setup manager role
487
- _managerRoleId = RoleIdLib.toRoleId(MANAGER_ROLE);
488
- _createRole(
489
- _managerRoleId,
490
- adminRoleId,
491
- MANAGER_ROLE_NAME,
492
- 3, // TODO think about max member count
493
- false);
494
-
495
- // grant public role access to grant and revoke, renounce
496
- functions = new Function[](3);
497
- functions[0] = toFunction(IAccessAdmin.grantRole.selector, "grantRole");
498
- functions[1] = toFunction(IAccessAdmin.revokeRole.selector, "revokeRole");
499
- functions[2] = toFunction(IAccessAdmin.renounceRole.selector, "renounceRole");
500
- _authorizeTargetFunctions(address(this), getPublicRole(), functions);
501
-
502
- // grant manager role access to the specified functions
503
- functions = new Function[](6);
504
- functions[0] = toFunction(IAccessAdmin.createRole.selector, "createRole");
505
- functions[1] = toFunction(IAccessAdmin.setRoleDisabled.selector, "setRoleDisabled");
506
- functions[2] = toFunction(IAccessAdmin.createTarget.selector, "createTarget");
507
- functions[3] = toFunction(IAccessAdmin.setTargetLocked.selector, "setTargetLocked");
508
- functions[4] = toFunction(IAccessAdmin.authorizeFunctions.selector, "authorizeFunctions");
509
- functions[5] = toFunction(IAccessAdmin.unauthorizeFunctions.selector, "unauthorizeFunctions");
510
- _authorizeTargetFunctions(address(this), getManagerRole(), functions);
511
- }
512
-
513
- /// @dev check if target exists and reverts if it doesn't
514
- function _checkTarget(address target)
515
- internal
516
- {
517
- if (_targetInfo[target].createdAt.eqz()) {
518
- revert ErrorTargetUnknown(target);
519
- }
520
- }
521
-
522
406
  /// @dev grant the specified role access to all functions in the provided selector list
523
407
  function _grantRoleAccessToFunctions(
524
408
  address target,
525
409
  RoleId roleId,
526
- bytes4[] memory functionSelectors
410
+ bytes4[] memory functionSelectors,
411
+ bool allowLockedRoles // admin and public roles are locked
527
412
  )
528
413
  internal
414
+ onlyExistingTarget(target)
415
+ onlyExistingRole(roleId, true, allowLockedRoles)
529
416
  {
530
417
  _authority.setTargetFunctionRole(
531
418
  target,
@@ -535,18 +422,26 @@ contract AccessAdmin is
535
422
  // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
536
423
  }
537
424
 
425
+
538
426
  /// @dev grant the specified role to the provided account
539
427
  function _grantRoleToAccount(RoleId roleId, address account)
540
428
  internal
429
+ onlyExistingRole(roleId, true, false)
541
430
  {
542
- _checkRoleId(roleId);
543
- _checkRoleIsActive(roleId);
544
-
545
431
  // check max role members will not be exceeded
546
432
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
547
433
  revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
548
434
  }
549
435
 
436
+ // check account is contract for contract role
437
+ if (
438
+ _roleInfo[roleId].roleType == RoleType.Contract &&
439
+ !ContractLib.isContract(account) // will fail in account's constructor
440
+ ) {
441
+ revert ErrorRoleMemberNotContract(roleId, account);
442
+ }
443
+
444
+ // TODO check account already have roleId
550
445
  _roleMembers[roleId].add(account);
551
446
  _authority.grantRole(
552
447
  RoleId.unwrap(roleId),
@@ -559,14 +454,15 @@ contract AccessAdmin is
559
454
  /// @dev revoke the specified role from the provided account
560
455
  function _revokeRoleFromAccount(RoleId roleId, address account)
561
456
  internal
457
+ onlyExistingRole(roleId, false, false)
562
458
  {
563
- _checkRoleId(roleId);
564
459
 
565
460
  // check role removal is permitted
566
- if (_roleInfo[roleId].memberRemovalDisabled) {
567
- revert ErrorRoleRemovalDisabled(roleId);
461
+ if (_roleInfo[roleId].roleType == RoleType.Contract) {
462
+ revert ErrorRoleMemberRemovalDisabled(roleId, account);
568
463
  }
569
464
 
465
+ // TODO check account have roleId?
570
466
  _roleMembers[roleId].remove(account);
571
467
  _authority.revokeRole(
572
468
  RoleId.unwrap(roleId),
@@ -576,37 +472,11 @@ contract AccessAdmin is
576
472
  }
577
473
 
578
474
 
579
- function _checkRoleId(RoleId roleId)
580
- internal
581
- {
582
- if (!_roleInfo[roleId].exists) {
583
- revert ErrorRoleUnknown(roleId);
584
- }
585
-
586
- uint64 roleIdInt = RoleId.unwrap(roleId);
587
- if (roleIdInt == _authority.ADMIN_ROLE()
588
- || roleIdInt == _authority.PUBLIC_ROLE())
589
- {
590
- revert ErrorRoleIsLocked(roleId);
591
- }
592
- }
593
-
594
-
595
- function _checkRoleIsActive(RoleId roleId)
596
- internal
597
- {
598
- if (isRoleDisabled(roleId)) {
599
- revert ErrorRoleIsDisabled(roleId);
600
- }
601
- }
602
-
603
-
475
+ /// @dev Creates a role based on the provided parameters.
476
+ /// Checks that the provided role and role id and role name not already used.
604
477
  function _createRole(
605
478
  RoleId roleId,
606
- RoleId adminRoleId,
607
- string memory roleName,
608
- uint256 maxMemberCount,
609
- bool memberRemovalDisabled
479
+ RoleInfo memory info
610
480
  )
611
481
  internal
612
482
  {
@@ -618,83 +488,55 @@ contract AccessAdmin is
618
488
  }
619
489
 
620
490
  // check admin role exists
621
- if(!roleExists(adminRoleId)) {
622
- revert ErrorRoleAdminNotExisting(adminRoleId);
491
+ if(!roleExists(info.adminRoleId)) {
492
+ revert ErrorRoleAdminNotExisting(info.adminRoleId);
623
493
  }
624
494
 
625
495
  // check role name is not empty
626
- Str name = StrLib.toStr(roleName);
627
- if(name.length() == 0) {
496
+ if(info.name.length() == 0) {
628
497
  revert ErrorRoleNameEmpty(roleId);
629
498
  }
630
499
 
631
500
  // check role name is not used for another role
632
- if(_roleForName[name].exists) {
501
+ if(_roleForName[info.name].exists) {
633
502
  revert ErrorRoleNameAlreadyExists(
634
503
  roleId,
635
- roleName,
636
- _roleForName[name].roleId);
637
- }
638
-
639
- _createRoleUnchecked(
640
- roleId, adminRoleId,
641
- name,
642
- maxMemberCount,
643
- memberRemovalDisabled);
644
- }
645
-
646
-
647
- function _setRoleDisabled(
648
- RoleId roleId,
649
- bool disabled
650
- )
651
- internal
652
- {
653
-
654
- _checkRoleId(roleId);
655
- Timestamp disabledAtOld = _roleInfo[roleId].disabledAt;
656
-
657
- if (disabled) {
658
- _roleInfo[roleId].disabledAt = TimestampLib.blockTimestamp();
659
- } else {
660
- _roleInfo[roleId].disabledAt = TimestampLib.max();
504
+ info.name.toString(),
505
+ _roleForName[info.name].roleId);
661
506
  }
662
507
 
663
- emit LogRoleDisabled(roleId, disabled, disabledAtOld);
508
+ _createRoleUnchecked(roleId, info);
664
509
  }
665
510
 
666
511
 
667
512
  function _createRoleUnchecked(
668
513
  RoleId roleId,
669
- RoleId adminRoleId,
670
- Str name,
671
- uint256 maxMemberCount,
672
- bool memberRemovalDisabled
514
+ RoleInfo memory info
673
515
  )
674
516
  private
675
517
  {
676
518
  // create role info
677
- _roleInfo[roleId] = RoleInfo({
678
- adminRoleId: adminRoleId,
679
- name: name,
680
- maxMemberCount: maxMemberCount,
681
- memberRemovalDisabled: memberRemovalDisabled,
682
- disabledAt: TimestampLib.max(),
683
- exists: true});
519
+ info.createdAt = TimestampLib.blockTimestamp();
520
+ _roleInfo[roleId] = info;
684
521
 
685
522
  // create role name info
686
- _roleForName[name] = RoleNameInfo({
523
+ _roleForName[info.name] = RoleNameInfo({
687
524
  roleId: roleId,
688
525
  exists: true});
689
526
 
690
527
  // add role to list of roles
691
528
  _roleIds.push(roleId);
692
529
 
693
- emit LogRoleCreated(roleId, adminRoleId, name.toString());
530
+ emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
694
531
  }
695
532
 
696
533
 
697
- function _createTarget(address target, string memory targetName)
534
+ function _createTarget(
535
+ address target,
536
+ string memory targetName,
537
+ bool checkAuthority,
538
+ bool custom
539
+ )
698
540
  internal
699
541
  {
700
542
  // check target does not yet exist
@@ -710,7 +552,7 @@ contract AccessAdmin is
710
552
  revert ErrorTargetNameEmpty(target);
711
553
  }
712
554
 
713
- // check target name is not used for another role
555
+ // check target name is not used for another target
714
556
  if( _targetForName[name] != address(0)) {
715
557
  revert ErrorTargetNameAlreadyExists(
716
558
  target,
@@ -719,19 +561,22 @@ contract AccessAdmin is
719
561
  }
720
562
 
721
563
  // check target is an access managed contract
722
- if (!isAccessManaged(target)) {
564
+ if (!_isAccessManaged(target)) {
723
565
  revert ErrorTargetNotAccessManaged(target);
724
566
  }
725
567
 
726
568
  // check target shares authority with this contract
727
- address targetAuthority = AccessManagedUpgradeable(target).authority();
728
- if (targetAuthority != authority()) {
729
- revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
569
+ if (checkAuthority) {
570
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
571
+ if (targetAuthority != authority()) {
572
+ revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
573
+ }
730
574
  }
731
575
 
732
576
  // create target info
733
577
  _targetInfo[target] = TargetInfo({
734
578
  name: name,
579
+ isCustom: custom,
735
580
  createdAt: TimestampLib.blockTimestamp()
736
581
  });
737
582
 
@@ -744,16 +589,71 @@ contract AccessAdmin is
744
589
  emit LogTargetCreated(target, targetName);
745
590
  }
746
591
 
747
- function _isContract(address target)
592
+
593
+ function _isAccessManaged(address target)
748
594
  internal
749
- view
595
+ view
750
596
  returns (bool)
751
597
  {
752
- uint256 size;
753
- assembly {
754
- size := extcodesize(target)
598
+ if (!ContractLib.isContract(target)) {
599
+ return false;
600
+ }
601
+
602
+ (bool success, ) = target.staticcall(
603
+ abi.encodeWithSelector(
604
+ IAccessManagedChecker.authority.selector));
605
+
606
+ return success;
607
+ }
608
+
609
+
610
+ function _setTargetClosed(address target, bool locked)
611
+ internal
612
+ {
613
+ _checkTarget(target);
614
+
615
+ // target locked/unlocked already
616
+ if(_authority.isTargetClosed(target) == locked) {
617
+ revert ErrorTargetAlreadyLocked(target, locked);
618
+ }
619
+
620
+ _authority.setTargetClosed(target, locked);
621
+ }
622
+
623
+
624
+ function _checkRoleExists(
625
+ RoleId roleId,
626
+ bool onlyActiveRole
627
+ )
628
+ internal
629
+ view
630
+ {
631
+ if (!roleExists(roleId)) {
632
+ revert ErrorRoleUnknown(roleId);
633
+ }
634
+
635
+ uint64 roleIdInt = RoleId.unwrap(roleId);
636
+ if (roleIdInt == _authority.ADMIN_ROLE())
637
+ // TODO cleanup
638
+ //|| roleIdInt == _authority.PUBLIC_ROLE()) prevents granting of public role
639
+ {
640
+ revert ErrorRoleIsLocked(roleId);
641
+ }
642
+
643
+ // check if role is disabled
644
+ if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
645
+ revert ErrorRoleIsPaused(roleId);
646
+ }
647
+ }
648
+
649
+
650
+ /// @dev check if target exists and reverts if it doesn't
651
+ function _checkTarget(address target)
652
+ internal
653
+ view
654
+ {
655
+ if (!targetExists(target)) {
656
+ revert ErrorTargetUnknown(target);
755
657
  }
756
- return size > 0;
757
658
  }
758
-
759
659
  }