@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c25ee-730

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 (528) hide show
  1. package/README.md +81 -7
  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 +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +677 -258
  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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1255 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +496 -206
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +159 -450
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +90 -330
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +410 -289
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +180 -122
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -172
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +238 -70
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1445 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1388 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +471 -48
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +222 -64
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +475 -144
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1132 -392
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1319 -452
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +239 -238
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +822 -806
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +123 -322
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  110. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +98 -121
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +99 -274
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +132 -98
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +139 -314
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +164 -377
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +116 -138
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -117
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +129 -163
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +287 -265
  135. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  136. package/artifacts/contracts/pool/Pool.sol/Pool.json +127 -313
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +494 -511
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +170 -108
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +191 -164
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +116 -98
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -372
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +407 -242
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +150 -124
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +245 -59
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +117 -43
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +252 -214
  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} +88 -8
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -264
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  170. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +349 -0
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +151 -109
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.json +180 -241
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +111 -113
  177. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  178. package/artifacts/contracts/product/Product.sol/Product.json +250 -364
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +341 -41
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  193. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/Registry.sol/Registry.json +547 -102
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +821 -372
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  204. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2160 -0
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +487 -253
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  210. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  212. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  213. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  214. package/artifacts/contracts/shared/Component.sol/Component.json +81 -227
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +520 -644
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -131
  219. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +616 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +463 -300
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -121
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -273
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  266. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +197 -118
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +288 -341
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +136 -105
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +205 -168
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +113 -95
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  302. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  304. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  306. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  308. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  309. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  310. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  312. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  313. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  314. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  316. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  318. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  320. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  322. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  324. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  326. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  330. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  332. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  334. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  337. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  339. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  341. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  343. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  345. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
  346. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  348. package/contracts/accounting/AccountingService.sol +262 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +45 -0
  351. package/contracts/authorization/AccessAdmin.sol +545 -261
  352. package/contracts/authorization/AccessAdminLib.sol +379 -0
  353. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  354. package/contracts/authorization/Authorization.sol +246 -202
  355. package/contracts/authorization/IAccess.sol +25 -6
  356. package/contracts/authorization/IAccessAdmin.sol +79 -79
  357. package/contracts/authorization/IAuthorization.sol +9 -36
  358. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  359. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  360. package/contracts/distribution/BasicDistribution.sol +20 -17
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  362. package/contracts/distribution/Distribution.sol +39 -89
  363. package/contracts/distribution/DistributionService.sol +215 -111
  364. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  365. package/contracts/distribution/IDistributionComponent.sol +6 -8
  366. package/contracts/distribution/IDistributionService.sol +32 -24
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +86 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +433 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +42 -38
  381. package/contracts/instance/IInstance.sol +96 -43
  382. package/contracts/instance/IInstanceService.sol +43 -30
  383. package/contracts/instance/Instance.sol +183 -96
  384. package/contracts/instance/InstanceAdmin.sol +462 -178
  385. package/contracts/instance/InstanceAuthorizationV3.sol +113 -54
  386. package/contracts/instance/InstanceReader.sol +384 -67
  387. package/contracts/instance/InstanceService.sol +262 -205
  388. package/contracts/instance/InstanceServiceManager.sol +6 -7
  389. package/contracts/instance/InstanceStore.sol +13 -6
  390. package/contracts/instance/RiskSet.sol +118 -0
  391. package/contracts/instance/base/ObjectCounter.sol +1 -2
  392. package/contracts/instance/base/ObjectLifecycle.sol +6 -3
  393. package/contracts/instance/base/ObjectSet.sol +31 -33
  394. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  395. package/contracts/instance/module/IBundle.sol +6 -5
  396. package/contracts/instance/module/IComponents.sol +29 -13
  397. package/contracts/instance/module/IDistribution.sol +21 -8
  398. package/contracts/instance/module/IPolicy.sol +33 -12
  399. package/contracts/instance/module/IRisk.sol +5 -0
  400. package/contracts/oracle/BasicOracle.sol +1 -4
  401. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  402. package/contracts/oracle/IOracle.sol +9 -4
  403. package/contracts/oracle/IOracleService.sol +2 -1
  404. package/contracts/oracle/Oracle.sol +7 -19
  405. package/contracts/oracle/OracleService.sol +113 -81
  406. package/contracts/oracle/OracleServiceManager.sol +6 -6
  407. package/contracts/pool/BasicPool.sol +32 -25
  408. package/contracts/pool/BasicPoolAuthorization.sol +33 -9
  409. package/contracts/pool/BundleService.sol +93 -136
  410. package/contracts/pool/BundleServiceManager.sol +6 -6
  411. package/contracts/pool/IBundleService.sol +15 -34
  412. package/contracts/pool/IPoolComponent.sol +19 -15
  413. package/contracts/pool/IPoolService.sol +70 -65
  414. package/contracts/pool/Pool.sol +137 -120
  415. package/contracts/pool/PoolLib.sol +260 -0
  416. package/contracts/pool/PoolService.sol +462 -238
  417. package/contracts/pool/PoolServiceManager.sol +4 -4
  418. package/contracts/product/ApplicationService.sol +48 -23
  419. package/contracts/product/ApplicationServiceManager.sol +4 -4
  420. package/contracts/product/BasicProduct.sol +10 -13
  421. package/contracts/product/BasicProductAuthorization.sol +30 -12
  422. package/contracts/product/ClaimService.sol +364 -150
  423. package/contracts/product/ClaimServiceManager.sol +4 -4
  424. package/contracts/product/IApplicationService.sol +8 -2
  425. package/contracts/product/IClaimService.sol +43 -8
  426. package/contracts/product/IPolicyService.sol +35 -13
  427. package/contracts/product/IPricingService.sol +10 -9
  428. package/contracts/product/IProductComponent.sol +27 -4
  429. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -9
  430. package/contracts/product/PolicyService.sol +343 -255
  431. package/contracts/product/PolicyServiceLib.sol +86 -0
  432. package/contracts/product/PolicyServiceManager.sol +4 -4
  433. package/contracts/product/PricingService.sol +38 -30
  434. package/contracts/product/PricingServiceManager.sol +4 -4
  435. package/contracts/product/Product.sol +139 -78
  436. package/contracts/product/RiskService.sol +154 -0
  437. package/contracts/product/RiskServiceManager.sol +39 -0
  438. package/contracts/registry/ChainNft.sol +72 -40
  439. package/contracts/registry/IRegistry.sol +63 -27
  440. package/contracts/registry/IRegistryService.sol +5 -12
  441. package/contracts/registry/IRelease.sol +29 -0
  442. package/contracts/registry/ITransferInterceptor.sol +1 -2
  443. package/contracts/registry/Registry.sol +356 -202
  444. package/contracts/registry/RegistryAdmin.sol +203 -286
  445. package/contracts/registry/RegistryAuthorization.sol +277 -0
  446. package/contracts/registry/RegistryService.sol +37 -48
  447. package/contracts/registry/RegistryServiceManager.sol +3 -3
  448. package/contracts/registry/ReleaseAdmin.sol +268 -0
  449. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  450. package/contracts/registry/ReleaseRegistry.sol +272 -240
  451. package/contracts/registry/ServiceAuthorizationV3.sol +197 -55
  452. package/contracts/registry/TokenRegistry.sol +10 -9
  453. package/contracts/shared/Component.sol +65 -123
  454. package/contracts/shared/ComponentService.sol +437 -370
  455. package/contracts/shared/ComponentServiceManager.sol +8 -5
  456. package/contracts/shared/ComponentVerifyingService.sol +27 -16
  457. package/contracts/shared/ContractLib.sol +292 -0
  458. package/contracts/shared/IComponent.sol +5 -17
  459. package/contracts/shared/IComponentService.sol +44 -40
  460. package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
  461. package/contracts/shared/ILifecycle.sol +3 -1
  462. package/contracts/shared/INftOwnable.sol +2 -0
  463. package/contracts/shared/IPolicyHolder.sol +12 -22
  464. package/contracts/shared/IRegisterable.sol +23 -1
  465. package/contracts/shared/IService.sol +4 -5
  466. package/contracts/shared/InitializableERC165.sol +10 -2
  467. package/contracts/shared/InstanceLinkedComponent.sol +72 -49
  468. package/contracts/shared/KeyValueStore.sol +1 -1
  469. package/contracts/shared/Lifecycle.sol +15 -4
  470. package/contracts/shared/NftOwnable.sol +28 -8
  471. package/contracts/shared/PolicyHolder.sol +15 -52
  472. package/contracts/shared/Registerable.sol +52 -21
  473. package/contracts/shared/RegistryLinked.sol +9 -14
  474. package/contracts/shared/Service.sol +17 -33
  475. package/contracts/shared/TokenHandler.sol +275 -72
  476. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  477. package/contracts/staking/IStaking.sol +25 -13
  478. package/contracts/staking/IStakingService.sol +16 -4
  479. package/contracts/staking/Staking.sol +101 -52
  480. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +96 -21
  481. package/contracts/staking/StakingManager.sol +8 -6
  482. package/contracts/staking/StakingReader.sol +18 -21
  483. package/contracts/staking/StakingService.sol +82 -25
  484. package/contracts/staking/StakingServiceManager.sol +6 -5
  485. package/contracts/staking/StakingStore.sol +2 -1
  486. package/contracts/staking/TargetManagerLib.sol +8 -4
  487. package/contracts/type/Amount.sol +15 -0
  488. package/contracts/type/ClaimId.sol +6 -1
  489. package/contracts/type/Fee.sol +8 -8
  490. package/contracts/type/Key32.sol +2 -2
  491. package/contracts/type/Key32Set.sol +62 -0
  492. package/contracts/type/NftId.sol +7 -0
  493. package/contracts/type/ObjectType.sol +69 -37
  494. package/contracts/type/PayoutId.sol +10 -10
  495. package/contracts/type/RiskId.sol +38 -6
  496. package/contracts/type/RoleId.sol +61 -55
  497. package/contracts/type/Seconds.sol +8 -0
  498. package/contracts/type/Selector.sol +5 -0
  499. package/contracts/type/StateId.sol +15 -1
  500. package/contracts/type/Timestamp.sol +0 -5
  501. package/contracts/type/UFixed.sol +37 -126
  502. package/contracts/type/Version.sol +54 -5
  503. package/contracts/upgradeability/ProxyManager.sol +79 -43
  504. package/contracts/upgradeability/Versionable.sol +6 -3
  505. package/package.json +5 -4
  506. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  507. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  508. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  509. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  510. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  512. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  513. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  514. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  515. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  517. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  518. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  519. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  520. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
  521. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  522. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  523. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  524. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  525. package/contracts/instance/module/IAccess.sol +0 -46
  526. package/contracts/product/ProductService.sol +0 -99
  527. package/contracts/product/ProductServiceManager.sol +0 -39
  528. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -5,12 +5,30 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
