@etherisc/gif-next 0.0.2-b7d6ed2-016 → 0.0.2-b7e6198-021

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 (446) hide show
  1. package/README.md +12 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +80 -34
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +267 -97
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +652 -36
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -47
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +175 -27
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +85 -12
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -17
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +221 -60
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +129 -67
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -0
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +81 -42
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +220 -59
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +102 -51
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +220 -59
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +74 -23
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +220 -59
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +34 -15
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -50
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +220 -59
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -68
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +220 -59
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +336 -33
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +277 -3
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +349 -74
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +608 -295
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +242 -56
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -290
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +303 -29
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +69 -31
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +148 -84
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +23 -4
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +234 -56
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -0
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -0
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +85 -39
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -26
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +220 -59
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +113 -47
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -0
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -0
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +110 -52
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +82 -32
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +220 -59
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -64
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -0
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -61
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -39
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +19 -0
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +70 -32
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +18 -7
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  184. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/Registry.sol/Registry.json +56 -45
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  189. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +380 -238
  190. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +261 -65
  192. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  193. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  194. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -27
  196. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  197. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +384 -186
  198. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -79
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  206. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Component.sol/Component.json +19 -0
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +98 -52
  212. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
  214. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -0
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -0
  224. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +6 -6
  226. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  227. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  229. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  232. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  235. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  237. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
  238. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  239. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +6 -6
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  241. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  243. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  245. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  247. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  249. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  251. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  257. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  259. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1383 -117
  261. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
  263. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  264. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +1473 -176
  267. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
  269. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +113 -58
  271. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -150
  273. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
  275. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -43
  277. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1620 -820
  279. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  280. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  281. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  282. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +142 -80
  283. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  284. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
  286. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  288. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  316. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  329. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  330. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  331. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -17
  333. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  335. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  336. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  337. package/contracts/accounting/AccountingService.sol +15 -3
  338. package/contracts/accounting/IAccountingService.sol +2 -0
  339. package/contracts/authorization/AccessAdmin.sol +264 -188
  340. package/contracts/authorization/AccessAdminLib.sol +222 -9
  341. package/contracts/authorization/Authorization.sol +38 -234
  342. package/contracts/authorization/IAccess.sol +14 -4
  343. package/contracts/authorization/IAccessAdmin.sol +19 -45
  344. package/contracts/authorization/IAuthorization.sol +3 -57
  345. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  346. package/contracts/authorization/ServiceAuthorization.sol +248 -34
  347. package/contracts/distribution/BasicDistribution.sol +2 -2
  348. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  349. package/contracts/distribution/Distribution.sol +7 -4
  350. package/contracts/distribution/DistributionService.sol +98 -35
  351. package/contracts/distribution/IDistributionComponent.sol +3 -1
  352. package/contracts/distribution/IDistributionService.sol +20 -8
  353. package/contracts/examples/fire/FireProduct.sol +6 -6
  354. package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
  355. package/contracts/instance/IInstance.sol +44 -5
  356. package/contracts/instance/IInstanceService.sol +35 -6
  357. package/contracts/instance/Instance.sol +86 -43
  358. package/contracts/instance/InstanceAdmin.sol +162 -229
  359. package/contracts/instance/InstanceAuthorizationV3.sol +60 -29
  360. package/contracts/instance/InstanceReader.sol +371 -389
  361. package/contracts/instance/InstanceService.sol +123 -82
  362. package/contracts/instance/RiskSet.sol +10 -2
  363. package/contracts/instance/base/BalanceStore.sol +4 -6
  364. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  365. package/contracts/oracle/BasicOracle.sol +1 -1
  366. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  367. package/contracts/oracle/Oracle.sol +2 -2
  368. package/contracts/oracle/OracleService.sol +8 -8
  369. package/contracts/pool/BasicPool.sol +3 -14
  370. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  371. package/contracts/pool/BundleService.sol +34 -43
  372. package/contracts/pool/IBundleService.sol +14 -13
  373. package/contracts/pool/IPoolService.sol +7 -2
  374. package/contracts/pool/Pool.sol +4 -14
  375. package/contracts/pool/PoolLib.sol +127 -2
  376. package/contracts/pool/PoolService.sol +40 -181
  377. package/contracts/product/ApplicationService.sol +62 -9
  378. package/contracts/product/BasicProduct.sol +1 -1
  379. package/contracts/product/BasicProductAuthorization.sol +11 -4
  380. package/contracts/product/ClaimService.sol +56 -58
  381. package/contracts/product/IApplicationService.sol +21 -2
  382. package/contracts/product/IClaimService.sol +5 -4
  383. package/contracts/product/IPolicyService.sol +9 -2
  384. package/contracts/product/IRiskService.sol +18 -3
  385. package/contracts/product/PolicyService.sol +31 -50
  386. package/contracts/product/PolicyServiceLib.sol +79 -5
  387. package/contracts/product/PricingService.sol +22 -25
  388. package/contracts/product/Product.sol +38 -12
  389. package/contracts/product/RiskService.sol +48 -12
  390. package/contracts/registry/IRegistry.sol +11 -9
  391. package/contracts/registry/Registry.sol +15 -9
  392. package/contracts/registry/RegistryAdmin.sol +33 -100
  393. package/contracts/registry/RegistryAuthorization.sol +121 -52
  394. package/contracts/registry/RegistryService.sol +1 -1
  395. package/contracts/registry/ReleaseAdmin.sol +42 -100
  396. package/contracts/registry/ReleaseRegistry.sol +20 -12
  397. package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
  398. package/contracts/registry/TokenRegistry.sol +54 -53
  399. package/contracts/shared/Component.sol +6 -2
  400. package/contracts/shared/ComponentService.sol +234 -255
  401. package/contracts/shared/ContractLib.sol +106 -75
  402. package/contracts/shared/IComponent.sol +1 -1
  403. package/contracts/shared/IComponentService.sol +12 -13
  404. package/contracts/shared/IKeyValueStore.sol +1 -1
  405. package/contracts/shared/INftOwnable.sol +2 -0
  406. package/contracts/shared/IRegisterable.sol +0 -1
  407. package/contracts/shared/InstanceLinkedComponent.sol +4 -5
  408. package/contracts/shared/KeyValueStore.sol +3 -3
  409. package/contracts/shared/NftOwnable.sol +3 -1
  410. package/contracts/shared/PolicyHolder.sol +3 -2
  411. package/contracts/shared/Service.sol +6 -4
  412. package/contracts/staking/IStaking.sol +258 -70
  413. package/contracts/staking/IStakingService.sol +39 -84
  414. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  415. package/contracts/staking/Staking.sol +467 -215
  416. package/contracts/staking/StakingLib.sol +38 -124
  417. package/contracts/staking/StakingManager.sol +4 -3
  418. package/contracts/staking/StakingReader.sol +62 -71
  419. package/contracts/staking/StakingService.sol +42 -185
  420. package/contracts/staking/StakingServiceManager.sol +1 -0
  421. package/contracts/staking/StakingStore.sol +1093 -331
  422. package/contracts/staking/TargetHandler.sol +132 -0
  423. package/contracts/staking/TargetManagerLib.sol +69 -46
  424. package/contracts/type/Amount.sol +4 -0
  425. package/contracts/type/Blocknumber.sol +15 -15
  426. package/contracts/type/ChainId.sol +101 -0
  427. package/contracts/type/NftId.sol +3 -3
  428. package/contracts/type/ObjectType.sol +16 -3
  429. package/contracts/type/RoleId.sol +57 -59
  430. package/contracts/type/Seconds.sol +19 -0
  431. package/contracts/type/String.sol +12 -0
  432. package/contracts/type/Timestamp.sol +4 -2
  433. package/contracts/type/UFixed.sol +1 -0
  434. package/contracts/upgradeability/IVersionable.sol +3 -0
  435. package/contracts/upgradeability/ProxyManager.sol +15 -3
  436. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  437. package/contracts/upgradeability/Versionable.sol +6 -3
  438. package/package.json +1 -1
  439. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  440. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  441. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  442. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  443. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  444. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  445. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  446. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -8,13 +8,12 @@ import {IRegistry} from "../registry/IRegistry.sol";
