@etherisc/gif-next 0.0.2-98bc1be-984 → 0.0.2-98e9f45-792

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 (462) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1500 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -292
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +255 -121
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +67 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -149
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +152 -47
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +265 -135
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +327 -213
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1137 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -26
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -157
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1406 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +402 -62
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +111 -43
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -278
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -90
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -417
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -126
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +40 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +33 -44
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +32 -40
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1254 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +88 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  122. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  124. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +183 -108
  126. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  128. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  129. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -68
  130. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  132. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -179
  133. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +49 -49
  135. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -153
  137. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +55 -75
  139. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  140. package/artifacts/contracts/product/Product.sol/Product.json +35 -220
  141. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  143. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  146. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  148. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  151. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  152. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  154. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  160. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  162. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  163. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  164. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  165. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  166. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  167. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  168. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  170. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  171. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -86
  172. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +69 -61
  174. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -26
  181. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  183. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  185. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  192. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  193. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -117
  195. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  197. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  199. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  200. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  201. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  203. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  204. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  208. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  209. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  211. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  212. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  213. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
  219. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  220. package/artifacts/contracts/staking/Staking.sol/Staking.json +55 -119
  221. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  222. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +46 -46
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  235. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  236. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  243. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  247. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  251. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  261. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  271. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  273. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  277. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  279. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  281. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  283. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  285. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  286. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  287. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  288. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  289. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  290. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  291. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  292. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  293. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  294. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  295. package/contracts/authorization/Authorization.sol +217 -0
  296. package/contracts/authorization/IAccess.sol +48 -0
  297. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  298. package/contracts/authorization/IAuthorization.sol +54 -0
  299. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  300. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  301. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  302. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  303. package/contracts/distribution/BasicDistribution.sol +138 -0
  304. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  305. package/contracts/distribution/Distribution.sol +144 -110
  306. package/contracts/distribution/DistributionService.sol +77 -38
  307. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  308. package/contracts/distribution/IDistributionComponent.sol +25 -39
  309. package/contracts/distribution/IDistributionService.sol +23 -3
  310. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  311. package/contracts/instance/IInstance.sol +8 -9
  312. package/contracts/instance/IInstanceService.sol +13 -18
  313. package/contracts/instance/Instance.sol +61 -70
  314. package/contracts/instance/InstanceAdmin.sol +221 -267
  315. package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
  316. package/contracts/instance/InstanceReader.sol +46 -16
  317. package/contracts/instance/InstanceService.sol +104 -76
  318. package/contracts/instance/InstanceServiceManager.sol +2 -6
  319. package/contracts/instance/InstanceStore.sol +27 -5
  320. package/contracts/instance/base/ObjectLifecycle.sol +110 -0
  321. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  322. package/contracts/instance/module/IBundle.sol +1 -1
  323. package/contracts/instance/module/IComponents.sol +1 -7
  324. package/contracts/instance/module/IDistribution.sol +0 -1
  325. package/contracts/instance/module/IPolicy.sol +17 -17
  326. package/contracts/mock/Dip.sol +1 -1
  327. package/contracts/oracle/BasicOracle.sol +48 -0
  328. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  329. package/contracts/oracle/IOracle.sol +16 -0
  330. package/contracts/oracle/IOracleComponent.sol +2 -1
  331. package/contracts/oracle/Oracle.sol +72 -51
  332. package/contracts/oracle/OracleServiceManager.sol +2 -5
  333. package/contracts/pool/BasicPool.sol +166 -0
  334. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  335. package/contracts/pool/BundleService.sol +189 -47
  336. package/contracts/pool/BundleServiceManager.sol +2 -5
  337. package/contracts/pool/IBundleService.sol +33 -5
  338. package/contracts/pool/IPoolComponent.sol +6 -60
  339. package/contracts/pool/IPoolService.sol +36 -26
  340. package/contracts/pool/Pool.sol +164 -137
  341. package/contracts/pool/PoolService.sol +162 -105
  342. package/contracts/pool/PoolServiceManager.sol +2 -5
  343. package/contracts/product/ApplicationService.sol +51 -56
  344. package/contracts/product/ApplicationServiceManager.sol +2 -2
  345. package/contracts/product/BasicProduct.sol +52 -0
  346. package/contracts/product/BasicProductAuthorization.sol +43 -0
  347. package/contracts/product/ClaimService.sol +13 -39
  348. package/contracts/product/ClaimServiceManager.sol +2 -2
  349. package/contracts/product/IApplicationService.sol +1 -0
  350. package/contracts/product/IClaimService.sol +1 -0
  351. package/contracts/product/IPolicyService.sol +25 -30
  352. package/contracts/product/IPricingService.sol +7 -7
  353. package/contracts/product/IProductComponent.sol +7 -10
  354. package/contracts/product/IProductService.sol +1 -0
  355. package/contracts/product/PolicyService.sol +272 -171
  356. package/contracts/product/PolicyServiceManager.sol +2 -5
  357. package/contracts/product/PricingService.sol +42 -41
  358. package/contracts/product/PricingServiceManager.sol +2 -5
  359. package/contracts/product/Product.sol +129 -100
  360. package/contracts/product/ProductService.sol +7 -32
  361. package/contracts/product/ProductServiceManager.sol +2 -5
  362. package/contracts/registry/IRegistry.sol +26 -16
  363. package/contracts/registry/IRegistryService.sol +6 -6
  364. package/contracts/registry/Registry.sol +81 -87
  365. package/contracts/registry/RegistryAdmin.sol +127 -86
  366. package/contracts/registry/RegistryService.sol +4 -18
  367. package/contracts/registry/RegistryServiceManager.sol +2 -2
  368. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  369. package/contracts/registry/ReleaseRegistry.sol +485 -0
  370. package/contracts/registry/ServiceAuthorizationV3.sol +16 -17
  371. package/contracts/registry/TokenRegistry.sol +2 -2
  372. package/contracts/shared/Component.sol +24 -37
  373. package/contracts/shared/ComponentService.sol +96 -72
  374. package/contracts/shared/ComponentServiceManager.sol +2 -2
  375. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  376. package/contracts/shared/IComponent.sol +4 -4
  377. package/contracts/shared/IComponentService.sol +15 -9
  378. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  379. package/contracts/shared/IKeyValueStore.sol +1 -0
  380. package/contracts/shared/ILifecycle.sol +1 -2
  381. package/contracts/shared/IService.sol +1 -1
  382. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  383. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  384. package/contracts/shared/KeyValueStore.sol +6 -2
  385. package/contracts/shared/Lifecycle.sol +16 -69
  386. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  387. package/contracts/shared/NftOwnable.sol +2 -2
  388. package/contracts/shared/PolicyHolder.sol +2 -5
  389. package/contracts/shared/Service.sol +3 -4
  390. package/contracts/shared/TokenHandler.sol +100 -19
  391. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  392. package/contracts/staking/IStaking.sol +1 -2
  393. package/contracts/staking/IStakingService.sol +12 -5
  394. package/contracts/staking/StakeManagerLib.sol +0 -25
  395. package/contracts/staking/Staking.sol +21 -37
  396. package/contracts/staking/StakingLifecycle.sol +23 -0
  397. package/contracts/staking/StakingManager.sol +2 -6
  398. package/contracts/staking/StakingReader.sol +12 -16
  399. package/contracts/staking/StakingService.sol +8 -12
  400. package/contracts/staking/StakingServiceManager.sol +2 -2
  401. package/contracts/staking/StakingStore.sol +15 -23
  402. package/contracts/type/Amount.sol +12 -5
  403. package/contracts/type/Blocknumber.sol +7 -1
  404. package/contracts/type/ObjectType.sol +52 -18
  405. package/contracts/type/Referral.sol +1 -0
  406. package/contracts/type/RoleId.sol +55 -82
  407. package/contracts/type/Seconds.sol +13 -1
  408. package/contracts/type/Timestamp.sol +11 -1
  409. package/contracts/type/UFixed.sol +34 -9
  410. package/contracts/type/Version.sol +3 -1
  411. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  412. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  413. package/package.json +6 -3
  414. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  415. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  416. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  417. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  418. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  419. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  420. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  421. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  422. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  423. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  424. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  425. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  426. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  427. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  428. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  429. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  430. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  431. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  432. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  433. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  434. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  435. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  436. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  437. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  438. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  439. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  440. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  441. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  442. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  443. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  444. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  445. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  446. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  447. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  448. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  449. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  450. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  451. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  452. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  453. package/contracts/registry/ReleaseManager.sol +0 -527
  454. package/contracts/shared/AccessManagerCustom.sol +0 -741
  455. package/contracts/shared/AccessManagerExtended.sol +0 -481
  456. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  457. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  458. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  459. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  460. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  461. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  462. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -0,0 +1,203 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {
9
+ DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
10
+ } from "../../contracts/type/RoleId.sol";
11
+
12
+ import {BundleSet} from "../instance/BundleSet.sol";
13
+ import {IAccess} from "../authorization/IAccess.sol";
14
+ import {Instance} from "../instance/Instance.sol";
15
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
+ import {InstanceStore} from "../instance/InstanceStore.sol";
17
+ import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
18
+
19
+
20
+ contract InstanceAuthorizationV3
21
+ is ModuleAuthorization
22
+ {
23
+
24
+ string public constant INSTANCE_TARGET_NAME = "Instance";
25
+ string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
26
+ string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
27
+ string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
28
+
29
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
30
+ string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
31
+ string public constant ORACLE_OWNER_ROLE_NAME = "OracleOwnerRole";
32
+ string public constant POOL_OWNER_ROLE_NAME = "PoolOwnerRole";
33
+ string public constant PRODUCT_OWNER_ROLE_NAME = "ProductOwnerRole";
34
+
35
+ constructor() ModuleAuthorization(INSTANCE_TARGET_NAME) {}
36
+
37
+
38
+ function _setupRoles()
39
+ internal
40
+ override
41
+ {
42
+ _addGifRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME);
43
+ _addGifRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME);
44
+ _addGifRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME);
45
+ _addGifRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME);
46
+ }
47
+
48
+
49
+ function _setupTargets()
50
+ internal
51
+ override
52
+ {
53
+ // instance target
54
+ _addTargetWithRole(
55
+ INSTANCE_TARGET_NAME,
56
+ _getTargetRoleId(INSTANCE()),
57
+ INSTANCE_ROLE_NAME);
58
+
59
+ // instance supporting targets
60
+ _addTarget(INSTANCE_STORE_TARGET_NAME);
61
+ _addTarget(INSTANCE_ADMIN_TARGET_NAME);
62
+ _addTarget(BUNDLE_SET_TARGET_NAME);
63
+
64
+ // service targets relevant to instance
65
+ _addServiceTargetWithRole(INSTANCE());
66
+ _addServiceTargetWithRole(COMPONENT());
67
+ _addServiceTargetWithRole(DISTRIBUTION());
68
+ _addServiceTargetWithRole(ORACLE());
69
+ _addServiceTargetWithRole(POOL());
70
+ _addServiceTargetWithRole(BUNDLE());
71
+ _addServiceTargetWithRole(PRODUCT());
72
+ _addServiceTargetWithRole(APPLICATION());
73
+ _addServiceTargetWithRole(POLICY());
74
+ _addServiceTargetWithRole(CLAIM());
75
+ }
76
+
77
+
78
+ function _setupTargetAuthorizations()
79
+ internal
80
+ override
81
+ {
82
+ _setupInstanceAuthorization();
83
+ _setupInstanceAdminAuthorization();
84
+ _setupInstanceStoreAuthorization();
85
+ _setupBundleSetAuthorization();
86
+ }
87
+
88
+
89
+ function _setupBundleSetAuthorization()
90
+ internal
91
+ {
92
+ IAccess.FunctionInfo[] storage functions;
93
+
94
+ // authorize bundle service role
95
+ functions = _authorizeForTarget(BUNDLE_SET_TARGET_NAME, getServiceRole(BUNDLE()));
96
+ _authorize(functions, BundleSet.linkPolicy.selector, "linkPolicy");
97
+ _authorize(functions, BundleSet.unlinkPolicy.selector, "unlinkPolicy");
98
+ _authorize(functions, BundleSet.add.selector, "add");
99
+ _authorize(functions, BundleSet.lock.selector, "lock");
100
+ _authorize(functions, BundleSet.unlock.selector, "unlock");
101
+ }
102
+
103
+
104
+ function _setupInstanceAuthorization()
105
+ internal
106
+ {
107
+ IAccess.FunctionInfo[] storage functions;
108
+
109
+ // authorize instance service role
110
+ functions = _authorizeForTarget(INSTANCE_TARGET_NAME, getServiceRole(INSTANCE()));
111
+ _authorize(functions, Instance.setInstanceReader.selector, "setInstanceReader");
112
+ }
113
+
114
+
115
+ function _setupInstanceAdminAuthorization()
116
+ internal
117
+ {
118
+ IAccess.FunctionInfo[] storage functions;
119
+
120
+ // authorize instance role
121
+ functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getTargetRoleId(INSTANCE()));
122
+ _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
123
+
124
+ // authorize instance service role
125
+ // functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(INSTANCE()));
126
+ }
127
+
128
+
129
+ function _setupInstanceStoreAuthorization()
130
+ internal
131
+ {
132
+ IAccess.FunctionInfo[] storage functions;
133
+
134
+ // authorize component service role
135
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(COMPONENT()));
136
+ _authorize(functions, InstanceStore.createComponent.selector, "createComponent");
137
+ _authorize(functions, InstanceStore.updateComponent.selector, "updateComponent");
138
+ _authorize(functions, InstanceStore.createPool.selector, "createPool");
139
+ _authorize(functions, InstanceStore.createProduct.selector, "createProduct");
140
+ _authorize(functions, InstanceStore.updateProduct.selector, "updateProduct");
141
+ _authorize(functions, InstanceStore.increaseBalance.selector, "increaseBalance");
142
+ _authorize(functions, InstanceStore.decreaseBalance.selector, "decreaseBalance");
143
+ _authorize(functions, InstanceStore.increaseFees.selector, "increaseFees");
144
+ _authorize(functions, InstanceStore.decreaseFees.selector, "decreaseFees");
145
+
146
+ // authorize distribution service role
147
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(DISTRIBUTION()));
148
+ _authorize(functions, InstanceStore.createDistributorType.selector, "createDistributorType");
149
+ _authorize(functions, InstanceStore.updateDistributorType.selector, "updateDistributorType");
150
+ _authorize(functions, InstanceStore.updateDistributorTypeState.selector, "updateDistributorTypeState");
151
+ _authorize(functions, InstanceStore.createDistributor.selector, "createDistributor");
152
+ _authorize(functions, InstanceStore.updateDistributor.selector, "updateDistributor");
153
+ _authorize(functions, InstanceStore.updateDistributorState.selector, "updateDistributorState");
154
+ _authorize(functions, InstanceStore.createReferral.selector, "createReferral");
155
+ _authorize(functions, InstanceStore.updateReferral.selector, "updateReferral");
156
+ _authorize(functions, InstanceStore.updateReferralState.selector, "updateReferralState");
157
+
158
+ // authorize oracle service role
159
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(ORACLE()));
160
+ _authorize(functions, InstanceStore.createRequest.selector, "createRequest");
161
+ _authorize(functions, InstanceStore.updateRequest.selector, "updateRequest");
162
+ _authorize(functions, InstanceStore.updateRequestState.selector, "updateRequestState");
163
+
164
+ // authorize pool service role
165
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POOL()));
166
+ _authorize(functions, InstanceStore.updatePool.selector, "updatePool");
167
+
168
+ // authorize bundle service role
169
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(BUNDLE()));
170
+ _authorize(functions, InstanceStore.createBundle.selector, "createBundle");
171
+ _authorize(functions, InstanceStore.updateBundle.selector, "updateBundle");
172
+ _authorize(functions, InstanceStore.updateBundleState.selector, "updateBundleState");
173
+ _authorize(functions, InstanceStore.increaseLocked.selector, "increaseLocked");
174
+ _authorize(functions, InstanceStore.decreaseLocked.selector, "decreaseLocked");
175
+
176
+ // authorize product service role
177
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(PRODUCT()));
178
+ _authorize(functions, InstanceStore.createRisk.selector, "createRisk");
179
+ _authorize(functions, InstanceStore.updateRisk.selector, "updateRisk");
180
+ _authorize(functions, InstanceStore.updateRiskState.selector, "updateRiskState");
181
+
182
+ // authorize application service role
183
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(APPLICATION()));
184
+ _authorize(functions, InstanceStore.createApplication.selector, "createApplication");
185
+ _authorize(functions, InstanceStore.updateApplication.selector, "updateApplication");
186
+ _authorize(functions, InstanceStore.updateApplicationState.selector, "updateApplicationState");
187
+
188
+ // authorize policy service role
189
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
190
+ _authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
191
+ _authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
192
+ _authorize(functions, InstanceStore.createPremium.selector, "createPremium");
193
+
194
+ // authorize claim service role
195
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
196
+ _authorize(functions, InstanceStore.updatePolicyClaims.selector, "updatePolicyClaims");
197
+ _authorize(functions, InstanceStore.createClaim.selector, "createClaim");
198
+ _authorize(functions, InstanceStore.updateClaim.selector, "updateClaim");
199
+ _authorize(functions, InstanceStore.createPayout.selector, "createPayout");
200
+ _authorize(functions, InstanceStore.updatePayout.selector, "updatePayout");
201
+ }
202
+ }
203
+
@@ -1,25 +1,20 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount} from "../type/Amount.sol";
7
5
  import {ClaimId} from "../type/ClaimId.sol";