5
5
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
6
  import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
7
 
8
- import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
8
+ import {IAccess} from "./IAccess.sol";
9
9
  import {IAccessAdmin} from "./IAccessAdmin.sol";
10
+ import {IAuthorization} from "./IAuthorization.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
12
+ import {IService} from "../shared/IService.sol";
13
+
14
+ import {ADMIN_ROLE_NAME, PUBLIC_ROLE_NAME} from "./AccessAdmin.sol";
15
+ import {AccessAdminLib} from "./AccessAdminLib.sol";
16
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
17
+ import {ContractLib} from "../shared/ContractLib.sol";
18
+ import {NftId, NftIdLib} from "../type/NftId.sol";
19
+ import {ObjectType} from "../type/ObjectType.sol";
10
20
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
11
- import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
21
+ import {Selector, SelectorSetLib} from "../type/Selector.sol";
12
22
  import {Str, StrLib} from "../type/String.sol";
13
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
23
+ import {TimestampLib} from "../type/Timestamp.sol";
24
+ import {VersionPart} from "../type/Version.sol";
25
+
26
+ interface IAccessManagedChecker {
27
+ function authority() external view returns (address);
28
+ }
29
+
30
+ function ADMIN_ROLE_NAME() pure returns (string memory) { return "AdminRole"; }
31
+ function PUBLIC_ROLE_NAME() pure returns (string memory) { return "PublicRole"; }
14
32
 