8
8
  import {IInstance} from "./IInstance.sol";
9
9
 
10
10
  import {AccessAdmin} from "../authorization/AccessAdmin.sol";
11
+ import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
11
12
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
12
- import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, INSTANCE, ORACLE} 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";
13
+ import {ObjectType, INSTANCE} from "../type/ObjectType.sol";
14
+ import {RoleId, ADMIN_ROLE} from "../type/RoleId.sol";
15
+ import {Str} from "../type/String.sol";
16
+ import {VersionPart} from "../type/Version.sol";
18
17
 
19
18
 
20
19
  contract InstanceAdmin is
@@ -26,29 +25,22 @@ contract InstanceAdmin is
26
25
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
27
26
  string public constant RISK_SET_TARGET_NAME = "RiskSet";
28
27
 
29
- uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
30
-
28
+ // onlyInstanceService
31
29
  error ErrorInstanceAdminNotInstanceService(address caller);
32
30
 
33
- error ErrorInstanceAdminNotRegistered(address instance);
34
- error ErrorInstanceAdminNotInstance(address instance);
35
- error ErrorInstanceAdminAlreadyAuthorized(address instance);
36
-
37
- error ErrorInstanceAdminNotComponentRole(RoleId roleId);
38
- error ErrorInstanceAdminRoleAlreadyExists(RoleId roleId);
39
- error ErrorInstanceAdminRoleTypeNotContract(RoleId roleId, IAccess.RoleType roleType);
40
-
41
- error ErrorInstanceAdminReleaseMismatch();
42
- error ErrorInstanceAdminExpectedTargetMissing(string targetName);
31
+ // authorizeFunctions
32
+ error ErrorInstanceAdminNotComponentOrCustomTarget(address target);
43
33
 