8
6
  import {DistributorType} from "../type/DistributorType.sol";
9
- import {Fee, FeeLib} from "../type/Fee.sol";
10
7
  import {Key32} from "../type/Key32.sol";
11
8
  import {NftId} from "../type/NftId.sol";
12
- import {ObjectType, COMPONENT, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
9
+ import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
13
10
  import {PayoutId} from "../type/PayoutId.sol";
14
11
  import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
15
12
  import {RequestId} from "../type/RequestId.sol";
16
13
  import {RiskId} from "../type/RiskId.sol";
17
14
  import {RoleId} from "../type/RoleId.sol";
18
15
  import {StateId} from "../type/StateId.sol";
19
- import {UFixed, MathLib, UFixedLib} from "../type/UFixed.sol";
20
- import {Version} from "../type/Version.sol";
16
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
21
17
 
22
- import {IRegistry} from "../registry/IRegistry.sol";
23
18
  import {IBundle} from "../instance/module/IBundle.sol";
24
19
  import {IComponents} from "../instance/module/IComponents.sol";
25
20
  import {IDistribution} from "../instance/module/IDistribution.sol";
@@ -38,24 +33,29 @@ contract InstanceReader {
38
33
  error ErrorInstanceReaderAlreadyInitialized();
39
34
  error ErrorInstanceReaderInstanceAddressZero();
40
35
 
41
- bool private _initialized;
36
+ bool private _initialized = false;
42
37
 
43
38
  IInstance internal _instance;
44
39
  InstanceStore internal _store;
45
40
 
46
- function initialize(address instance) public {
41
+ /// @dev This initializer needs to be called from the instance itself.
42
+ function initialize() public {
47
43
  if(_initialized) {
48
44
  revert ErrorInstanceReaderAlreadyInitialized();
49
45
  }
50
46
 
51
- if(instance == address(0)) {
52
- revert ErrorInstanceReaderInstanceAddressZero();
53
- }
47
+ initializeWithInstance(msg.sender);
48
+ }
54
49
 
55
- _instance = IInstance(instance);
56
- _store = _instance.getInstanceStore();
50
+ /// @dev This initializer needs to be called from the instance itself.
51
+ function initializeWithInstance(address instanceAddress) public {
52
+ if(_initialized) {
53
+ revert ErrorInstanceReaderAlreadyInitialized();
54
+ }
57
55
 
58
56
  _initialized = true;
57
+ _instance = IInstance(instanceAddress);
58
+ _store = _instance.getInstanceStore();
59
59
  }
60
60
 
61
61
 
@@ -80,6 +80,25 @@ contract InstanceReader {
80
80
  return _store.getState(toPolicyKey(policyNftId));
81
81
  }
82
82
 
83
+ function getPremiumInfo(NftId policyNftId)
84
+ public
85
+ view
86
+ returns (IPolicy.PremiumInfo memory info)
87
+ {
88
+ bytes memory data = _store.getData(toPremiumKey(policyNftId));
89
+ if (data.length > 0) {
90
+ return abi.decode(data, (IPolicy.PremiumInfo));
91
+ }
92
+ }
93
+
94
+ function getBundleState(NftId bundleNftId)
95
+ public
96
+ view
97
+ returns (StateId state)
98
+ {
99
+ return _store.getState(toBundleKey(bundleNftId));
100
+ }
101
+
83
102
  /// @dev returns true iff policy may be closed
84
103
  /// a policy can be closed all conditions below are met
85
104
  /// - policy exists
@@ -339,15 +358,26 @@ contract InstanceReader {
339
358
 
340
359
 
341
360
  function hasRole(address account, RoleId roleId) public view returns (bool isMember) {
342
- (isMember, ) = _instance.getInstanceAccessManager().hasRole(
343
- roleId.toInt(), account);
361
+ return _instance.getInstanceAdmin().hasRole(account, roleId);
344
362
  }
345
363
 
346
364
 
365
+ function hasAdminRole(address account, RoleId roleId) public view returns (bool isMember) {
366
+ return _instance.getInstanceAdmin().hasAdminRole(account, roleId);
367
+ }
368
+
369
+
370
+ function isTargetLocked(address target) public view returns (bool) {
371
+ return _instance.getInstanceAdmin().isTargetLocked(target);
372
+ }
373
+
347
374
  function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
348
375
  return policyNftId.toKey32(POLICY());
349
376
  }
350
377
 
378
+ function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
379
+ return policyNftId.toKey32(PREMIUM());
380
+ }
351
381
 
352
382
  function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
353
383
  return distributorNftId.toKey32(DISTRIBUTOR());
@@ -4,20 +4,20 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
7
8
  import {Amount} from "../type/Amount.sol";
8
- import {BundleManager} from "./BundleManager.sol";
9
+ import {BundleSet} from "./BundleSet.sol";
9
10
  import {ChainNft} from "../registry/ChainNft.sol";
10
11
  import {NftId} from "../type/NftId.sol";
11
12
  import {RoleId} from "../type/RoleId.sol";
12
13
  import {SecondsLib} from "../type/Seconds.sol";
13
14
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
14
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
15
+ import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
15
16
  import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
16
17
 
17
18
  import {Service} from "../shared/Service.sol";
18
19
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
19
20
  import {IService} from "../shared/IService.sol";
20
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
21
21
 
22
22
  import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
23
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
@@ -29,12 +29,12 @@ import {IStakingService} from "../staking/IStakingService.sol";
29
29
  import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
30
 
31
31
  import {Instance} from "./Instance.sol";
32
+ import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
32
33
  import {IInstance} from "./IInstance.sol";
33
34
  import {InstanceAdmin} from "./InstanceAdmin.sol";
34
35
  import {IInstanceService} from "./IInstanceService.sol";
35
36
  import {InstanceReader} from "./InstanceReader.sol";
36
37
  import {InstanceStore} from "./InstanceStore.sol";
37
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
38
38
  import {Seconds} from "../type/Seconds.sol";
39
39
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
40
40
 
@@ -54,7 +54,7 @@ contract InstanceService is
54
54
  address internal _masterInstanceAdmin;
55
55
  address internal _masterInstance;
56
56
  address internal _masterInstanceReader;
57
- address internal _masterInstanceBundleManager;
57
+ address internal _masterInstanceBundleSet;
58
58
  address internal _masterInstanceStore;
59
59
 
60
60
 
@@ -94,78 +94,36 @@ contract InstanceService is
94
94
  _;
95
95
  }
96
96
 
97
- function createInstanceClone()
97
+ function createInstance()
98
98
  external
99
99
  returns (
100
100
  Instance clonedInstance,
101
101
  NftId clonedInstanceNftId
102
102
  )
103
103
  {
104
+ // tx sender will become instance owner
104
105
  address instanceOwner = msg.sender;
105
- AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
- Clones.clone(_masterAccessManager));
107
-
108
- // initially grants ADMIN_ROLE to this (being the instance service).
109
- // This will allow the instance service to bootstrap the authorizations of the instance.
110
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
111
- clonedAccessManager.initialize(address(this));
112
-
113
- clonedInstance = Instance(Clones.clone(_masterInstance));
114
- clonedInstance.initialize(
115
- address(clonedAccessManager),
116
- address(getRegistry()),
117
- instanceOwner);
118
- // initialize and set before instance reader
119
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
120
- clonedInstanceStore.initialize(address(clonedInstance));
121
- clonedInstance.setInstanceStore(clonedInstanceStore);
122
-
123
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
- clonedInstanceReader.initialize(address(clonedInstance));
125
- clonedInstance.setInstanceReader(clonedInstanceReader);
126
-
127
- BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
- clonedBundleManager.initialize(address(clonedInstance));
129
- clonedInstance.setBundleManager(clonedBundleManager);
130
-
131
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
132
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
133
- clonedInstanceAdmin.initialize(address(clonedInstance));
134
- clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
135
-
136
- // TODO amend setters with instance specific , policy manager ...
137
-
138
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
139
- InstanceAuthorizationsLib.grantInitialAuthorizations(
140
- clonedAccessManager,
141
- clonedInstanceAdmin,
142
- clonedInstance,
143
- clonedBundleManager,
144
- clonedInstanceStore,
145
- instanceOwner,
146
- getRegistry(),
147
- getVersion().toMajorPart());
148
106
 
149
- clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
107
+ // create instance admin and instance
108
+ InstanceAdmin instanceAdmin = _createInstanceAdmin();
109
+ clonedInstance = _createInstance(instanceAdmin, instanceOwner);
150
110
 
151
- // register new instance with registry
152
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
153
- clonedInstanceNftId = info.nftId;
111
+ // register cloned instance with registry
112
+ clonedInstanceNftId = _registryService.registerInstance(
113
+ clonedInstance, instanceOwner).nftId;
154
114
 
155
- // create corresponding staking target
115
+ // register cloned instance as staking target
156
116
  _stakingService.createInstanceTarget(
157
117
  clonedInstanceNftId,
158
118
  TargetManagerLib.getDefaultLockingPeriod(),
159
119
  TargetManagerLib.getDefaultRewardRate());
160
120
 
121
+ // MUST be set after instance is set up and registered
122
+ instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
123
+
161
124
  emit LogInstanceCloned(
162
- address(clonedAccessManager),
163
- address(clonedInstanceAdmin),
164
- address(clonedInstance),
165
- address(clonedInstanceStore),
166
- address(clonedBundleManager),
167
- address(clonedInstanceReader),
168
- clonedInstanceNftId);
125
+ clonedInstanceNftId,
126
+ address(clonedInstance));
169
127
  }
