@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2273b3-211

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 (578) hide show
  1. package/README.md +59 -9
  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 +1379 -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 +542 -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 +211 -270
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -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 +589 -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 +396 -265
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -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 +244 -63
  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 +589 -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 +589 -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 +589 -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 +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -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 +161 -73
  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 +190 -211
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1462 -241
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1044 -316
  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 +650 -529
  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 +1 -1
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +48 -7
  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/IBundle.sol/IBundle.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  110. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -126
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -398
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +331 -204
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
  136. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  137. package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  167. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
  170. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  179. package/artifacts/contracts/product/Product.sol/Product.json +258 -536
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -55
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  192. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  194. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/Registry.sol/Registry.json +585 -112
  196. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +449 -422
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +48 -7
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +82 -16
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +576 -516
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -113
  218. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  220. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  228. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  230. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
  232. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
  234. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  236. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  238. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  240. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  242. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  244. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +112 -351
  251. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  265. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  266. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +137 -139
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
  277. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  279. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  280. package/artifacts/contracts/staking/Staking.sol/Staking.json +216 -375
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +48 -7
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +126 -95
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -63
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +183 -164
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +181 -135
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  295. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  301. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  303. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  305. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  307. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  309. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  311. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  313. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  315. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  317. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  319. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  321. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  323. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  325. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +181 -14
  327. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  329. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  331. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  333. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  335. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  337. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  339. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  341. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  343. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -2
  345. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  346. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  347. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  349. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  351. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  352. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  353. package/contracts/accounting/AccountingService.sol +262 -0
  354. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  355. package/contracts/accounting/IAccountingService.sol +45 -0
  356. package/contracts/{shared → authorization}/AccessAdmin.sol +310 -380
  357. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  358. package/contracts/authorization/Authorization.sol +337 -0
  359. package/contracts/authorization/IAccess.sol +49 -0
  360. package/contracts/{shared → authorization}/IAccessAdmin.sol +37 -62
  361. package/contracts/authorization/IAuthorization.sol +74 -0
  362. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -6
  363. package/contracts/{registry → authorization}/ServiceAuthorization.sol +41 -25
  364. package/contracts/distribution/BasicDistribution.sol +141 -0
  365. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  366. package/contracts/distribution/Distribution.sol +153 -125
  367. package/contracts/distribution/DistributionService.sol +172 -111
  368. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  369. package/contracts/distribution/IDistributionComponent.sol +26 -40
  370. package/contracts/distribution/IDistributionService.sol +42 -22
  371. package/contracts/examples/fire/DamageLevel.sol +59 -0
  372. package/contracts/examples/fire/FirePool.sol +90 -0
  373. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  374. package/contracts/examples/fire/FireProduct.sol +438 -0
  375. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  376. package/contracts/examples/fire/FireUSD.sol +26 -0
  377. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  378. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  379. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  380. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  381. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  382. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  383. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  384. package/contracts/instance/BundleSet.sol +130 -0
  385. package/contracts/instance/IInstance.sol +27 -44
  386. package/contracts/instance/IInstanceService.sol +16 -41
  387. package/contracts/instance/Instance.sol +103 -119
  388. package/contracts/instance/InstanceAdmin.sol +346 -240
  389. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  390. package/contracts/instance/InstanceReader.sol +293 -48
  391. package/contracts/instance/InstanceService.sol +145 -180
  392. package/contracts/instance/InstanceServiceManager.sol +8 -13
  393. package/contracts/instance/InstanceStore.sol +29 -3
  394. package/contracts/instance/RiskSet.sol +118 -0
  395. package/contracts/instance/base/ObjectCounter.sol +1 -2
  396. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  397. package/contracts/instance/base/ObjectSet.sol +77 -0
  398. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  399. package/contracts/instance/module/IBundle.sol +1 -1
  400. package/contracts/instance/module/IComponents.sol +14 -15
  401. package/contracts/instance/module/IDistribution.sol +2 -2
  402. package/contracts/instance/module/IPolicy.sol +26 -25
  403. package/contracts/instance/module/IRisk.sol +3 -0
  404. package/contracts/mock/Dip.sol +1 -1
  405. package/contracts/oracle/BasicOracle.sol +47 -0
  406. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  407. package/contracts/oracle/IOracle.sol +16 -0
  408. package/contracts/oracle/IOracleComponent.sol +2 -1
  409. package/contracts/oracle/IOracleService.sol +2 -1
  410. package/contracts/oracle/Oracle.sol +64 -53
  411. package/contracts/oracle/OracleService.sol +113 -81
  412. package/contracts/oracle/OracleServiceManager.sol +8 -11
  413. package/contracts/pool/BasicPool.sol +175 -0
  414. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  415. package/contracts/pool/BundleService.sol +204 -105
  416. package/contracts/pool/BundleServiceManager.sol +8 -11
  417. package/contracts/pool/IBundleService.sol +31 -22
  418. package/contracts/pool/IPoolComponent.sol +20 -70
  419. package/contracts/pool/IPoolService.sol +90 -75
  420. package/contracts/pool/Pool.sol +209 -163
  421. package/contracts/pool/PoolLib.sol +216 -0
  422. package/contracts/pool/PoolService.sol +546 -241
  423. package/contracts/pool/PoolServiceManager.sol +6 -9
  424. package/contracts/product/ApplicationService.sol +83 -78
  425. package/contracts/product/ApplicationServiceManager.sol +6 -6
  426. package/contracts/product/BasicProduct.sol +51 -0
  427. package/contracts/product/BasicProductAuthorization.sol +56 -0
  428. package/contracts/product/ClaimService.sol +365 -175
  429. package/contracts/product/ClaimServiceManager.sol +6 -6
  430. package/contracts/product/IApplicationService.sol +6 -2
  431. package/contracts/product/IClaimService.sol +44 -8
  432. package/contracts/product/IPolicyService.sol +53 -36
  433. package/contracts/product/IPricingService.sol +10 -10
  434. package/contracts/product/IProductComponent.sol +29 -9
  435. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  436. package/contracts/product/PolicyService.sol +476 -269
  437. package/contracts/product/PolicyServiceLib.sol +65 -0
  438. package/contracts/product/PolicyServiceManager.sol +6 -9
  439. package/contracts/product/PricingService.sol +66 -62
  440. package/contracts/product/PricingServiceManager.sol +6 -9
  441. package/contracts/product/Product.sol +233 -132
  442. package/contracts/product/RiskService.sol +145 -0
  443. package/contracts/product/RiskServiceManager.sol +39 -0
  444. package/contracts/registry/ChainNft.sol +72 -40
  445. package/contracts/registry/IRegistry.sol +74 -32
  446. package/contracts/registry/IRegistryService.sol +3 -10
  447. package/contracts/registry/IRelease.sol +26 -0
  448. package/contracts/registry/ITransferInterceptor.sol +1 -2
  449. package/contracts/registry/Registry.sol +368 -220
  450. package/contracts/registry/RegistryAdmin.sol +238 -219
  451. package/contracts/registry/RegistryService.sol +41 -66
  452. package/contracts/registry/RegistryServiceManager.sol +5 -5
  453. package/contracts/registry/ReleaseAdmin.sol +245 -0
  454. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  455. package/contracts/registry/ReleaseRegistry.sol +511 -0
  456. package/contracts/registry/ServiceAuthorizationV3.sol +107 -60
  457. package/contracts/registry/TokenRegistry.sol +8 -10
  458. package/contracts/shared/Component.sol +74 -128
  459. package/contracts/shared/ComponentService.sol +456 -384
  460. package/contracts/shared/ComponentServiceManager.sol +10 -7
  461. package/contracts/shared/ComponentVerifyingService.sol +29 -18
  462. package/contracts/shared/ContractLib.sol +253 -0
  463. package/contracts/shared/IComponent.sol +8 -17
  464. package/contracts/shared/IComponentService.sol +49 -39
  465. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  466. package/contracts/shared/ILifecycle.sol +3 -1
  467. package/contracts/shared/INftOwnable.sol +2 -0
  468. package/contracts/shared/IPolicyHolder.sol +12 -22
  469. package/contracts/shared/IRegisterable.sol +23 -1
  470. package/contracts/shared/IService.sol +4 -6
  471. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  472. package/contracts/shared/InstanceLinkedComponent.sol +96 -43
  473. package/contracts/shared/KeyValueStore.sol +1 -1
  474. package/contracts/shared/Lifecycle.sol +15 -4
  475. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  476. package/contracts/shared/NftOwnable.sol +31 -11
  477. package/contracts/shared/PolicyHolder.sol +17 -57
  478. package/contracts/shared/Registerable.sol +55 -21
  479. package/contracts/shared/RegistryLinked.sol +9 -14
  480. package/contracts/shared/Service.sol +18 -36
  481. package/contracts/shared/TokenHandler.sol +309 -26
  482. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  483. package/contracts/staking/IStaking.sol +9 -13
  484. package/contracts/staking/IStakingService.sol +24 -9
  485. package/contracts/staking/StakeManagerLib.sol +85 -43
  486. package/contracts/staking/Staking.sol +96 -79
  487. package/contracts/staking/StakingManager.sol +10 -12
  488. package/contracts/staking/StakingReader.sol +21 -33
  489. package/contracts/staking/StakingService.sol +79 -37
  490. package/contracts/staking/StakingServiceManager.sol +8 -7
  491. package/contracts/staking/StakingStore.sol +12 -22
  492. package/contracts/staking/TargetManagerLib.sol +7 -3
  493. package/contracts/type/Amount.sol +27 -5
  494. package/contracts/type/Blocknumber.sol +7 -1
  495. package/contracts/type/ClaimId.sol +6 -1
  496. package/contracts/type/Key32.sol +2 -2
  497. package/contracts/type/Key32Set.sol +62 -0
  498. package/contracts/type/NftId.sol +7 -0
  499. package/contracts/type/ObjectType.sol +89 -27
  500. package/contracts/type/PayoutId.sol +10 -10
  501. package/contracts/type/Referral.sol +1 -0
  502. package/contracts/type/RiskId.sol +35 -4
  503. package/contracts/type/RoleId.sol +75 -94
  504. package/contracts/type/Seconds.sol +21 -1
  505. package/contracts/type/Selector.sol +5 -0
  506. package/contracts/type/StateId.sol +15 -1
  507. package/contracts/type/Timestamp.sol +10 -5
  508. package/contracts/type/UFixed.sol +40 -121
  509. package/contracts/type/Version.sol +18 -6
  510. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  511. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  512. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  513. package/package.json +6 -5
  514. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  516. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  517. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  518. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  520. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  521. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  522. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  523. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  524. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  525. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  526. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  527. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  528. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  529. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
  530. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  531. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  532. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  533. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  534. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  535. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  536. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  537. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  538. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  539. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  540. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  541. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  542. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  543. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  544. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  545. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  546. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  547. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  548. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  549. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  550. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  551. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  552. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  553. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  554. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  555. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  562. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  563. package/contracts/instance/BundleManager.sol +0 -126
  564. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  565. package/contracts/instance/base/ObjectManager.sol +0 -80
  566. package/contracts/instance/module/IAccess.sol +0 -46
  567. package/contracts/product/ProductService.sol +0 -124
  568. package/contracts/product/ProductServiceManager.sol +0 -42
  569. package/contracts/registry/ReleaseManager.sol +0 -503
  570. package/contracts/shared/AccessManagerCustom.sol +0 -741
  571. package/contracts/shared/AccessManagerExtended.sol +0 -481
  572. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  573. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  574. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  575. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  576. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  577. package/contracts/shared/InitializableCustom.sol +0 -177
  578. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,331 +1,437 @@