44
34
  IInstance internal _instance;
45
35
  IRegistry internal _registry;
46
36
  VersionPart internal _release;
47
- uint64 internal _customIdNext;
37
+
38
+ uint64 internal _customRoleIdNext;
48
39
 
49
40
  mapping(address target => RoleId roleId) internal _targetRoleId;
50
41
  uint64 internal _components;
51
42
 
43
+
52
44
  modifier onlyInstanceService() {
53
45
  if (msg.sender != _registry.getServiceAddress(INSTANCE(), getRelease())) {
54
46
  revert ErrorInstanceAdminNotInstanceService(msg.sender);
@@ -69,24 +61,23 @@ contract InstanceAdmin is
69
61
  /// Important: The instance MUST be registered and all instance supporting contracts must be wired to this instance.
70
62
  function completeSetup(
71
63
  address registry,
72
- address instance,
73
64
  address authorization,
74
- VersionPart release
65
+ VersionPart release,
66
+ address instance
75
67
  )
76
68
  external
77
69
  reinitializer(uint64(release.toInt()))
78
70
  onlyDeployer()
79
71
  {
80
72
  // checks
81
- _checkRegistry(registry);
82
- _checkIsRegistered(registry, instance, INSTANCE());
73
+ AccessAdminLib.checkIsRegistered(registry, instance, INSTANCE());
83
74
 
84
75
  AccessManagerCloneable(
85
76
  authority()).completeSetup(
86
77
  registry,
87
78
  release);
88
79
 
89
- _checkAuthorization(authorization, INSTANCE(), release, true);
80
+ _checkAuthorization(authorization, INSTANCE(), release, false, true);
90
81
 
91
82
  // effects
92
83
  _registry = IRegistry(registry);
@@ -95,29 +86,63 @@ contract InstanceAdmin is
95
86
  _instance = IInstance(instance);
96
87
  _authorization = IAuthorization(authorization);
97
88
  _components = 0;
98
- _customIdNext = CUSTOM_ROLE_ID_MIN;
89
+ _customRoleIdNext = 0;
99
90
 
100
91
  // link nft ownability to instance
101
92
  _linkToNftOwnable(instance);
102
93
 
103
- // create instance role and target
104
- _setupInstance(instance);
94
+ // setup instance targets
95
+ _createInstanceTargets(_authorization.getMainTargetName());
105
96
 
106
- // add instance authorization
97
+ // setup non-contract roles
98
+ _setupServiceRoles(_authorization);
107
99
  _createRoles(_authorization);
108
- // _createTargets(_authorization);
109
- _setupInstanceHelperTargetsWithRoles();
100
+
101
+ // authorize functions of instance contracts
110
102
  _createTargetAuthorizations(_authorization);
111
103
  }
112
104
 
113
105
 
114
- function _createTargets(IAuthorization authorization)
106
+ /// @dev grants the service roles to the service addresses based on the authorization specification.
107
+ /// Service addresses used for the granting are determined by the registry and the release of this instance.
108
+ function _setupServiceRoles(IAuthorization authorization)
115
109
  internal
116
110
  {
117
- _createTargetWithRole(address(this), INSTANCE_ADMIN_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(INSTANCE_ADMIN_TARGET_NAME)));
118
- _createTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(INSTANCE_STORE_TARGET_NAME)));
119
- _createTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(BUNDLE_SET_TARGET_NAME)));
120
- _createTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(RISK_SET_TARGET_NAME)));
111
+ ObjectType[] memory serviceDomains = authorization.getServiceDomains();
112
+
113
+ for(uint256 i = 0; i < serviceDomains.length; i++) {
114
+ ObjectType serviceDomain = serviceDomains[i];
115
+ RoleId serviceRoleId = authorization.getServiceRole(serviceDomain);
116
+ string memory serviceRoleName = authorization.getRoleName(serviceRoleId);
117
+
118
+ // create service role if missing
119
+ if (!roleExists(serviceRoleId)) {
120
+ _createRole(
121
+ serviceRoleId,
122
+ AccessAdminLib.toRole(
123
+ ADMIN_ROLE(),
124
+ IAccess.RoleType.Contract,
125
+ 1,
126
+ serviceRoleName));
127
+ }
128
+
129
+ // grant service role to service
130
+ address service = _registry.getServiceAddress(serviceDomain, _release);
131
+ _grantRoleToAccount(
132
+ serviceRoleId,
133
+ service);
134
+ }
135
+ }
136
+
137
+
138
+ function _createInstanceTargets(string memory instanceTargetName)
139
+ internal
140
+ {
141
+ _createManagedTarget(address(_instance), instanceTargetName, TargetType.Instance);
142
+ _createManagedTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, TargetType.Instance);
143
+ _createManagedTarget(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME, TargetType.Instance);
144
+ _createManagedTarget(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME, TargetType.Instance);
145
+ _createManagedTarget(address(_instance.getRiskSet()), RISK_SET_TARGET_NAME, TargetType.Instance);
121
146
  }