15
33
 
16
34
  /**
@@ -25,16 +43,23 @@ contract AccessAdmin is
25
43
  {
26
44
  using EnumerableSet for EnumerableSet.AddressSet;
27
45
 
28
- string public constant ADMIN_ROLE_NAME = "AdminRole";
29
- string public constant PUBLIC_ROLE_NAME = "PublicRole";
46
+ /// @dev admin name used for logging only
47
+ string internal _adminName;
30
48
 
31
- /// @dev the OpenZeppelin access manager driving the access admin contract
49
+ /// @dev the access manager driving the access admin contract
50
+ /// hold link to registry and release version
32
51
  AccessManagerCloneable internal _authority;
33
52
 
53
+ /// @dev the authorization contract used for initial access control
54
+ IAuthorization internal _authorization;
55
+
34
56
  /// @dev stores the deployer address and allows to create initializers
35
57
  /// that are restricted to the deployer address.
36
58
  address internal _deployer;
37
59
 
60
+ /// @dev the linked NFT ID
61
+ NftId internal _linkedNftId;
62
+
38
63
  /// @dev store role info per role id
39
64
  mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
40
65
 
@@ -65,55 +90,128 @@ contract AccessAdmin is
65
90
  /// @dev temporary dynamic functions array
66
91
  bytes4[] private _functions;
67
92
 
93
+ // @dev target type specific role id counters
94
+ mapping(TargetType => uint64) internal _nextRoleId;
95
+
68
96
  modifier onlyDeployer() {
69
97
  // special case for cloned AccessAdmin contracts
70
- // IMPORTANT cloning and _initializeAuthority needs to be done in a single transaction
98
+ // IMPORTANT cloning and initialize authority needs to be done in a single transaction
71
99
  if (_deployer == address(0)) {
72
100
  _deployer = msg.sender;
73
101
  }
74
102
 
75
103
  if (msg.sender != _deployer) {
76
- revert ErrorNotDeployer();
104
+ revert ErrorAccessAdminNotDeployer();
77
105
  }
78
106
  _;
79
107
  }
80
108
 
81
- modifier onlyRoleAdmin(RoleId roleId) {
82
- if (!roleExists(roleId)) {
83
- revert ErrorRoleUnknown(roleId);
84
- }
85
109
 
86
- if (!hasAdminRole(msg.sender, roleId)) {
87
- revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
110
+ modifier onlyExistingRole(
111
+ RoleId roleId,
112
+ bool onlyActiveRole,
113
+ bool allowLockedRoles
114
+ )
115
+ {
116
+ if (!allowLockedRoles) {
117
+ _checkRoleExists(roleId, onlyActiveRole);
88
118
  }
89
119
  _;
90
120
  }
91
121
 
92
- modifier onlyRoleMember(RoleId roleId) {
93
- if (!hasRole(msg.sender, roleId)) {
94
- revert ErrorNotRoleOwner(roleId);
95
- }
96
- _;
97
- }
98
122
 
99
- modifier onlyExistingRole(RoleId roleId) {
100
- _checkRoleId(roleId);
123
+ modifier onlyExistingTarget(address target) {
124
+ _checkTargetExists(target);
101
125
  _;
102
126
  }
103
127
 
104
- modifier onlyExistingTarget(address target) {
105
- _checkTarget(target);
106
- _;
128
+ //-------------- initialization functions ------------------------------//
129
+
130
+ // event LogAccessAdminDebug(string message);
131
+
132
+ /// @dev Initializes this admin with the provided accessManager (and authorization specification).
133
+ /// Internally initializes access manager with this admin and creates basic role setup.
134
+ function initialize(
135
+ address authority,
136
+ string memory adminName
137
+ )
138
+ public
139
+ initializer()
140
+ {
141
+ __AccessAdmin_init(authority, adminName);
107
142
  }
108
143
 
109
- constructor() {
110
- _deployer = msg.sender;
111
- _authority = new AccessManagerCloneable();
144
+
145
+ function __AccessAdmin_init(
146
+ address authority,
147
+ string memory adminName
148
+ )
149
+ internal
150
+ onlyInitializing()
151
+ onlyDeployer()
152
+ {
153
+ // checks
154
+ // check authority is contract
155
+ if (!ContractLib.isContract(authority)) {
156
+ revert ErrorAccessAdminAuthorityNotContract(authority);
157
+ }
158
+
159
+ // check name not empty
160
+ if (bytes(adminName).length == 0) {
161
+ revert ErrorAccessAdminAccessManagerEmptyName();
162
+ }
163
+
164
+ _authority = AccessManagerCloneable(authority);
112
165
  _authority.initialize(address(this));
113
166
 
114
- _setAuthority(address(_authority)); // set authority for oz access managed
115
- _createAdminAndPublicRoles();
116
- _disableInitializers();
167
+ // delayed additional check for authority after its initialization
168
+ if (!ContractLib.isAuthority(authority)) {
169
+ revert ErrorAccessAdminAccessManagerNotAccessManager(authority);
170
+ }
171
+
172
+ // effects
173
+ // set and initialize this access manager contract as
174
+ // the admin (ADMIN_ROLE) of the provided authority
175
+ __AccessManaged_init(authority);
176
+
177
+ // set name for logging
178
+ _adminName = adminName;
179
+
180
+ // set initial linked NFT ID to zero
181
+ _linkedNftId = NftIdLib.zero();
182
+
183
+ // create admin and public roles
184
+ _initializeAdminAndPublicRoles();
185
+ }
186
+
187
+
188
+ function getRelease() public view virtual returns (VersionPart release) {
189
+ return _authority.getRelease();
190
+ }
191
+
192
+
193
+ function getRegistry() public view returns (IRegistry registry) {
194
+ return _authority.getRegistry();
195
+ }
196
+
197
+
198
+ function getLinkedNftId() external view returns (NftId linkedNftId) {
199
+ return _linkedNftId;
200
+ }
201
+
202
+
203
+ function getLinkedOwner() external view returns (address linkedOwner) {
204
+ return getRegistry().ownerOf(_linkedNftId);
205
+ }
206
+
207
+
208
+ function getAuthorization() public view returns (IAuthorization authorization) {
209
+ return _authorization;
210
+ }
211
+
212
+
213
+ function isLocked() public view returns (bool locked) {
214
+ return _authority.isLocked();
117
215
  }
118
216
 
119
217
  //--- view functions for roles ------------------------------------------//
@@ -134,16 +232,39 @@ contract AccessAdmin is
134
232
  return RoleId.wrap(_authority.PUBLIC_ROLE());
135
233
  }
136
234
 
235
+ function roleExists(Str roleName) public view returns (bool exists) {
236
+ // special case admin adn public roles always exist
237
+ if (roleName == StrLib.toStr(ADMIN_ROLE_NAME()) || roleName == StrLib.toStr(PUBLIC_ROLE_NAME())) {
238
+ return true;
239
+ }
240
+
241
+ // check if a role id for the name exists
242
+ RoleId roleId = _roleForName[roleName].roleId;
243
+ if (roleId.eqz()) {
244
+ return false;
245
+ }
246
+
247
+ return _roleInfo[roleId].createdAt.gtz();
248
+ }
249
+
137
250
  function roleExists(RoleId roleId) public view returns (bool exists) {
138
251
  return _roleInfo[roleId].createdAt.gtz();
139
252
  }
140
253
 
141
- function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
254
+ function getRoleForName(string memory name) public view returns (RoleId roleId) {
255
+ return _roleForName[StrLib.toStr(name)].roleId;
256
+ }
257
+
258
+ function getRoleInfo(RoleId roleId) public view returns (RoleInfo memory) {
142
259
  return _roleInfo[roleId];
143
260
  }
144
261
 
145
- function getRoleForName(Str name) external view returns (RoleNameInfo memory) {
146
- return _roleForName[name];
262
+ function isRoleActive(RoleId roleId) external view returns (bool isActive) {
263
+ return _roleInfo[roleId].pausedAt > TimestampLib.blockTimestamp();
264
+ }
265
+
266
+ function isRoleCustom(RoleId roleId) external view returns (bool isActive) {
267
+ return _roleInfo[roleId].roleType == RoleType.Custom;
147
268
  }
148
269
 
149
270
  function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
@@ -154,20 +275,20 @@ contract AccessAdmin is
154
275
  return _roleMembers[roleId].at(idx);
155
276
  }
156
277
 
157
- function hasRole(address account, RoleId roleId) public view returns (bool) {
278
+ function isRoleMember(RoleId roleId, address account) public view returns (bool) {
158
279
  (bool isMember, ) = _authority.hasRole(
159
280
  RoleId.unwrap(roleId),
160
281
  account);
161
282
  return isMember;
162
283
  }
163
284
 
164
- function hasAdminRole(address account, RoleId roleId)
285
+ function isRoleAdmin(RoleId roleId, address account)
165
286
  public
166
287
  virtual
167
288
  view
168
289
  returns (bool)
169
290
  {
170
- return hasRole(account, _roleInfo[roleId].adminRoleId);
291
+ return isRoleMember(_roleInfo[roleId].adminRoleId, account);
171
292
  }
172
293
 
173
294
  //--- view functions for targets ----------------------------------------//
@@ -219,245 +340,275 @@ contract AccessAdmin is
219
340
  selector.toBytes4()));
220
341
  }
221
342
 
222
- function isAccessManaged(address target) public view returns (bool) {
223
- if (!_isContract(target)) {
224
- return false;
225
- }
226
-
227
- (bool success, ) = target.staticcall(
228
- abi.encodeWithSelector(
229
- AccessManagedUpgradeable.authority.selector));
230
-
231
- return success;
232
- }
233
-
234
- function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
235
- (can, ) = _authority.canCall(caller, target, selector.toBytes4());
236
- }
237
-
238
- function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
239
- return RoleInfo({
240
- name: StrLib.toStr(name),
241
- adminRoleId: adminRoleId,
242
- roleType: roleType,
243
- maxMemberCount: maxMemberCount,
244
- createdAt: TimestampLib.blockTimestamp()
245
- });
246
- }
247
-
248
- function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
249
- return FunctionInfo({
250
- name: StrLib.toStr(name),
251
- selector: SelectorLib.toSelector(selector),
252
- createdAt: TimestampLib.blockTimestamp()});
253
- }
254
-
255
343
  function deployer() public view returns (address) {
256
344
  return _deployer;
257
345
  }
258
346
 
259
347
  //--- internal/private functions -------------------------------------------------//
260
348
 
261
- function _authorizeTargetFunctions(
262
- address target,
263
- RoleId roleId,
264
- FunctionInfo[] memory functions
265
- )
266
- internal
267
- {
268
- if (roleId == getAdminRole()) {
269
- revert ErrorAuthorizeForAdminRoleInvalid(target);
270
- }
271
-
272
- bool addFunctions = true;
273
- bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
274
-
275
- // apply authz via access manager
276
- _grantRoleAccessToFunctions(target, roleId, functionSelectors);
277
- }
278
-
279
- function _unauthorizeTargetFunctions(
280
- address target,
281
- FunctionInfo[] memory functions
282
- )
283
- internal
284
- {
285
- bool addFunctions = false;
286
- bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
287
- _grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
288
- }
289
-
290
- function _processFunctionSelectors(
291
- address target,
292
- FunctionInfo[] memory functions,
293
- bool addFunctions
294
- )
295
- internal
296
- returns (
297
- bytes4[] memory functionSelectors
298
- )
299
- {
300
- uint256 n = functions.length;
301
- functionSelectors = new bytes4[](n);
302
- FunctionInfo memory func;
303
- Selector selector;
304
-
305
- for (uint256 i = 0; i < n; i++) {
306
- func = functions[i];
307
- selector = func.selector;
308
-
309
- // add function selector to target selector set if not in set
310
- if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
311
- else { SelectorSetLib.remove(_targetFunctions[target], selector); }
312
-
313
- // set function name
314
- _functionInfo[target][selector] = func;
315
-
316
- // add bytes4 selector to function selector array
317
- functionSelectors[i] = selector.toBytes4();
318
- }
319
- }
320
-
321
- function _initializeAuthority(
322
- address authorityAddress
323
- )
324
- internal
325
- virtual
326
- onlyInitializing()
327
- onlyDeployer()
328
- {
329
- if (authority() != address(0)) {
330
- revert ErrorAuthorityAlreadySet();
349
+ function _linkToNftOwnable(address registerable) internal {
350
+ if (!getRegistry().isRegistered(registerable)) {
351
+ revert ErrorAccessAdminNotRegistered(registerable);
331
352
  }
332
353
 
333
- _authority = AccessManagerCloneable(authorityAddress);
334
- __AccessManaged_init(address(_authority));
354
+ _linkedNftId = getRegistry().getNftIdForAddress(registerable);
335
355
  }
336
356
 
337
-
338
357
  function _initializeAdminAndPublicRoles()
339
358
  internal
340
359
  virtual
341
360
  onlyInitializing()
342
361
  {
343
- _createAdminAndPublicRoles();
344
- }
345
-
346
-
347
- /// @dev internal setup function that can be used in both constructor and initializer.
348
- function _createAdminAndPublicRoles()
349
- internal
350
- {
351
- RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
352
- FunctionInfo[] memory functions;
353
-
354
362
  // setup admin role
355
363
  _createRoleUnchecked(
356
364
  ADMIN_ROLE(),
357
- toRole({
365
+ AccessAdminLib.toRole({
358
366
  adminRoleId: ADMIN_ROLE(),
359
367
  roleType: RoleType.Contract,
360
368
  maxMemberCount: 1,
361
- name: ADMIN_ROLE_NAME}));
369
+ name: ADMIN_ROLE_NAME()}));
362
370
 
363
371
  // add this contract as admin role member
364
- _roleMembers[adminRoleId].add(address(this));
372
+ _roleMembers[
373
+ RoleIdLib.toRoleId(_authority.ADMIN_ROLE())].add(address(this));
365
374
 
366
375
  // setup public role
367
376
  _createRoleUnchecked(
368
377
  PUBLIC_ROLE(),
369
- toRole({
378
+ AccessAdminLib.toRole({
370
379
  adminRoleId: ADMIN_ROLE(),
371
- roleType: RoleType.Gif,
380
+ roleType: RoleType.Core,
372
381
  maxMemberCount: type(uint32).max,
373
- name: PUBLIC_ROLE_NAME}));
382
+ name: PUBLIC_ROLE_NAME()}));
374
383
  }
375
384
 
376
- /// @dev check if target exists and reverts if it doesn't
377
- function _checkTarget(address target)
385
+ // TODO cleanup
386
+ // function _createTargetWithRole(
387
+ // address target,
388
+ // string memory targetName,
389
+ // RoleId targetRoleId
390
+ // )
391
+ // internal
392
+ // {
393
+ // _createTarget(target, targetName, true, false);
394
+ // _grantRoleToAccount(targetRoleId, target);
395
+ // }
396
+
397
+ // TODO refactor / cleanup
398
+ event LogAccessAdminDebugTarget(string name, address target, RoleId roleId, RoleId authorizedRoleId);
399
+
400
+ function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
401
+ internal
402
+ {
403
+ RoleId authorizedRoleId = _toAuthorizedRoleId(authorization, roleId);
404
+ address getTargetAddress = getTargetForName(target);
405
+ emit LogAccessAdminDebugTarget(target.toString(), getTargetAddress, roleId, authorizedRoleId);
406
+
407
+ _authorizeTargetFunctions(
408
+ getTargetForName(target),
409
+ authorizedRoleId,
410
+ authorization.getAuthorizedFunctions(
411
+ target,
412
+ roleId),
413
+ true);
414
+ }
415
+
416
+ function _toAuthorizedRoleId(IAuthorization authorization, RoleId roleId)
378
417
  internal
418
+ returns (RoleId authorizedRoleId)
379
419
  {
380
- if (_targetInfo[target].createdAt.eqz()) {
381
- revert ErrorTargetUnknown(target);
420
+ // special case for service roles (service roles have predefined role ids)
421
+ if (roleId.isServiceRole()) {
422
+
423
+ // create service role if missing
424
+ if (!roleExists(roleId)) {
425
+ _createRole(
426
+ roleId,
427
+ AccessAdminLib.toRole(
428
+ ADMIN_ROLE(),
429
+ RoleType.Contract,
430
+ 1,
431
+ authorization.getRoleName(roleId)));
432
+ }
433
+
434
+ return roleId;
382
435
  }
436
+
437
+ string memory roleName = authorization.getRoleInfo(roleId).name.toString();
438
+ return authorizedRoleId = getRoleForName(roleName);
383
439
  }
384
440
 
441
+ function _authorizeTargetFunctions(
442
+ address target,
443
+ RoleId roleId,
444
+ FunctionInfo[] memory functions,
445
+ bool addFunctions
446
+ )
447
+ internal
448
+ {
449
+ if (addFunctions && roleId == getAdminRole()) {
450
+ revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
451
+ }
452
+
453
+ // apply authz via access manager
454
+ _grantRoleAccessToFunctions(
455
+ target,
456
+ roleId,
457
+ functions,
458
+ addFunctions); // add functions
459
+ }
460
+
461
+ // function _unauthorizeTargetFunctions(
462
+ // address target,
463
+ // FunctionInfo[] memory functions
464
+ // )
465
+ // internal
466
+ // {
467
+ // _grantRoleAccessToFunctions(
468
+ // target,
469
+ // getAdminRole(),
470
+ // functions,
471
+ // false); // addFunctions
472
+ // }
473
+
474
+ // function _processFunctionSelectors(
475
+ // address target,
476
+ // FunctionInfo[] memory functions,
477
+ // bool addFunctions
478
+ // )
479
+ // internal
480
+ // onlyExistingTarget(target)
481
+ // returns (
482
+ // bytes4[] memory functionSelectors,
483
+ // string[] memory functionNames
484
+ // )
485
+ // {
486
+ // uint256 n = functions.length;
487
+ // functionSelectors = new bytes4[](n);
488
+ // functionNames = new string[](n);
489
+ // FunctionInfo memory func;
490
+ // Selector selector;
491
+
492
+ // for (uint256 i = 0; i < n; i++) {
493
+ // func = functions[i];
494
+ // selector = func.selector;
495
+
496
+ // // add function selector to target selector set if not in set
497
+ // if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
498
+ // else { SelectorSetLib.remove(_targetFunctions[target], selector); }
499
+
500
+ // // set function name
501
+ // _functionInfo[target][selector] = func;
502
+
503
+ // // add bytes4 selector to function selector array
504
+ // functionSelectors[i] = selector.toBytes4();
505
+ // functionNames[i] = func.name.toString();
506
+ // }
507
+ // }
508
+
385
509
  /// @dev grant the specified role access to all functions in the provided selector list
386
510
  function _grantRoleAccessToFunctions(
387
511
  address target,
388
512
  RoleId roleId,
389
- bytes4[] memory functionSelectors
513
+ FunctionInfo[] memory functions,
514
+ bool addFunctions
390
515
  )
391
516
  internal
517
+ onlyExistingTarget(target)
518
+ onlyExistingRole(roleId, true, !addFunctions)
392
519
  {
393
520
  _authority.setTargetFunctionRole(
394
521
  target,
395
- functionSelectors,
522
+ AccessAdminLib.getSelectors(functions),
396
523
  RoleId.unwrap(roleId));
397
524
 
398
- // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
525
+ // update function set and log function grantings
526
+ for (uint256 i = 0; i < functions.length; i++) {
527
+ _updateFunctionAccess(
528
+ target,
529
+ roleId,
530
+ functions[i],
531
+ addFunctions);
532
+ }
399
533
  }
400
534
 
535
+
536
+ function _updateFunctionAccess(
537
+ address target,
538
+ RoleId roleId,
539
+ FunctionInfo memory func,
540
+ bool addFunction
541
+ )
542
+ internal
543
+ {
544
+ // update functions info
545
+ Selector selector = func.selector;
546
+ _functionInfo[target][selector] = func;
547
+
548
+ // update function sets
549
+ if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
550
+ else { SelectorSetLib.remove(_targetFunctions[target], selector); }
551
+
552
+ // logging
553
+ emit LogAccessAdminFunctionGranted(
554
+ _adminName,
555
+ target,
556
+ string(abi.encodePacked(
557
+ func.name.toString(),
558
+ "(): ",
559
+ _getRoleName(roleId))));
560
+ }
561
+
562
+
401
563
  /// @dev grant the specified role to the provided account
402
564
  function _grantRoleToAccount(RoleId roleId, address account)
403
565
  internal
566
+ onlyExistingRole(roleId, true, false)
404
567
  {
405
- _checkRoleId(roleId);
406
-
407
568
  // check max role members will not be exceeded
408
569
  if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
409
- revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
570
+ revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
410
571
  }
411
572
 
412
573
  // check account is contract for contract role
413
- // TODO implement
414
- if (_roleInfo[roleId].roleType == RoleType.Contract) {
574
+ if (
575
+ _roleInfo[roleId].roleType == RoleType.Contract &&
576
+ !ContractLib.isContract(account) // will fail in account's constructor
577
+ ) {
578
+ revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
415
579
  }
416
580
 
581
+ // effects
417
582
  _roleMembers[roleId].add(account);
418
583
  _authority.grantRole(
419
584
  RoleId.unwrap(roleId),
420
585
  account,
421
586
  0);
422
587
 
423
- // indirect logging: rely on OpenZeppelin log RoleGranted
588
+ emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
424
589
  }
425
590
 
426
591
  /// @dev revoke the specified role from the provided account
427
592
  function _revokeRoleFromAccount(RoleId roleId, address account)
428
593
  internal
594
+ onlyExistingRole(roleId, false, false)
429
595
  {
430
- _checkRoleId(roleId);
431
596
 
432
597
  // check role removal is permitted
433
598
  if (_roleInfo[roleId].roleType == RoleType.Contract) {
434
- revert ErrorRoleRemovalDisabled(roleId);
599
+ revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
435
600
  }
436
601
 
602
+ // effects
437
603
  _roleMembers[roleId].remove(account);
438
604
  _authority.revokeRole(
439
605
  RoleId.unwrap(roleId),
440
606
  account);
441
607
 
442
- // indirect logging: rely on OpenZeppelin log RoleGranted
608
+ emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
443
609
  }
444
610
 
445
611
 
446
- function _checkRoleId(RoleId roleId)
447
- internal
448
- {
449
- if (_roleInfo[roleId].createdAt.eqz()) {
450
- revert ErrorRoleUnknown(roleId);
451
- }
452
-
453
- uint64 roleIdInt = RoleId.unwrap(roleId);
454
- if (roleIdInt == _authority.ADMIN_ROLE()
455
- || roleIdInt == _authority.PUBLIC_ROLE())
456
- {
457
- revert ErrorRoleIsLocked(roleId);
458
- }
459
- }
460
-
461
612
  /// @dev Creates a role based on the provided parameters.
462
613
  /// Checks that the provided role and role id and role name not already used.
463
614
  function _createRole(
@@ -466,32 +617,79 @@ contract AccessAdmin is
466
617
  )
467
618
  internal
468
619
  {
469
- // check role does not yet exist
470
- if(roleExists(roleId)) {
471
- revert ErrorRoleAlreadyCreated(
472
- roleId,
473
- _roleInfo[roleId].name.toString());
474
- }
620
+ AccessAdminLib.checkRoleCreation(this, roleId, info);
621
+ _createRoleUnchecked(roleId, info);
622
+ }
475
623
 
476
- // check admin role exists
477
- if(!roleExists(info.adminRoleId)) {
478
- revert ErrorRoleAdminNotExisting(info.adminRoleId);
479
- }
480
624
 
481
- // check role name is not empty
482
- if(info.name.length() == 0) {
483
- revert ErrorRoleNameEmpty(roleId);
625
+ /// @dev Activates or deactivates role.
626
+ /// The role activ property is indirectly controlled over the pausedAt timestamp.
627
+ function _setRoleActive(RoleId roleId, bool active)
628
+ internal
629
+ {
630
+ if (active) {
631
+ _roleInfo[roleId].pausedAt = TimestampLib.max();
632
+ } else {
633
+ _roleInfo[roleId].pausedAt = TimestampLib.blockTimestamp();
484
634
  }
635
+ }
485
636
 
486
- // check role name is not used for another role
487
- if(_roleForName[info.name].exists) {
488
- revert ErrorRoleNameAlreadyExists(
489
- roleId,
490
- info.name.toString(),
491
- _roleForName[info.name].roleId);
492
- }
493
637
 
494
- _createRoleUnchecked(roleId, info);
638
+ function _createManagedTarget(
639
+ address target,
640
+ string memory targetName,
641
+ TargetType targetType
642
+ )
643
+ internal
644
+ returns (RoleId contractRoleId)
645
+ {
646
+ return _createTarget(target, targetName, targetType, true);
647
+ }
648
+
649
+
650
+ function _createUncheckedTarget(
651
+ address target,
652
+ string memory targetName,
653
+ TargetType targetType
654
+ )
655
+ internal
656
+ {
657
+ _createTarget(target, targetName, targetType, false);
658
+ }
659
+
660
+
661
+ function _createTarget(
662
+ address target,
663
+ string memory targetName,
664
+ TargetType targetType,
665
+ bool checkAuthority
666
+ )
667
+ private
668
+ returns (RoleId contractRoleId)
669
+ {
670
+ // checks
671
+ AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
672
+
673
+ // effects
674
+ contractRoleId = _createTargetUnchecked(
675
+ target,
676
+ targetName,
677
+ targetType,
678
+ checkAuthority);
679
+
680
+ // deal with token handler, if applicable
681
+ (
682
+ address tokenHandler,
683
+ string memory tokenHandlerName
684
+ ) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
685
+
686
+ if (tokenHandler != address(0)) {
687
+ _createTargetUnchecked(
688
+ tokenHandler,
689
+ tokenHandlerName,
690
+ targetType,
691
+ checkAuthority);
692
+ }
495
693
  }
496
694
 
497
695
 
@@ -503,6 +701,7 @@ contract AccessAdmin is
503
701
  {
504
702
  // create role info
505
703
  info.createdAt = TimestampLib.blockTimestamp();
704
+ info.pausedAt = TimestampLib.max();
506
705
  _roleInfo[roleId] = info;
507
706
 
508
707
  // create role name info
@@ -513,79 +712,164 @@ contract AccessAdmin is
513
712
  // add role to list of roles
514
713
  _roleIds.push(roleId);
515
714
 
516
- emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
715
+ emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
517
716
  }
518
717
 
519
-
520
- function _createTarget(
718
+ /// @dev Creates a new target and a corresponding contract role.
719
+ /// The function assigns the role to the target and logs the creation.
720
+ function _createTargetUnchecked(
521
721
  address target,
522
722
  string memory targetName,
523
- bool checkAuthority,
524
- bool custom
723
+ TargetType targetType,
724
+ bool managed
525
725
  )
526
726
  internal
527
- nonReentrant()
727
+ returns (RoleId targetRoleId)
528
728
  {
529
- // check target does not yet exist
530
- if(targetExists(target)) {
531
- revert ErrorTargetAlreadyCreated(
532
- target,
533
- _targetInfo[target].name.toString());
534
- }
535
-
536
- // check target name is not empty
537
- Str name = StrLib.toStr(targetName);
538
- if(name.length() == 0) {
539
- revert ErrorTargetNameEmpty(target);
540
- }
541
-
542
- // check target name is not used for another target
543
- if( _targetForName[name] != address(0)) {
544
- revert ErrorTargetNameAlreadyExists(
545
- target,
546
- targetName,
547
- _targetForName[name]);
548
- }
549
-
550
- // check target is an access managed contract
551
- if (!isAccessManaged(target)) {
552
- revert ErrorTargetNotAccessManaged(target);
553
- }
554
-
555
- // check target shares authority with this contract
556
- if (checkAuthority) {
557
- address targetAuthority = AccessManagedUpgradeable(target).authority();
558
- if (targetAuthority != authority()) {
559
- revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
560
- }
729
+ // create target role (if not existing)
730
+ string memory roleName;
731
+ (targetRoleId, roleName) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
732
+
733
+ if (!roleExists(targetRoleId)) {
734
+ _createRole(
735
+ targetRoleId,
736
+ AccessAdminLib.toRole(ADMIN_ROLE(), IAccess.RoleType.Contract, 1, roleName));
561
737
  }
562
738
 
563
739
  // create target info
740
+ Str name = StrLib.toStr(targetName);
564
741
  _targetInfo[target] = TargetInfo({
565
742
  name: name,
566
- isCustom: custom,
743
+ targetType: targetType,
744
+ roleId: targetRoleId,
567
745
  createdAt: TimestampLib.blockTimestamp()
568
746
  });
569
747
 
570
748
  // create name to target mapping
571
749
  _targetForName[name] = target;
572
750
 
573
- // add role to list of roles
751
+ // add target to list of targets
574
752
  _targets.push(target);
575
753
 
576
- emit LogTargetCreated(target, targetName);
754
+ // grant contract role to target
755
+ _grantRoleToAccount(targetRoleId, target);
756
+
757
+ emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
577
758
  }
578
759
 
579
- function _isContract(address target)
760
+
761
+ function _getOrCreateTargetRoleIdAndName(
762
+ address target,
763
+ string memory targetName,
764
+ TargetType targetType
765
+ )
580
766
  internal
581
- view
582
- returns (bool)
767
+ returns (
768
+ RoleId roleId,
769
+ string memory roleName
770
+ )
583
771
  {
584
- uint256 size;
585
- assembly {
586
- size := extcodesize(target)
772
+ // get roleId
773
+ if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
774
+ roleId = AccessAdminLib.getServiceRoleId(target, targetType);
775
+ } else {
776
+ roleId = AccessAdminLib.getTargetRoleId(target, targetType, _nextRoleId[targetType]);
777
+
778
+ // increment target type specific role id counter
779
+ _nextRoleId[targetType]++;
587
780
  }
588
- return size > 0;
781
+
782
+ // create role name
783
+ roleName = AccessAdminLib.toRoleName(targetName);
784
+ }
785
+
786
+
787
+ function _setTargetLocked(address target, bool locked)
788
+ internal
789
+ onlyExistingTarget(target)
790
+ {
791
+ _authority.setTargetClosed(target, locked);
589
792
  }
590
-
793
+
794
+
795
+ function _getRoleName(RoleId roleId) internal view returns (string memory) {
796
+ if (roleExists(roleId)) {
797
+ return _roleInfo[roleId].name.toString();
798
+ }
799
+ return "<unknown-role>";
800
+ }
801
+
802
+
803
+ function _checkAuthorization(
804
+ address authorization,
805
+ ObjectType expectedDomain,
806
+ VersionPart expectedRelease,
807
+ bool checkAlreadyInitialized
808
+ )
809
+ internal
810
+ view
811
+ {
812
+ AccessAdminLib.checkAuthorization(
813
+ address(_authorization),
814
+ authorization,
815
+ expectedDomain,
816
+ expectedRelease,
817
+ checkAlreadyInitialized);
818
+ }
819
+
820
+
821
+ function _checkRoleExists(
822
+ RoleId roleId,
823
+ bool onlyActiveRole
824
+ )
825
+ internal
826
+ view
827
+ {
828
+ if (!roleExists(roleId)) {
829
+ revert ErrorAccessAdminRoleUnknown(roleId);
830
+ }
831
+
832
+ uint64 roleIdInt = RoleId.unwrap(roleId);
833
+ if (roleIdInt == _authority.ADMIN_ROLE()) {
834
+ revert ErrorAccessAdminRoleIsLocked(roleId);
835
+ }
836
+
837
+ // check if role is disabled
838
+ if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
839
+ revert ErrorAccessAdminRoleIsPaused(roleId);
840
+ }
841
+ }
842
+
843
+
844
+
845
+ /// @dev check if target exists and reverts if it doesn't
846
+ function _checkTargetExists(
847
+ address target
848
+ )
849
+ internal
850
+ view
851
+ {
852
+ // check not yet created
853
+ if (!targetExists(target)) {
854
+ revert ErrorAccessAdminTargetNotCreated(target);
855
+ }
856
+ }
857
+
858
+ // TODO cleanup
859
+ // function _checkIsRegistered(
860
+ // address registry,
861
+ // address target,
862
+ // ObjectType expectedType
863
+ // )
864
+ // internal
865
+ // view
866
+ // {
867
+ // AccessAdminLib.checkIsRegistered(registry, target, expectedType);
868
+ // }
869
+
870
+ // function _checkRegistry(address registry) internal view {
871
+ // if (!ContractLib.isRegistry(registry)) {
872
+ // revert ErrorAccessAdminNotRegistry(registry);
873
+ // }
874
+ // }
591
875
  }