1
- // SPDX-License-Identifier: Apache-2.0
1
+ // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
- import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IInstance} from "./IInstance.sol";
6
9
 
7
- import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
8
- import {TimestampLib} from "../type/Timestamp.sol";
10
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
11
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
9
12
  import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType} from "../type/ObjectType.sol";
14
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
15
+ import {Str, StrLib} from "../type/String.sol";
16
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
10
18
 
11
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
12
-
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
-
15
- import {IInstance} from "./IInstance.sol";
16
- import {IAccess} from "./module/IAccess.sol";
17
19
 
18
20
  contract InstanceAdmin is
19
- AccessManagedUpgradeable
21
+ AccessAdmin
20
22
  {
21
- using RoleIdLib for RoleId;
22
-
23
- string public constant INSTANCE_ROLE_NAME = "InstanceRole";
24
- string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
25
-
23
+ string public constant INSTANCE_TARGET_NAME = "Instance";
24
+ string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
26
25
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
26
+ string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
27
+ string public constant RISK_SET_TAGET_NAME = "RiskSet";
27
28
 
28
29
  uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
29
- uint32 public constant EXECUTION_DELAY = 0;
30
30
 
31
- mapping(address target => IAccess.Type) _targetType;
32
- mapping(RoleId roleId => IAccess.Type) _roleType;
33
- uint64 _idNext;
31
+ error ErrorInstanceAdminCallerNotInstanceOwner(address caller);
32
+ error ErrorInstanceAdminInstanceAlreadyLocked();
33
+ error ErrorInstanceAdminNotRegistered(address target);
34
+
35
+ error ErrorInstanceAdminAlreadyAuthorized(address target);
36
+ error ErrorInstanceAdminNotComponentRole(RoleId roleId);
37
+ error ErrorInstanceAdminRoleAlreadyExists(RoleId roleId);
38
+ error ErrorInstanceAdminRoleTypeNotContract(RoleId roleId, IAccess.RoleType roleType);
34
39
 
35
- AccessManagerExtendedInitializeable internal _accessManager;
36
- address _instance;
40
+ error ErrorInstanceAdminReleaseMismatch();
41
+ error ErrorInstanceAdminExpectedTargetMissing(string targetName);
42
+
43
+ IInstance internal _instance;
37
44
  IRegistry internal _registry;
45
+ uint64 internal _customIdNext;
38
46
 
39
- // instance owner role is granted upon instance nft minting in callback function
40
- // assume this contract is already a member of ADMIN_ROLE, the only member
41
- function initialize(address instanceAddress) external initializer
42
- {
43
- IInstance instance = IInstance(instanceAddress);
44
- IRegistry registry = instance.getRegistry();
45
- address authority = instance.authority();
47
+ mapping(address target => RoleId roleId) internal _targetRoleId;
48
+ uint64 internal _components;
46
49
 
47
- __AccessManaged_init(authority);
50
+ IAuthorization internal _instanceAuthorization;
48
51
 
49
- _accessManager = AccessManagerExtendedInitializeable(authority);
50
- _instance = instanceAddress;
51
- _registry = registry;
52
- _idNext = CUSTOM_ROLE_ID_MIN;
53
52
 
54
- // minimum configuration required for nft interception
55
- _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
56
- _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Core);
57
- _grantRole(INSTANCE_ROLE(), address(instance));
53
+ modifier onlyInstanceOwner() {
54
+ if(msg.sender != _registry.ownerOf(address(_instance))) {
55
+ revert ErrorInstanceAdminCallerNotInstanceOwner(msg.sender);
56
+ }
57
+ _;
58
+ }
59
+
60
+ /// @dev Only used for master instance admin.
61
+ /// Contracts created via constructor come with disabled initializers.
62
+ constructor(
63
+ address instanceAuthorization
64
+ ) {
65
+ initialize(new AccessManagerCloneable());
66
+
67
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
58
68
 
59
- _createTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, IAccess.Type.Core);
60
- bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](1);
61
- instanceAdminInstanceSelectors[0] = this.transferInstanceOwnerRole.selector;
62
- _setTargetFunctionRole(address(this), instanceAdminInstanceSelectors, INSTANCE_ROLE());
69
+ _disableInitializers();
63
70
  }