122
147
 
123
148
 
@@ -131,19 +156,19 @@ contract InstanceAdmin is
131
156
  restricted()
132
157
  {
133
158
  // checks
134
- _checkIsRegistered(address(getRegistry()), componentAddress, expectedType);
159
+ AccessAdminLib.checkIsRegistered(address(getRegistry()), componentAddress, expectedType);
135
160
 
136
161
  IInstanceLinkedComponent component = IInstanceLinkedComponent(componentAddress);
137
162
  IAuthorization authorization = component.getAuthorization();
138
- _checkAuthorization(address(authorization), expectedType, getRelease(), false);
163
+ _checkAuthorization(address(authorization), expectedType, getRelease(), false, false);
139
164
 
140
165
  // effects
141
- // setup target and role for component (including token handler if applicable)
142
- _setupComponentAndTokenHandler(component, expectedType);
143
-
144
- // create other roles and function authorizations
145
166
  _createRoles(authorization);
167
+ _createManagedTarget(componentAddress, authorization.getMainTargetName(), TargetType.Component);
146
168
  _createTargetAuthorizations(authorization);
169
+
170
+ // increase component count
171
+ _components++;
147
172
  }
148
173
 
149
174
  function getRelease()
@@ -156,38 +181,45 @@ contract InstanceAdmin is
156
181
  }
157
182
 
158
183
 
159
- // create instance role and target
160
- function _setupInstance(address instance) internal {
184
+ /// @dev Creates a custom role.
185
+ function createRole(
186
+ string memory name,
187
+ RoleId adminRoleId,
188
+ uint32 maxMemberCount
189
+ )
190
+ external
191
+ restricted()
192
+ returns (RoleId roleId)
193
+ {
194
+ // check role does not yet exist
195
+ if (roleExists(name)) {
196
+ revert ErrorAccessAdminRoleAlreadyCreated(
197
+ getRoleForName(name),
198
+ name);
199
+ }
161
200
 
162
- // create instance role
163
- RoleId instanceRoleId = _authorization.getTargetRole(
164
- _authorization.getMainTarget());
201
+ // create roleId
202
+ roleId = AccessAdminLib.getCustomRoleId(_customRoleIdNext++);
165
203
 
204
+ // create role
166
205
  _createRole(
167
- instanceRoleId,
168
- _authorization.getRoleInfo(instanceRoleId));
169
-
170
- // create instance target
171
- _createTarget(
172
- instance,
173
- _authorization.getMainTargetName(),
174
- true, // checkAuthority
175
- false); // custom
176
-
177
- // assign instance role to instance
178
- _grantRoleToAccount(
179
- instanceRoleId,
180
- instance);
206
+ roleId,
207
+ AccessAdminLib.toRole(
208
+ adminRoleId,
209
+ IAccess.RoleType.Custom,
210
+ maxMemberCount,
211
+ name));
181
212
  }
182
213
 