170
128
 
171
129
 
@@ -239,9 +197,10 @@ contract InstanceService is
239
197
  instanceNftId).objectAddress);
240
198
 
241
199
  // no revert in case already locked
242
- instance.getInstanceAdmin().setTargetLockedByService(
243
- componentAddress,
244
- locked);
200
+ // TODO refactor/implement
201
+ // instance.getInstanceAdmin().setTargetLockedByService(
202
+ // componentAddress,
203
+ // locked);
245
204
  }
246
205
 
247
206
 
@@ -255,38 +214,39 @@ contract InstanceService is
255
214
  returns(NftId masterInstanceNftId)
256
215
  {
257
216
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
258
- if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
259
217
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
260
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
218
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
261
219
 
262
220
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
263
221
 
264
222
  IInstance instance = IInstance(instanceAddress);
223
+ address accessManagerAddress = instance.authority();
265
224
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
266
225
  address instanceAdminAddress = address(instanceAdmin);
267
226
  InstanceReader instanceReader = instance.getInstanceReader();
268
227
  address instanceReaderAddress = address(instanceReader);
269
- BundleManager bundleManager = instance.getBundleManager();
228
+ BundleSet bundleManager = instance.getBundleSet();
270
229
  address bundleManagerAddress = address(bundleManager);
271
230
  InstanceStore instanceStore = instance.getInstanceStore();
272
231
  address instanceStoreAddress = address(instanceStore);
273
232
 
233
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
274
234
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
275
235
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
276
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
236
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
277
237
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
278
238
 
279
239
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
280
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
240
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
281
241
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
282
242
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
283
243
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
284
244
 
285
- _masterAccessManager = instance.authority();
245
+ _masterAccessManager = accessManagerAddress;
286
246
  _masterInstanceAdmin = instanceAdminAddress;
287
247
  _masterInstance = instanceAddress;
288
248
  _masterInstanceReader = instanceReaderAddress;
289
- _masterInstanceBundleManager = bundleManagerAddress;
249
+ _masterInstanceBundleSet = bundleManagerAddress;
290
250
  _masterInstanceStore = instanceStoreAddress;
291
251
 
292
252
  IInstance masterInstance = IInstance(_masterInstance);
@@ -314,7 +274,7 @@ contract InstanceService is
314
274
  Instance instance = Instance(instanceInfo.objectAddress);
315
275
 
316
276
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
- upgradedInstanceReaderClone.initialize(address(instance));
277
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
318
278
  instance.setInstanceReader(upgradedInstanceReaderClone);
319
279
  }