64
71
 
65
- //--- Role ------------------------------------------------------//
66
- // ADMIN_ROLE
67
- // assume all core roles are known at deployment time
68
- // assume core roles are set and granted only during instance cloning
69
- // assume core roles are never revoked -> core roles admin is never active after intialization
70
- function createCoreRole(RoleId roleId, string memory name) external restricted() {
71
- _createRole(roleId, name, IAccess.Type.Core);
72
+
73
+ function initialize(
74
+ AccessManagerCloneable clonedAccessManager,
75
+ IRegistry registry,
76
+ VersionPart release
77
+ )
78
+ external
79
+ initializer()
80
+ {
81
+ __AccessAdmin_init(clonedAccessManager);
82
+
83
+ clonedAccessManager.completeSetup(
84
+ address(registry),
85
+ release);
86
+
87
+ _registry = registry;
72
88
  }
73
89
 
74
- // ADMIN_ROLE
75
- // assume gif roles can be revoked
76
- // assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
77
- function createGifRole(RoleId roleId, string memory name, RoleId admin) external restricted() {
78
- _createRole(roleId, name, IAccess.Type.Gif);
79
- _setRoleAdmin(roleId, admin);
90
+ /// @dev Completes the initialization of this instance admin using the provided instance, registry and version.
91
+ /// Important: Initialization of instance admin is only complete after calling this function.
92
+ /// Important: The instance MUST be registered and all instance supporting contracts must be wired to this instance.
93
+ function completeSetup(
94
+ address instance,
95
+ address authorization
96
+ )
97
+ external
98
+ reinitializer(uint64(getRelease().toInt()))
99
+ onlyDeployer()
100
+ {
101
+ _components = 0;
102
+ _customIdNext = CUSTOM_ROLE_ID_MIN;
103
+ _instance = IInstance(instance);
104
+ _instanceAuthorization = IAuthorization(authorization);
105
+
106
+ _checkTargetIsReadyForAuthorization(instance);
107
+
108
+ // check matching releases
109
+ if (_instanceAuthorization.getRelease() != getRelease()) {
110
+ revert ErrorInstanceAdminReleaseMismatch();
111
+ }
112
+
113
+ // create instance role and target
114
+ _setupInstance(instance);
115
+
116
+ // add instance authorization
117
+ _createRoles(_instanceAuthorization);
118
+
119
+ _setupInstanceHelperTargetsWithRoles();
120
+ _createTargetAuthorizations(_instanceAuthorization);
80
121
  }
81
122
 
82
- // INSTANCE_ROLE
83
- // TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
84
- function createRole(string memory roleName, string memory adminName)
123
+
124
+ /// @dev Initializes the authorization for the specified component.
125
+ /// Important: The component MUST be registered.
126
+ function initializeComponentAuthorization(
127
+ IInstanceLinkedComponent component
128
+ )
85
129
  external
86
130
  restricted()
87
- returns(RoleId roleId, RoleId admin)
88
131
  {
89
- (roleId, admin) = _getNextCustomRoleId();
132
+ // checks
133
+ _checkTargetIsReadyForAuthorization(address(component));
90
134
 
91
- _createRole(roleId, roleName, IAccess.Type.Custom);
92
- _createRole(admin, adminName, IAccess.Type.Custom);
135
+ // setup target and role for component (including token handler)
136
+ _setupComponentAndTokenHandler(component);
93
137
 
94
- _setRoleAdmin(roleId, admin);
95
- _setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
138
+ // create other roles
139
+ IAuthorization authorization = component.getAuthorization();
140
+ _createRoles(authorization);
141
+ _createTargetAuthorizations(authorization);
96
142
  }
97
143
 
98
- // ADMIN_ROLE
99
- // assume used by instance service only during instance cloning
100
- // assume used only by this.createRole(), this.createGifRole() afterwards
101
- function setRoleAdmin(RoleId roleId, RoleId admin) public restricted() {
102
- _setRoleAdmin(roleId, admin);
144
+ // create instance role and target
145
+ function _setupInstance(address instance) internal {
146
+ // create instance role
147
+ RoleId instanceRoleId = _instanceAuthorization.getTargetRole(
148
+ _instanceAuthorization.getMainTarget());
149
+
150
+ _createRole(
151
+ instanceRoleId,
152
+ _instanceAuthorization.getRoleInfo(instanceRoleId));
153
+
154
+ // create instance target
155
+ _createTarget(
156
+ instance,
157
+ _instanceAuthorization.getMainTargetName(),
158
+ true, // checkAuthority
159
+ false); // custom
160
+
161
+ // assign instance role to instance
162
+ _grantRoleToAccount(
163
+ instanceRoleId,
164
+ instance);
103
165
  }
104
166
 
105
- // INSTANCE_ROLE
106
- function transferInstanceOwnerRole(address from, address to) external restricted() {
107
- // temp pre transfer checks
108
- assert(_getRoleMembers(INSTANCE_ROLE()) == 1);
109
- assert(_hasRole(INSTANCE_ROLE(), _instance));
110
- assert(_getRoleAdmin(INSTANCE_OWNER_ROLE()).toInt() == ADMIN_ROLE().toInt());
111
- if(from != address(0)) { // nft transfer
112
- assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);
113
- } else { // nft minting
114
- assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 0);
115
- }
167
+ /// @dev Creates a custom role
168
+ // TODO implement
169
+ // function createRole()
170
+ // external
171
+ // restricted()
172
+ // {
116
173
 
117
- // transfer
118
- assert(from != to);
119
- _grantRole(INSTANCE_OWNER_ROLE(), to);
120
- if(from != address(0)) { // nft transfer
121
- _revokeRole(INSTANCE_OWNER_ROLE(), from);
122
- }
174
+ // }
123
175
 
124
- // temp post transfer checks
125
- assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);// temp
126
- assert(_hasRole(INSTANCE_OWNER_ROLE(), to));
176
+ /// @dev Grants the provided role to the specified account
177
+ function grantRole(
178
+ RoleId roleId,
179
+ address account)
180
+ external
181
+ restricted()
182
+ {
183
+ _grantRoleToAccount(roleId, account);
127
184
  }
128
185
 
129
- //--- Target ------------------------------------------------------//
130
- // ADMIN_ROLE
131
- // assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
132
- function createCoreTarget(address target, string memory name) external restricted() {
133
- _createTarget(target, name, IAccess.Type.Core);
134
- }
135
186
 
136
- // INSTANCE_SERVICE_ROLE
137
- function createGifTarget(address target, string memory name) external restricted()
187
+ function setInstanceLocked(bool locked)
188
+ external
189
+ onlyInstanceOwner()
138
190
  {
139
- if(!_registry.isRegistered(target)) {
140
- revert IAccess.ErrorIAccessTargetNotRegistered(target);
141
- }
191
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
142
192
 
143
- NftId targetParentNftId = _registry.getObjectInfo(target).parentNftId;
144
- NftId instanceNftId = _registry.getObjectInfo(_instance).nftId;
145
- if(targetParentNftId != instanceNftId) {
146
- revert IAccess.ErrorIAccessTargetInstanceMismatch(target, targetParentNftId, instanceNftId);
193
+ if(accessManager.isLocked() == locked) {
194
+ revert ErrorInstanceAdminInstanceAlreadyLocked();
147
195
  }
148
-
149
- _createTarget(target, name, IAccess.Type.Gif);
196
+ accessManager.setLocked(locked);
150
197
  }
151
198
 
152
- // INSTANCE_ROLE
153
- // assume custom target.authority() is constant -> target MUST not be used with different instance access manager
154
- // assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
155
- // assume custom target can not be registered as instance or service -> why?
156
- // TODO check target associated with instance owner or instance or instance components or components helpers
157
- function createTarget(address target, string memory name) external restricted() {
158
- _createTarget(target, name, IAccess.Type.Custom);
199
+ function setTargetLocked(address target, bool locked)
200
+ external
201
+ restricted()
202
+ {
203
+ _setTargetClosed(target, locked);
159
204
  }
160
205
 
161
- // TODO instance owner locks component instead of revoking it access to the instance...
162
- // INSTANCE_SERVICE_ROLE
163
- function setTargetLockedByService(address target, bool locked) external restricted {
164
- _setTargetLocked(target, locked);
206
+ /// @dev Returns the number of components that have been registered with this instance.
207
+ function components()
208
+ external
209
+ view
210
+ returns (uint64)
211
+ {
212
+ return _components;
165
213
  }
166
214
 
167
- // INSTANCE_ROLE
168
- function setTargetLockedByInstance(address target, bool locked) external restricted {
169
- _setTargetLocked(target, locked);
215
+ /// @dev Returns the instance authorization specification used to set up this instance admin.
216
+ function getInstanceAuthorization()
217
+ external
218
+ view
219
+ returns (IAuthorization instanceAuthorizaion)
220
+ {
221
+ return _instanceAuthorization;
170
222
  }
171
223
 
224
+ // ------------------- Internal functions ------------------- //
172
225
 
173
- // allowed combinations of roles and targets:
174
- //1) set core role for core target
175
- //2) set gif role for gif target
176
- //3) set custom role for gif target
177
- //4) set custom role for custom target
178
-
179
- // ADMIN_ROLE if used only during initialization, works with:
180
- // any roles for any targets
181
- // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
182
- // core roles for core targets
183
- // gif roles for gif targets
184
- function setTargetFunctionRoleByService(
185
- string memory targetName,
186
- bytes4[] calldata selectors,
187
- RoleId roleId
188
- )
189
- public
190
- virtual
191
- restricted
226
+ function _setupComponentAndTokenHandler(IInstanceLinkedComponent component)
227
+ internal
192
228
  {
193
- address target = _accessManager.getTargetAddress(targetName);
194
- // not custom target
195
- if(_targetType[target] == IAccess.Type.Custom) {
196
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
197
- }
198
-
199
- // not custom role
200
- if(_roleType[roleId] == IAccess.Type.Custom) {
201
- revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
202
- }
203
229
 
204
- _setTargetFunctionRole(target, selectors, roleId);
230
+ IAuthorization authorization = component.getAuthorization();
231
+ string memory targetName = authorization.getMainTargetName();
232
+
233
+ // create component role and target
234
+ RoleId componentRoleId = _createComponentRoleId(component, authorization);
235
+
236
+ // create component's target
237
+ _createTarget(
238
+ address(component),
239
+ targetName,
240
+ true, // checkAuthority
241
+ false); // custom
242
+
243
+ // create component's token handler target
244
+ NftId componentNftId = _registry.getNftIdForAddress(address(component));
245
+ address tokenHandler = address(
246
+ _instance.getInstanceReader().getComponentInfo(
247
+ componentNftId).tokenHandler);
248
+
249
+ _createTarget(
250
+ tokenHandler,
251
+ authorization.getTokenHandlerName(),
252
+ true,
253
+ false);
254
+
255
+ // assign component role to component
256
+ _grantRoleToAccount(
257
+ componentRoleId,
258
+ address(component));
259
+
260
+ // token handler does not require its own role
261
+ // token handler is not calling other components
205
262
  }
206
263
 
207
- // INSTANCE_ROLE
208
- // gif role for gif target
209
- // gif role for custom target
210
- // custom role for gif target -> need to prohibit
211
- // custom role for custom target
212
- // TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
213
- function setTargetFunctionRoleByInstance(
214
- string memory targetName,
215
- bytes4[] calldata selectors,
216
- RoleId roleId// string memory roleName
217
- )
218
- public
219
- virtual
220
- restricted()
221
- {
222
- address target = _accessManager.getTargetAddress(targetName);
223
264
 
224
- // not core target
225
- if(_targetType[target] == IAccess.Type.Core) {
226
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
265
+ function _createComponentRoleId(
266
+ IInstanceLinkedComponent component,
267
+ IAuthorization authorization
268
+ )
269
+ internal
270
+ returns (RoleId componentRoleId)
271
+ {
272
+ // checks
273
+ // check component is not yet authorized
274
+ if (_targetRoleId[address(component)].gtz()) {
275
+ revert ErrorInstanceAdminAlreadyAuthorized(address(component));
227
276
  }
228
277
 
229
- // not core role
230
- if(_roleType[roleId] == IAccess.Type.Core) {
231
- revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
278
+ // check generic component role
279
+ RoleId genericComponentRoleId = authorization.getTargetRole(
280
+ authorization.getMainTarget());
281
+
282
+ if (!genericComponentRoleId.isComponentRole()) {
283
+ revert ErrorInstanceAdminNotComponentRole(genericComponentRoleId);
232
284
  }
233
285
 
234
- _setTargetFunctionRole(target, selectors, roleId);
235
- }
286
+ // check component role does not exist
287
+ componentRoleId = toComponentRole(
288
+ genericComponentRoleId,
289
+ _components);
236
290
 
237
- //--- Role internal view/pure functions --------------------------------------//
238
- function _createRole(RoleId roleId, string memory name, IAccess.Type rtype) internal {
239
- _validateRole(roleId, rtype);
291
+ if (roleExists(componentRoleId)) {
292
+ revert ErrorInstanceAdminRoleAlreadyExists(componentRoleId);
293
+ }
240
294
 
241
- _roleType[roleId] = rtype;
242
- _accessManager.createRole(roleId.toInt(), name);
243
- }
295
+ // check role info
296
+ IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(
297
+ genericComponentRoleId);
244
298
 
245
- function _validateRole(RoleId roleId, IAccess.Type rtype) internal pure
246
- {
247
- uint roleIdInt = roleId.toInt();
248
- if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
249
- revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
299
+ if (roleInfo.roleType != IAccess.RoleType.Contract) {
300
+ revert ErrorInstanceAdminRoleTypeNotContract(
301
+ componentRoleId,
302
+ roleInfo.roleType);
250
303
  }
251
304
 
252
- if(
253
- rtype != IAccess.Type.Custom &&
254
- roleIdInt >= CUSTOM_ROLE_ID_MIN &&
255
- roleIdInt != PUBLIC_ROLE().toInt())
256
- {
257
- revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
258
- }
259
- }
305
+ // effects
306
+ _targetRoleId[address(component)] = componentRoleId;
307
+ _components++;
260
308
 
261
- function _grantRole(RoleId roleId, address account) internal {
262
- _accessManager.grantRole(roleId.toInt(), account, EXECUTION_DELAY);
309
+ _createRole(
310
+ componentRoleId,
311
+ roleInfo);
263
312
  }
264
313
 
265
- function _revokeRole(RoleId roleId, address member) internal {
266
- _accessManager.revokeRole(roleId.toInt(), member);
267
- }
268
314
 
269
- function _setRoleAdmin(RoleId roleId, RoleId admin) internal {
270
- if(_roleType[roleId] == IAccess.Type.Core) {
271
- revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
315
+ function _checkTargetIsReadyForAuthorization(address target)
316
+ internal
317
+ view
318
+ {
319
+ if (!_registry.isRegistered(target)) {
320
+ revert ErrorInstanceAdminNotRegistered(target);
272
321
  }
273
322
 
274
- _accessManager.setRoleAdmin(roleId.toInt(), admin.toInt());
323
+ if (targetExists(target)) {
324
+ revert ErrorInstanceAdminAlreadyAuthorized(target);
325
+ }
275
326
  }
276
327
 
277
- function _getRoleAdmin(RoleId roleId) internal view returns (RoleId admin) {
278
- return RoleIdLib.toRoleId(_accessManager.getRoleAdmin(roleId.toInt()));
279
- }
280
328
 
281
- function _hasRole(RoleId roleId, address account) internal view returns (bool accountHasRole) {
282
- uint32 executionDelay;
283
- (accountHasRole, executionDelay) = _accessManager.hasRole(roleId.toInt(), account);
284
- assert(executionDelay == 0);
285
- }
329
+ function _createRoles(IAuthorization authorization)
330
+ internal
331
+ {
332
+ RoleId[] memory roles = authorization.getRoles();
333
+ RoleId mainTargetRoleId = authorization.getTargetRole(
334
+ authorization.getMainTarget());
286
335
 
287
- function _getRoleMembers(RoleId roleId) internal view returns (uint) {
288
- return _accessManager.getRoleMembers(roleId.toInt());
289
- }
336
+ RoleId roleId;
337
+ RoleInfo memory roleInfo;
290
338
 
291
- function _getNextCustomRoleId() internal returns(RoleId roleId, RoleId admin) {
292
- uint64 roleIdInt = _idNext;
293
- uint64 adminInt = roleIdInt + 1;
339
+ for(uint256 i = 0; i < roles.length; i++) {
294
340
 
295
- _idNext = roleIdInt + 2;
341
+ roleId = roles[i];
296
342
 
297
- roleId = RoleIdLib.toRoleId(roleIdInt);
298
- admin = RoleIdLib.toRoleId(adminInt);
343
+ // skip main target role, create role if not exists
344
+ if (roleId != mainTargetRoleId && !roleExists(roleId)) {
345
+ _createRole(
346
+ roleId,
347
+ authorization.getRoleInfo(roleId));
348
+ }
349
+ }
299
350
  }
300
351
 
301
- //--- Target internal view/pure functions --------------------------------------//
302
- function _createTarget(address target, string memory name, IAccess.Type ttype)
303
- internal
352
+
353
+ function toComponentRole(RoleId roleId, uint64 componentIdx)
354
+ internal
355
+ pure
356
+ returns (RoleId)
304
357
  {
305
- _validateTarget(target, ttype);
306
- _targetType[target] = ttype;
307
- _accessManager.createTarget(target, name);
358
+ return RoleIdLib.toRoleId(
359
+ RoleIdLib.toInt(roleId) + componentIdx);
308
360
  }
309
361
 
310
- function _validateTarget(address target, IAccess.Type ttype)
311
- internal
312
- view
313
- {}
314
362
 
315
- // IMPORTANT: instance admin MUST be of Core type -> otherwise can be locked forever
316
- // TODO: consider locking gif targets in a separate function?
317
- function _setTargetLocked(address target, bool locked) internal
363
+ function _createTargetAuthorizations(IAuthorization authorization)
364
+ internal
318
365
  {
319
- IAccess.Type targetType = _targetType[target];
366
+ Str[] memory targets = authorization.getTargets();
367
+ Str target;
368
+
369
+ for(uint256 i = 0; i < targets.length; i++) {
370
+ target = targets[i];
371
+ RoleId[] memory authorizedRoles = authorization.getAuthorizedRoles(target);
372
+ RoleId authorizedRole;
373
+
374
+ for(uint256 j = 0; j < authorizedRoles.length; j++) {
375
+ authorizedRole = authorizedRoles[j];
376
+
377
+ _authorizeTargetFunctions(
378
+ getTargetForName(target),
379
+ authorizedRole,
380
+ authorization.getAuthorizedFunctions(
381
+ target,
382
+ authorizedRole));
383
+ }
384
+ }
385
+ }
320
386
 
321
- if(targetType == IAccess.Type.Core) {
322
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
387
+ function _checkAndCreateTargetWithRole(
388
+ address target,
389
+ string memory targetName
390
+ )
391
+ internal
392
+ {
393
+ // check that target name is defined in authorization specification
394
+ Str name = StrLib.toStr(targetName);
395
+ if (!_instanceAuthorization.targetExists(name)) {
396
+ revert ErrorInstanceAdminExpectedTargetMissing(targetName);
323
397
  }
324
398
 
325
- _accessManager.setTargetClosed(target, locked);
399
+ // create named target
400
+ _createTarget(
401
+ target,
402
+ targetName,
403
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
404
+ false);
405
+
406
+ // assign target role if defined
407
+ RoleId targetRoleId = _instanceAuthorization.getTargetRole(name);
408
+ if (targetRoleId != RoleIdLib.zero()) {
409
+ _grantRoleToAccount(targetRoleId, target);
410
+ }
326
411
  }
327
412
 
328
- function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) internal {
329
- _accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
413
+ function _setupInstanceHelperTargetsWithRoles()
414
+ internal
415
+ {
416
+ // _checkAndCreateTargetWithRole(address(_instance), INSTANCE_TARGET_NAME);
417
+
418
+ // create module targets
419
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
420
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
421
+ _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
422
+ _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TAGET_NAME);
423
+
424
+ // create targets for services that need to access the module targets
425
+ ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
426
+ VersionPart release = _instanceAuthorization.getRelease();
427
+ ObjectType serviceDomain;
428
+
429
+ for (uint256 i = 0; i < serviceDomains.length; i++) {
430
+ serviceDomain = serviceDomains[i];
431
+
432
+ _checkAndCreateTargetWithRole(
433
+ _registry.getServiceAddress(serviceDomain, release),
434
+ _instanceAuthorization.getServiceTarget(serviceDomain).toString());
435
+ }
330
436
  }
331
- }
437
+ }