183
- /// @dev Creates a custom role
184
- // TODO implement
185
- // function createRole()
186
- // external
187
- // restricted()
188
- // {
189
214
 
190
- // }
215
+ /// @dev Activtes/pauses the specified role.
216
+ function setRoleActive(RoleId roleId, bool active)
217
+ external
218
+ restricted()
219
+ {
220
+ _setRoleActive(roleId, active);
221
+ }
222
+
191
223
 
192
224
  /// @dev Grants the provided role to the specified account
193
225
  function grantRole(
@@ -200,6 +232,62 @@ contract InstanceAdmin is
200
232
  }
201
233
 
202
234
 
235
+ /// @dev Revokes the provided role from the specified account
236
+ function revokeRole(
237
+ RoleId roleId,
238
+ address account)
239
+ external
240
+ restricted()
241
+ {
242
+ _revokeRoleFromAccount(roleId, account);
243
+ }
244
+
245
+
246
+ /// @dev Create a new custom target.
247
+ /// The target needs to be an access managed contract.
248
+ function createTarget(
249
+ address target,
250
+ string memory name
251
+ )
252
+ external
253
+ restricted()
254
+ returns (RoleId contractRoleId)
255
+ {
256
+ return _createManagedTarget(
257
+ target,
258
+ name,
259
+ TargetType.Custom);
260
+ }
261
+
262
+
263
+ /// @dev Add function authorizations for the specified component or custom target.
264
+ function authorizeFunctions(
265
+ address target,
266
+ RoleId roleId,
267
+ IAccess.FunctionInfo[] memory functions
268
+ )
269
+ external
270
+ restricted()
271
+ {
272
+ _checkComponentOrCustomTarget(target);
273
+ _authorizeTargetFunctions(target, roleId, functions, true);
274
+ }
275
+
276
+
277
+ /// @dev Removes function authorizations for the specified component or custom target.
278
+ function unauthorizeFunctions(
279
+ address target,
280
+ IAccess.FunctionInfo[] memory functions
281
+ )
282
+ external
283
+ restricted()
284
+ {
285
+ _checkComponentOrCustomTarget(target);
286
+ _authorizeTargetFunctions(target, ADMIN_ROLE(), functions, false);
287
+ }
288
+
289
+
290
+ /// @dev locks the instance and all its releated targets including component and custom targets.
203
291
  function setInstanceLocked(bool locked)
204
292
  external
205
293
  // not restricted(): need to operate on locked instances to unlock instance
@@ -246,100 +334,6 @@ contract InstanceAdmin is
246
334
 
247
335
  // ------------------- Internal functions ------------------- //
248
336
 
249
- function _setupComponentAndTokenHandler(
250
- IInstanceLinkedComponent component,
251
- ObjectType componentType
252
- )
253
- internal
254
- {
255
-
256
- IAuthorization authorization = component.getAuthorization();
257
- string memory targetName = authorization.getMainTargetName();
258
-
259
- // create component role and target
260
- RoleId componentRoleId = _createComponentRoleId(component, authorization);
261
-
262
- // create component's target
263
- _createTarget(
264
- address(component),
265
- targetName,
266
- true, // checkAuthority
267
- false); // custom
268
-
269
- // create component's token handler target if app
270
- if (componentType != ORACLE()) {
271
- NftId componentNftId = _registry.getNftIdForAddress(address(component));
272
- address tokenHandler = address(
273
- _instance.getInstanceReader().getComponentInfo(
274
- componentNftId).tokenHandler);
275
-
276
- _createTarget(
277
- tokenHandler,
278
- authorization.getTokenHandlerName(),
279
- true,
280
- false);
281
-
282
- // token handler does not require its own role
283
- // token handler is not calling other components
284
- }
285
-
286
- // assign component role to component
287
- _grantRoleToAccount(
288
- componentRoleId,
289
- address(component));
290
- }
291
-
292
-
293
- function _createComponentRoleId(
294
- IInstanceLinkedComponent component,
295
- IAuthorization authorization
296
- )
297
- internal
298
- returns (RoleId componentRoleId)
299
- {
300
- // checks
301
- // check component is not yet authorized
302
- if (_targetRoleId[address(component)].gtz()) {
303
- revert ErrorInstanceAdminAlreadyAuthorized(address(component));
304
- }
305
-
306
- // check generic component role
307
- RoleId genericComponentRoleId = authorization.getTargetRole(
308
- authorization.getMainTarget());
309
-
310
- if (!genericComponentRoleId.isComponentRole()) {
311
- revert ErrorInstanceAdminNotComponentRole(genericComponentRoleId);
312
- }
313
-
314
- // check component role does not exist
315
- componentRoleId = toComponentRole(
316
- genericComponentRoleId,
317
- _components);
318
-
319
- if (roleExists(componentRoleId)) {
320
- revert ErrorInstanceAdminRoleAlreadyExists(componentRoleId);
321
- }
322
-
323
- // check role info
324
- IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(
325
- genericComponentRoleId);
326
-
327
- if (roleInfo.roleType != IAccess.RoleType.Contract) {
328
- revert ErrorInstanceAdminRoleTypeNotContract(
329
- componentRoleId,
330
- roleInfo.roleType);
331
- }
332
-
333
- // effects
334
- _targetRoleId[address(component)] = componentRoleId;
335
- _components++;
336
-
337
- _createRole(
338
- componentRoleId,
339
- roleInfo);
340
- }
341
-
342
-
343
337
  function _createRoles(IAuthorization authorization)