320
280
 
@@ -340,6 +300,25 @@ contract InstanceService is
340
300
  }
341
301
 
342
302
 
303
+ function initializeAuthorization(
304
+ NftId instanceNftId,
305
+ IInstanceLinkedComponent component
306
+ )
307
+ external
308
+ virtual
309
+ restricted()
310
+ {
311
+ (IInstance instance, ) = _validateInstanceAndComponent(
312
+ instanceNftId,
313
+ address(component));
314
+
315
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
316
+ instanceAdmin.initializeComponentAuthorization(
317
+ component,
318
+ component.getAuthorization());
319
+ }
320
+
321
+
343
322
  function createComponentTarget(
344
323
  NftId instanceNftId,
345
324
  address targetAddress,
@@ -360,6 +339,53 @@ contract InstanceService is
360
339
  );
361
340
  }
362
341
 
342
+ /// @dev create new cloned instance admin
343
+ /// function used to setup a new instance
344
+ function _createInstanceAdmin()
345
+ internal
346
+ virtual
347
+ returns (InstanceAdmin clonedInstanceAdmin)
348
+ {
349
+ // start with setting up a new OZ access manager
350
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
351
+ Clones.clone(_masterAccessManager));
352
+
353
+ // set up the instance admin
354
+ clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
355
+ clonedAccessManager.initialize(
356
+ address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
357
+
358
+ clonedInstanceAdmin.initialize(
359
+ clonedAccessManager,
360
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
361
+ }
362
+
363
+
364
+ /// @dev create new cloned instance
365
+ /// function used to setup a new instance
366
+ function _createInstance(
367
+ InstanceAdmin instanceAdmin,
368
+ address instanceOwner
369
+ )
370
+ internal
371
+ virtual
372
+ returns (Instance clonedInstance)
373
+ {
374
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
375
+ BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
376
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
377
+
378
+ // clone instance
379
+ clonedInstance = Instance(Clones.clone(_masterInstance));
380
+ clonedInstance.initialize(
381
+ instanceAdmin,
382
+ clonedInstanceStore,
383
+ clonedBundleSet,
384
+ clonedInstanceReader,
385
+ getRegistry(),
386
+ instanceOwner);
387
+ }
388
+
363
389
 
364
390
  /// all gif targets MUST be children of instanceNftId
365
391
  function _createGifTarget(
@@ -379,12 +405,14 @@ contract InstanceService is
379
405
  ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
380
406
 
381
407
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
382
- instanceAdmin.createGifTarget(targetAddress, targetName);
408
+
409
+ // TODO refactor/implement
410
+ // instanceAdmin.createGifTarget(targetAddress, targetName);
411
+
383
412
  // set proposed target config
384
- // TODO restriction: gif targets are set only once and only here?
385
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
386
413
  for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
387
- instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
414
+ // TODO refactor/implement
415
+ // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
388
416
  }
389
417
  }
390
418
 
@@ -1,13 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Instance} from "./Instance.sol";
5
- import {IVersionable} from "../shared/IVersionable.sol";
6
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
6
  import {InstanceService} from "./InstanceService.sol";
8
- import {Registry} from "../registry/Registry.sol";
9
- import {RegistryService} from "../registry/RegistryService.sol";
10
- import {REGISTRY} from "../type/ObjectType.sol";
11
7
 
12
8
  contract InstanceServiceManager is ProxyManager {
13
9