344
338
  internal
345
339
  {
@@ -347,12 +341,8 @@ contract InstanceAdmin is
347
341
  RoleId mainTargetRoleId = authorization.getTargetRole(
348
342
  authorization.getMainTarget());
349
343
 
350
- RoleId roleId;
351
- RoleInfo memory roleInfo;
352
-
353
344
  for(uint256 i = 0; i < roles.length; i++) {
354
-
355
- roleId = roles[i];
345
+ RoleId roleId = roles[i];
356
346
 
357
347
  // skip main target role, create role if not exists
358
348
  if (roleId != mainTargetRoleId && !roleExists(roleId)) {
@@ -364,16 +354,6 @@ contract InstanceAdmin is
364
354
  }
365
355
 
366
356
 
367
- function toComponentRole(RoleId roleId, uint64 componentIdx)
368
- internal
369
- pure
370
- returns (RoleId)
371
- {
372
- return RoleIdLib.toRoleId(
373
- RoleIdLib.toInt(roleId) + componentIdx);
374
- }
375
-
376
-
377
357
  function _createTargetAuthorizations(IAuthorization authorization)
378
358
  internal
379
359
  {
@@ -383,68 +363,21 @@ contract InstanceAdmin is
383
363
  for(uint256 i = 0; i < targets.length; i++) {
384
364
  target = targets[i];
385
365
  RoleId[] memory authorizedRoles = authorization.getAuthorizedRoles(target);
386
- RoleId authorizedRole;
387
366
 
388
367
  for(uint256 j = 0; j < authorizedRoles.length; j++) {
389
- authorizedRole = authorizedRoles[j];
390
-
391
- _authorizeTargetFunctions(
392
- getTargetForName(target),
393
- authorizedRole,
394
- authorization.getAuthorizedFunctions(
395
- target,
396
- authorizedRole));
368
+ _authorizeFunctions(authorization, target, authorizedRoles[j]);
397
369
  }
398
370
  }
399
371
  }
400
372
 
401
- function _checkAndCreateTargetWithRole(
402
- address target,
403
- string memory targetName
404
- )
405
- internal
406
- {
407
- // check that target name is defined in authorization specification
408
- Str name = StrLib.toStr(targetName);
409
- if (!_authorization.targetExists(name)) {
410
- revert ErrorInstanceAdminExpectedTargetMissing(targetName);
411
- }
412
-
413
- // create named target
414
- _createTarget(
415
- target,
416
- targetName,
417
- false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
418
- false);
419
-
420
- // assign target role if defined
421
- RoleId targetRoleId = _authorization.getTargetRole(name);
422
- if (targetRoleId != RoleIdLib.zero()) {
423
- _grantRoleToAccount(targetRoleId, target);
424
- }
425
- }
426
373
 
427
- function _setupInstanceHelperTargetsWithRoles()
374
+ function _checkComponentOrCustomTarget(address target)
428
375
  internal
376
+ view
429
377
  {
430
-
431
- // create module targets
432
- _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
433
- _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
434
- _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
435
- _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TARGET_NAME);
436
-
437
- // create targets for services that need to access the instance targets
438
- ObjectType[] memory serviceDomains = _authorization.getServiceDomains();
439
- VersionPart release = _authorization.getRelease();
440
- ObjectType serviceDomain;
441
-
442
- for (uint256 i = 0; i < serviceDomains.length; i++) {
443
- serviceDomain = serviceDomains[i];
444
-
445
- _checkAndCreateTargetWithRole(
446
- _registry.getServiceAddress(serviceDomain, release),
447
- _authorization.getServiceTarget(serviceDomain).toString());
378
+ IAccess.TargetType targetType = getTargetInfo(target).targetType;
379
+ if (targetType != TargetType.Component && targetType != TargetType.Custom) {
380
+ revert ErrorInstanceAdminNotComponentOrCustomTarget(target);
448
381
  }
449
382
  }
450
383
  }
@@ -2,14 +2,15 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IInstance} from "../instance/Instance.sol";
5
6
 
7
+ import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
6
8
  import {Authorization} from "../authorization/Authorization.sol";
7
9
  import {ACCOUNTING, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, RISK} from "../../contracts/type/ObjectType.sol";
8
10
  import {BundleSet} from "../instance/BundleSet.sol";
9
- import {Instance} from "../instance/Instance.sol";
10
11
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
11
12
  import {InstanceStore} from "../instance/InstanceStore.sol";
12
- import {PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
14
  import {RiskSet} from "../instance/RiskSet.sol";
14
15
 
15
16
 
@@ -18,6 +19,7 @@ contract InstanceAuthorizationV3
18
19
  {
19
20
 
20
21
  string public constant INSTANCE_ROLE_NAME = "InstanceRole";
22
+ string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
21
23
 
22
24
  string public constant INSTANCE_TARGET_NAME = "Instance";
23
25
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
@@ -26,22 +28,41 @@ contract InstanceAuthorizationV3
26
28
  string public constant RISK_SET_TARGET_NAME = "RiskSet";
27
29
 
28
30
  constructor()
29
- Authorization(INSTANCE_TARGET_NAME, INSTANCE(), false, false)
31
+ Authorization(
32
+ INSTANCE_TARGET_NAME,
33
+ INSTANCE(),
34
+ 3,
35
+ COMMIT_HASH,
36
+ false,
37
+ false)
30
38
  { }
31
39
 
32
40
  function _setupServiceTargets() internal virtual override {
33
41
  // service targets relevant to instance
34
- _addServiceTargetWithRole(INSTANCE());
35
- _addServiceTargetWithRole(ACCOUNTING());
36
- _addServiceTargetWithRole(COMPONENT());
37
- _addServiceTargetWithRole(DISTRIBUTION());
38
- _addServiceTargetWithRole(ORACLE());
39
- _addServiceTargetWithRole(POOL());
40
- _addServiceTargetWithRole(BUNDLE());
41
- _addServiceTargetWithRole(RISK());
42
- _addServiceTargetWithRole(APPLICATION());
43
- _addServiceTargetWithRole(POLICY());
44
- _addServiceTargetWithRole(CLAIM());
42
+ _authorizeServiceDomain(INSTANCE(), address(10));
43
+ _authorizeServiceDomain(ACCOUNTING(), address(11));
44
+ _authorizeServiceDomain(COMPONENT(), address(12));
45
+ _authorizeServiceDomain(DISTRIBUTION(), address(13));
46
+ _authorizeServiceDomain(ORACLE(), address(14));
47
+ _authorizeServiceDomain(POOL(), address(15));
48
+ _authorizeServiceDomain(BUNDLE(), address(16));
49
+ _authorizeServiceDomain(RISK(), address(17));
50
+ _authorizeServiceDomain(APPLICATION(), address(18));
51
+ _authorizeServiceDomain(POLICY(), address(19));
52
+ _authorizeServiceDomain(CLAIM(), address(20));
53
+ }
54
+
55
+ function _setupRoles()
56
+ internal
57
+ override
58
+ {
59
+ _addRole(
60
+ INSTANCE_OWNER_ROLE(),
61
+ AccessAdminLib.toRole(
62
+ ADMIN_ROLE(),
63
+ RoleType.Custom,
64
+ 0, // max member count special case: instance nft owner is sole role owner
65
+ INSTANCE_OWNER_ROLE_NAME));
45
66
  }
46
67
 
47
68
  function _setupTargets()
@@ -49,7 +70,6 @@ contract InstanceAuthorizationV3
49
70
  override
50
71
  {
51
72
  // instance supporting targets
52
- // _addGifContractTarget(INSTANCE_ADMIN_TARGET_NAME);
53
73
  _addTarget(INSTANCE_ADMIN_TARGET_NAME);
54
74
  _addTarget(INSTANCE_STORE_TARGET_NAME);
55
75
  _addTarget(BUNDLE_SET_TARGET_NAME);
@@ -95,7 +115,7 @@ contract InstanceAuthorizationV3
95
115
  // authorize risk service role
96
116
  functions = _authorizeForTarget(RISK_SET_TARGET_NAME, getServiceRole(RISK()));
97
117
  _authorize(functions, RiskSet.add.selector, "add");
98
- _authorize(functions, RiskSet.pause.selector, "pause");
118
+ _authorize(functions, RiskSet.deactivate.selector, "deactivate");
99
119
  _authorize(functions, RiskSet.activate.selector, "activate");
100
120
 
101
121
  // authorize policy service role
@@ -112,25 +132,28 @@ contract InstanceAuthorizationV3
112
132
 
113
133
  // authorize instance service role
114
134
  functions = _authorizeForTarget(INSTANCE_TARGET_NAME, PUBLIC_ROLE());
115
- _authorize(functions, Instance.registerProduct.selector, "registerProduct");
116
- _authorize(functions, Instance.upgradeInstanceReader.selector, "upgradeInstanceReader");
135
+ _authorize(functions, IInstance.registerProduct.selector, "registerProduct");
136
+ _authorize(functions, IInstance.upgradeInstanceReader.selector, "upgradeInstanceReader");
117
137
 
118
138
  // staking
119
- _authorize(functions, Instance.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
120
- _authorize(functions, Instance.setStakingRewardRate.selector, "setStakingRewardRate");
121
- _authorize(functions, Instance.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
122
- _authorize(functions, Instance.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
139
+ _authorize(functions, IInstance.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
140
+ _authorize(functions, IInstance.setStakingRewardRate.selector, "setStakingRewardRate");
141
+ _authorize(functions, IInstance.setStakingMaxAmount.selector, "setStakingMaxAmount");
142
+ _authorize(functions, IInstance.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
143
+ _authorize(functions, IInstance.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
123
144
 
124
145
  // custom authz
125
- _authorize(functions, Instance.createRole.selector, "createRole");
126
- _authorize(functions, Instance.grantRole.selector, "grantRole");
127
- _authorize(functions, Instance.revokeRole.selector, "revokeRole");
128
- _authorize(functions, Instance.createTarget.selector, "createTarget");
129
- _authorize(functions, Instance.setTargetFunctionRole.selector, "setTargetFunctionRole");
146
+ _authorize(functions, IInstance.createRole.selector, "createRole");
147
+ _authorize(functions, IInstance.setRoleActive.selector, "setRoleActive");
148
+ _authorize(functions, IInstance.grantRole.selector, "grantRole");
149
+ _authorize(functions, IInstance.revokeRole.selector, "revokeRole");
150
+ _authorize(functions, IInstance.createTarget.selector, "createTarget");
151
+ _authorize(functions, IInstance.authorizeFunctions.selector, "authorizeFunctions");
152
+ _authorize(functions, IInstance.unauthorizeFunctions.selector, "unauthorizeFunctions");
130
153
 
131
154
  // authorize instance service role
132
155
  functions = _authorizeForTarget(INSTANCE_TARGET_NAME, getServiceRole(INSTANCE()));
133
- _authorize(functions, Instance.setInstanceReader.selector, "setInstanceReader");
156
+ _authorize(functions, IInstance.setInstanceReader.selector, "setInstanceReader");
134
157
  }
135
158
 
136
159
 
@@ -141,8 +164,16 @@ contract InstanceAuthorizationV3
141
164
 
142
165
  // authorize component service role
143
166
  functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(INSTANCE()));
144
- _authorize(functions, InstanceAdmin.setInstanceLocked.selector, "setInstanceLocked");
167
+ _authorize(functions, InstanceAdmin.createRole.selector, "createRole");
168
+ _authorize(functions, InstanceAdmin.setRoleActive.selector, "setRoleActive");
169
+ _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
170
+ _authorize(functions, InstanceAdmin.revokeRole.selector, "revokeRole");
171
+
172
+ _authorize(functions, InstanceAdmin.createTarget.selector, "createTarget");
173
+ _authorize(functions, InstanceAdmin.authorizeFunctions.selector, "authorizeFunctions");
174
+ _authorize(functions, InstanceAdmin.unauthorizeFunctions.selector, "unauthorizeFunctions");
145
175
  _authorize(functions, InstanceAdmin.setTargetLocked.selector, "setTargetLocked");
176
+ _authorize(functions, InstanceAdmin.setInstanceLocked.selector, "setInstanceLocked");
146
177
 
147
178
  // authorize component service role
148
179
  functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(COMPONENT()));