@etherisc/gif-next 0.0.2-a6faeb6-912 → 0.0.2-a733491-751

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 (344) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +853 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +887 -242
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +160 -100
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +791 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +655 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +654 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +600 -217
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +543 -152
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +908 -109
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +201 -167
  27. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  28. package/artifacts/contracts/instance/Instance.sol/Instance.json +814 -956
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +465 -184
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +375 -369
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +295 -126
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  40. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +180 -179
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +65 -44
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  55. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  57. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  59. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  61. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  63. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  65. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  67. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +441 -214
  69. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  70. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +317 -80
  71. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  73. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  75. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  76. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
  77. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  79. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +24 -416
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +179 -504
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +294 -105
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +189 -570
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  97. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  99. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
  101. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  103. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  104. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
  106. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  107. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  108. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  110. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  112. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  114. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  116. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  117. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  118. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  119. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  120. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  121. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  122. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  125. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  126. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  127. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  129. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  133. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  135. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  137. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  139. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  141. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Service.sol/Service.json +119 -173
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +140 -230
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  164. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  165. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  167. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  169. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  170. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  172. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  173. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  174. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  177. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  179. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  181. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  183. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  191. package/contracts/components/Component.sol +241 -0
  192. package/contracts/components/Distribution.sol +209 -64
  193. package/contracts/components/IComponent.sol +54 -0
  194. package/contracts/components/IDistributionComponent.sol +59 -3
  195. package/contracts/components/IPoolComponent.sol +50 -29
  196. package/contracts/components/IProductComponent.sol +7 -3
  197. package/contracts/components/Pool.sol +136 -149
  198. package/contracts/components/Product.sol +115 -119
  199. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
  200. package/contracts/instance/BundleManager.sol +7 -11
  201. package/contracts/instance/IInstance.sol +48 -10
  202. package/contracts/instance/IInstanceService.sol +35 -4
  203. package/contracts/instance/Instance.sol +102 -260
  204. package/contracts/instance/InstanceAccessManager.sol +463 -171
  205. package/contracts/instance/InstanceReader.sol +3 -25
  206. package/contracts/instance/InstanceService.sol +328 -114
  207. package/contracts/instance/InstanceServiceManager.sol +6 -9
  208. package/contracts/instance/ObjectManager.sol +7 -24
  209. package/contracts/instance/base/ComponentService.sol +134 -0
  210. package/contracts/instance/module/IAccess.sol +36 -20
  211. package/contracts/instance/module/IPolicy.sol +4 -2
  212. package/contracts/instance/module/ISetup.sol +5 -4
  213. package/contracts/instance/service/ApplicationService.sol +268 -0
  214. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  215. package/contracts/instance/service/BundleService.sol +298 -0
  216. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  217. package/contracts/instance/service/ClaimService.sol +151 -0
  218. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  219. package/contracts/instance/service/DistributionService.sol +235 -28
  220. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  221. package/contracts/instance/service/IApplicationService.sol +82 -0
  222. package/contracts/instance/service/IBundleService.sol +54 -0
  223. package/contracts/instance/service/IClaimService.sol +61 -0
  224. package/contracts/instance/service/IDistributionService.sol +53 -0
  225. package/contracts/instance/service/IPolicyService.sol +89 -0
  226. package/contracts/instance/service/IPoolService.sol +2 -33
  227. package/contracts/instance/service/IProductService.sol +2 -72
  228. package/contracts/instance/service/PolicyService.sol +474 -0
  229. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  230. package/contracts/instance/service/PoolService.sol +51 -213
  231. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  232. package/contracts/instance/service/ProductService.sol +131 -460
  233. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  234. package/contracts/registry/ChainNft.sol +1 -1
  235. package/contracts/registry/IRegistry.sol +39 -19
  236. package/contracts/registry/IRegistryService.sol +30 -13
  237. package/contracts/registry/Registry.sol +246 -225
  238. package/contracts/registry/RegistryAccessManager.sol +216 -0
  239. package/contracts/registry/RegistryService.sol +96 -171
  240. package/contracts/registry/RegistryServiceManager.sol +21 -39
  241. package/contracts/registry/ReleaseManager.sol +322 -0
  242. package/contracts/registry/TokenRegistry.sol +22 -17
  243. package/contracts/shared/ERC165.sol +14 -12
  244. package/contracts/shared/INftOwnable.sol +11 -10
  245. package/contracts/shared/IPolicyHolder.sol +26 -0
  246. package/contracts/shared/IRegisterable.sol +4 -6
  247. package/contracts/shared/IRegistryLinked.sol +12 -0
  248. package/contracts/shared/IService.sol +2 -1
  249. package/contracts/shared/IVersionable.sol +4 -47
  250. package/contracts/shared/NftOwnable.sol +66 -80
  251. package/contracts/shared/PolicyHolder.sol +81 -0
  252. package/contracts/shared/ProxyManager.sol +100 -25
  253. package/contracts/shared/Registerable.sol +14 -30
  254. package/contracts/shared/RegistryLinked.sol +48 -0
  255. package/contracts/shared/Service.sol +25 -22
  256. package/contracts/shared/Versionable.sol +4 -92
  257. package/contracts/test/TestRegisterable.sol +1 -1
  258. package/contracts/test/TestService.sol +4 -3
  259. package/contracts/types/ClaimId.sol +52 -0
  260. package/contracts/types/DistributorType.sol +2 -2
  261. package/contracts/types/ObjectType.sol +9 -5
  262. package/contracts/types/PayoutId.sol +54 -0
  263. package/contracts/types/RoleId.sol +22 -19
  264. package/package.json +3 -3
  265. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  266. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  267. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  268. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  269. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  270. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  271. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  272. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  273. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  274. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  275. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  276. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  277. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  278. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  279. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  280. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  281. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  282. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  283. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  284. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  285. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  286. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  287. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  288. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  289. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  290. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  292. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  294. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  295. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  296. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  297. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  298. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  299. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  300. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  302. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  304. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  306. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  307. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  308. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  309. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  310. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  311. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  312. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  313. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  314. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  315. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  316. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  317. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  318. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  319. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  320. package/contracts/components/BaseComponent.sol +0 -132
  321. package/contracts/components/IBaseComponent.sol +0 -31
  322. package/contracts/experiment/cloning/Cloner.sol +0 -47
  323. package/contracts/experiment/errors/Require.sol +0 -38
  324. package/contracts/experiment/errors/Revert.sol +0 -44
  325. package/contracts/experiment/inheritance/A.sol +0 -53
  326. package/contracts/experiment/inheritance/B.sol +0 -28
  327. package/contracts/experiment/inheritance/C.sol +0 -34
  328. package/contracts/experiment/inheritance/IA.sol +0 -13
  329. package/contracts/experiment/inheritance/IB.sol +0 -10
  330. package/contracts/experiment/inheritance/IC.sol +0 -12
  331. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  332. package/contracts/experiment/statemachine/ISM.sol +0 -25
  333. package/contracts/experiment/statemachine/SM.sol +0 -57
  334. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  335. package/contracts/experiment/types/TypeA.sol +0 -47
  336. package/contracts/experiment/types/TypeB.sol +0 -29
  337. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  338. package/contracts/instance/IInstanceBase.sol +0 -26
  339. package/contracts/instance/InstanceBase.sol +0 -41
  340. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  341. package/contracts/instance/base/IInstanceBase.sol +0 -23
  342. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  343. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  344. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -31,39 +31,21 @@ contract InstanceReader {
31
31
  bool private _initialized;
32
32
 
33
33
  IRegistry internal _registry;
34
- NftId internal _instanceNftId;
35
34
  IInstance internal _instance;
36
35
  IKeyValueStore internal _store;
37
36
 
38
- constructor(
39
- address registry,
40
- NftId instanceNftId
41
- )
42
- {
43
- initialize(registry, instanceNftId);
44
- }
45
-
46
- function initialize(address registry, NftId instanceNftId) public {
37
+ function initialize(address registry, address instance) public {
47
38
  require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
48
39
 
49
40
  require(
50
41
  address(registry) != address(0),
51
42
  "ERROR:CRD-001:REGISTRY_ZERO");
52
43
 
53
- require(
54
- instanceNftId.gtz(),
55
- "ERROR:CRD-002:NFT_ID_ZERO");
56
44
 
57
45
  _registry = IRegistry(registry);
58
- _instanceNftId = instanceNftId;
59
- IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(_instanceNftId);
60
46
 
61
- require(
62
- instanceInfo.objectType == INSTANCE(),
63
- "ERROR:CRD-003:PARENT_NOT_INSTANCE");
64
-
65
- _instance = IInstance(instanceInfo.objectAddress);
66
- _store = IKeyValueStore(instanceInfo.objectAddress);
47
+ _instance = IInstance(instance);
48
+ _store = IKeyValueStore(instance);
67
49
 
68
50
  _initialized = true;
69
51
  }
@@ -301,10 +283,6 @@ contract InstanceReader {
301
283
  return _store;
302
284
  }
303
285
 
304
- function getInstanceNftId() external view returns (NftId nftId) {
305
- return _instanceNftId;
306
- }
307
-
308
286
  function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
309
287
  return UFixedLib.toUFixed(value, exp);
310
288
  }
@@ -2,24 +2,33 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
- import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
8
7
  import {Instance} from "./Instance.sol";
8
+ import {IInstance} from "./IInstance.sol";
9
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
10
  import {IInstanceService} from "./IInstanceService.sol";
10
11
  import {InstanceReader} from "./InstanceReader.sol";
11
12
  import {BundleManager} from "./BundleManager.sol";
13
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
12
14
  import {IRegistry} from "../registry/IRegistry.sol";
13
- import {RegistryService} from "../registry/RegistryService.sol";
15
+ import {IRegistryService} from "../registry/IRegistryService.sol";
16
+ import {ChainNft} from "../registry/ChainNft.sol";
14
17
  import {Service} from "../../contracts/shared/Service.sol";
15
18
  import {IService} from "../shared/IService.sol";
16
19
  import {NftId} from "../../contracts/types/NftId.sol";
17
20
  import {RoleId} from "../types/RoleId.sol";
18
- import {VersionLib} from "../types/Version.sol";
19
- import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../types/RoleId.sol";
20
-
21
- contract InstanceService is Service, IInstanceService {
22
-
21
+ 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} from "../types/RoleId.sol";
22
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
23
+ import {IDistributionComponent} from "../components/IDistributionComponent.sol";
24
+ import {IPoolComponent} from "../components/IPoolComponent.sol";
25
+ import {IProductComponent} from "../components/IProductComponent.sol";
26
+
27
+ contract InstanceService is
28
+ Service,
29
+ IInstanceService
30
+ {
31
+ address internal _masterOzAccessManager;
23
32
  address internal _masterInstanceAccessManager;
24
33
  address internal _masterInstance;
25
34
  address internal _masterInstanceReader;
@@ -27,12 +36,34 @@ contract InstanceService is Service, IInstanceService {
27
36
 
28
37
  // TODO update to real hash when instance is stable
29
38
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
30
- string public constant NAME = "InstanceService";
39
+
40
+ modifier onlyInstanceOwner(NftId instanceNftId) {
41
+ if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
42
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
43
+ }
44
+ _;
45
+ }
46
+ // TODO check service domain?
47
+ // TODO check release version?
48
+ modifier onlyRegisteredService() {
49
+ if (! getRegistry().isRegisteredService(msg.sender)) {
50
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
51
+ }
52
+ _;
53
+ }
54
+ // TODO check release version?
55
+ modifier onlyComponent() {
56
+ if (! getRegistry().isRegisteredComponent(msg.sender)) {
57
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
58
+ }
59
+ _;
60
+ }
31
61
 
32
62
  function createInstanceClone()
33
63
  external
34
64
  returns (
35
- AccessManagerUpgradeableInitializeable clonedAccessManager,
65
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager,
66
+ InstanceAccessManager clonedInstanceAccessManager,
36
67
  Instance clonedInstance,
37
68
  NftId clonedInstanceNftId,
38
69
  InstanceReader clonedInstanceReader,
@@ -43,153 +74,312 @@ contract InstanceService is Service, IInstanceService {
43
74
  IRegistry registry = getRegistry();
44
75
  address registryAddress = address(registry);
45
76
  NftId registryNftId = registry.getNftId(registryAddress);
46
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
47
- RegistryService registryService = RegistryService(registryServiceAddress);
77
+ address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
78
+ IRegistryService registryService = IRegistryService(registryServiceAddress);
48
79
 
49
- // initially set the authority of the access managar to this (being the instance service).
50
- // This will allow the instance service to bootstrap the authorizations of the instance
51
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
52
- clonedAccessManager = AccessManagerUpgradeableInitializeable(Clones.clone(_masterInstanceAccessManager));
53
- clonedAccessManager.__AccessManagerUpgradeableInitializeable_init(address(this));
80
+ clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
81
+ Clones.clone(_masterOzAccessManager));
82
+
83
+ // initially grants ADMIN_ROLE to this (being the instance service).
84
+ // This will allow the instance service to bootstrap the authorizations of the instance.
85
+ // Instance service will not use oz access manager directlly but through instance access manager instead
86
+ // Instance service will renounce ADMIN_ROLE when bootstraping is finished
87
+ clonedOzAccessManager.initialize(address(this));
88
+
89
+ clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
90
+ clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
91
+ clonedInstanceAccessManager.initialize(address(clonedOzAccessManager), registryAddress);
54
92
 
55
93
  clonedInstance = Instance(Clones.clone(_masterInstance));
56
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
57
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
58
- clonedInstanceNftId = info.nftId;
94
+ clonedInstance.initialize(address(clonedInstanceAccessManager), registryAddress, registryNftId, instanceOwner);
59
95
 
60
96
  clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
61
- clonedInstanceReader.initialize(registryAddress, clonedInstanceNftId);
97
+ clonedInstanceReader.initialize(registryAddress, address(clonedInstance));
62
98
  clonedInstance.setInstanceReader(clonedInstanceReader);
63
99
 
64
100
  clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
65
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, clonedInstanceNftId);
101
+ clonedBundleManager.initialize(clonedInstanceAccessManager.authority(), registryAddress, address(clonedInstance));
66
102
  clonedInstance.setBundleManager(clonedBundleManager);
67
103
 
68
104
  // TODO amend setters with instance specific , policy manager ...
69
105
 
70
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
106
+ _grantInitialAuthorizations(clonedInstanceAccessManager, clonedInstance, clonedBundleManager, instanceOwner);
107
+
108
+ clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
71
109
 
72
- // to complete setup switch instance ownership to the instance owner
73
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
74
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), instanceOwner, 0);
75
- clonedAccessManager.revokeRole(ADMIN_ROLE().toInt(), address(this));
110
+ IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
111
+ clonedInstanceNftId = info.nftId;
112
+ // clonedInstance.linkToRegisteredNftId();
76
113
 
77
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
114
+ emit LogInstanceCloned(address(clonedOzAccessManager), address(clonedInstanceAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
78
115
  }
79
116
 
80
- function _grantInitialAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
117
+ function _grantInitialAuthorizations(
118
+ InstanceAccessManager clonedAccessManager,
119
+ Instance clonedInstance,
120
+ BundleManager clonedBundleManager,
121
+ address instanceOwner)
122
+ internal
123
+ {
124
+ _createCoreAndGifRoles(clonedAccessManager);
125
+ _createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
126
+ _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
127
+ _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
128
+ _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
129
+ _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
130
+ _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
131
+ _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
132
+ _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
133
+ _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
134
+ _grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
135
+ }
136
+
137
+ function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
138
+ // default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
139
+ clonedAccessManager.createGifRole(INSTANCE_OWNER_ROLE(), "InstanceOwnerRole", ADMIN_ROLE());
140
+ clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
141
+ clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
142
+ clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
143
+ // default roles controlled by ADMIN_ROLE -> core roles, all set/granted only once during cloning
144
+ clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
145
+ clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
146
+ clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
147
+ clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
148
+ clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
149
+ clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
150
+ clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
151
+ clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
152
+ }
153
+
154
+ function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
155
+ clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");
156
+ clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");
157
+ clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
158
+ }
159
+
160
+ function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
81
161
  // configure authorization for distribution service on instance
82
162
  IRegistry registry = getRegistry();
83
- address distributionServiceAddress = registry.getServiceAddress("DistributionService", VersionLib.toVersion(3, 0, 0).toMajorPart());
84
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
85
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
163
+ address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
164
+ clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
165
+ bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
86
166
  instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
87
167
  instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
168
+ instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
169
+ instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
170
+ instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
171
+ instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
172
+ instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
173
+ instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
174
+ instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
175
+ instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
176
+ instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
88
177
  clonedAccessManager.setTargetFunctionRole(
89
- address(clonedInstance),
178
+ "Instance",
90
179
  instanceDistributionServiceSelectors,
91
- DISTRIBUTION_SERVICE_ROLE().toInt());
180
+ DISTRIBUTION_SERVICE_ROLE());
181
+ }
92
182
 
183
+ function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
93
184
  // configure authorization for pool service on instance
94
- address poolServiceAddress = registry.getServiceAddress("PoolService", VersionLib.toVersion(3, 0, 0).toMajorPart());
95
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE().toInt(), address(poolServiceAddress), 0);
185
+ address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
186
+ clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
96
187
  bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
97
188
  instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
98
189
  instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
99
- instancePoolServiceSelectors[2] = clonedInstance.createBundle.selector;
100
- instancePoolServiceSelectors[3] = clonedInstance.updateBundle.selector;
101
190
  clonedAccessManager.setTargetFunctionRole(
102
- address(clonedInstance),
191
+ "Instance",
103
192
  instancePoolServiceSelectors,
104
- POOL_SERVICE_ROLE().toInt());
105
-
106
- // configure authorization for pool service on bundle manager
107
- bytes4[] memory bundleManagerPoolServiceSelectors = new bytes4[](5);
108
- bundleManagerPoolServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
109
- bundleManagerPoolServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
110
- bundleManagerPoolServiceSelectors[2] = clonedBundleManager.add.selector;
111
- bundleManagerPoolServiceSelectors[3] = clonedBundleManager.lock.selector;
112
- bundleManagerPoolServiceSelectors[4] = clonedBundleManager.unlock.selector;
113
- clonedAccessManager.setTargetFunctionRole(
114
- address(clonedBundleManager),
115
- bundleManagerPoolServiceSelectors,
116
- POOL_SERVICE_ROLE().toInt());
193
+ POOL_SERVICE_ROLE());
194
+ }
117
195
 
196
+ function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
118
197
  // configure authorization for product service on instance
119
- address productServiceAddress = registry.getServiceAddress("ProductService", VersionLib.toVersion(3, 0, 0).toMajorPart());
120
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE().toInt(), address(productServiceAddress), 0);
121
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](9);
198
+ address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
199
+ clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
200
+ bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
122
201
  instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
123
202
  instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
124
203
  instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
125
204
  instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
126
205
  instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
127
- instanceProductServiceSelectors[5] = clonedInstance.createPolicy.selector;
128
- instanceProductServiceSelectors[6] = clonedInstance.updatePolicy.selector;
129
- instanceProductServiceSelectors[7] = clonedInstance.updatePolicyState.selector;
130
206
  clonedAccessManager.setTargetFunctionRole(
131
- address(clonedInstance),
207
+ "Instance",
132
208
  instanceProductServiceSelectors,
133
- PRODUCT_SERVICE_ROLE().toInt());
209
+ PRODUCT_SERVICE_ROLE());
210
+ }
211
+
212
+ function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
213
+ // configure authorization for application services on instance
214
+ address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
215
+ clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
216
+ bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
217
+ instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
218
+ instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
219
+ instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
220
+ clonedAccessManager.setTargetFunctionRole(
221
+ "Instance",
222
+ instanceApplicationServiceSelectors,
223
+ APPLICATION_SERVICE_ROLE());
224
+ }
225
+
226
+ function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
227
+ // configure authorization for policy services on instance
228
+ address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
229
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
230
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
231
+ instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
232
+ instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
233
+ clonedAccessManager.setTargetFunctionRole(
234
+ "Instance",
235
+ instancePolicyServiceSelectors,
236
+ POLICY_SERVICE_ROLE());
237
+ }
134
238
 
239
+ function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
240
+ // configure authorization for claim/payout services on instance
241
+ address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
242
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
243
+ // TODO add claims function authz
244
+ bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
245
+ // instanceClaimServiceSelectors[0] = clonedInstance.updatePolicy.selector;
246
+ // instanceClaimServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
247
+ clonedAccessManager.setTargetFunctionRole(
248
+ "Instance",
249
+ instanceClaimServiceSelectors,
250
+ CLAIM_SERVICE_ROLE());
251
+ }
252
+
253
+ function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
254
+ // configure authorization for bundle service on instance
255
+ address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
256
+ clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
257
+ bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
258
+ instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
259
+ instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
260
+ clonedAccessManager.setTargetFunctionRole(
261
+ "Instance",
262
+ instanceBundleServiceSelectors,
263
+ BUNDLE_SERVICE_ROLE());
264
+
265
+ // configure authorization for bundle service on bundle manager
266
+ bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
267
+ bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
268
+ bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
269
+ bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
270
+ bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
271
+ bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
272
+ clonedAccessManager.setTargetFunctionRole(
273
+ "BundleManager",
274
+ bundleManagerBundleServiceSelectors,
275
+ BUNDLE_SERVICE_ROLE());
276
+ }
277
+
278
+ function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
135
279
  // configure authorization for instance service on instance
136
- address instanceServiceAddress = registry.getServiceAddress("InstanceService", VersionLib.toVersion(3, 0, 0).toMajorPart());
137
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE().toInt(), instanceServiceAddress, 0);
280
+ address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
281
+ clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
138
282
  bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
139
283
  instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
140
284
  clonedAccessManager.setTargetFunctionRole(
141
- address(clonedInstance),
285
+ "Instance",
142
286
  instanceInstanceServiceSelectors,
143
- INSTANCE_SERVICE_ROLE().toInt());
287
+ INSTANCE_SERVICE_ROLE());
288
+
289
+ // configure authorizations for instance service on instance access manager
290
+ bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](4);
291
+ accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createCoreTarget.selector;
292
+ accessManagerInstanceServiceSelectors[1] = clonedAccessManager.createGifTarget.selector;
293
+ accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setTargetLocked.selector;
294
+ accessManagerInstanceServiceSelectors[3] = clonedAccessManager.setTargetFunctionRole.selector;
295
+ clonedAccessManager.setTargetFunctionRole(
296
+ "InstanceAccessManager",
297
+ accessManagerInstanceServiceSelectors,
298
+ INSTANCE_SERVICE_ROLE());
144
299
  }
145
300
 
146
- function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
147
- require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
148
- require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
149
- require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
150
-
151
- require (accessManagerAddress != address(0), "ERROR:CRD-005:ACCESS_MANAGER_ZERO");
152
- require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
153
- require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
154
- require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
155
-
156
- Instance instance = Instance(instanceAddress);
157
- InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
158
- BundleManager bundleManager = BundleManager(bundleManagerAddress);
301
+ function _grantInstanceOwnerAuthorizations(InstanceAccessManager clonedAccessManager, address instanceOwner) internal {
302
+ // configure authorization for instance owner on instance access manager
303
+ clonedAccessManager.grantRole(INSTANCE_OWNER_ROLE(), instanceOwner);
304
+ // INSTANCE_OWNER_ROLE administrates itself
305
+ clonedAccessManager.setRoleAdmin(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE());
306
+ bytes4[] memory accessManagerInstanceOwnerSelectors = new bytes4[](3);
307
+ accessManagerInstanceOwnerSelectors[0] = clonedAccessManager.createCustomRole.selector;
308
+ accessManagerInstanceOwnerSelectors[1] = clonedAccessManager.createCustomTarget.selector;
309
+ accessManagerInstanceOwnerSelectors[2] = clonedAccessManager.setTargetFunctionCustomRole.selector;
310
+ clonedAccessManager.setTargetFunctionRole(
311
+ "InstanceAccessManager",
312
+ accessManagerInstanceOwnerSelectors,
313
+ INSTANCE_OWNER_ROLE());
314
+ }
159
315
 
160
- require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
161
- require(instanceReader.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
162
- require(bundleManager.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
316
+ function setAndRegisterMasterInstance(address instanceAddress)
317
+ external
318
+ onlyOwner
319
+ returns(NftId masterInstanceNftId)
320
+ {
321
+ if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
322
+ if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
323
+ if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
324
+ if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
325
+
326
+ if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
327
+
328
+ IInstance instance = IInstance(instanceAddress);
329
+ AccessManagerUpgradeableInitializeable ozAccessManager = AccessManagerUpgradeableInitializeable(instance.authority());
330
+ address ozAccessManagerAddress = address(ozAccessManager);
331
+ InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
332
+ address instanceAccessManagerAddress = address(instanceAccessManager);
333
+ InstanceReader instanceReader = instance.getInstanceReader();
334
+ address instanceReaderAddress = address(instanceReader);
335
+ BundleManager bundleManager = instance.getBundleManager();
336
+ address bundleManagerAddress = address(bundleManager);
337
+
338
+ if(ozAccessManagerAddress == address(0)) { revert ErrorInstanceServiceOzAccessManagerZero();}
339
+ if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
340
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
341
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
342
+
343
+ if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
344
+ if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
345
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
346
+ if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
163
347
 
164
- _masterInstanceAccessManager = accessManagerAddress;
348
+ _masterOzAccessManager = ozAccessManagerAddress;
349
+ _masterInstanceAccessManager = instanceAccessManagerAddress;
165
350
  _masterInstance = instanceAddress;
166
351
  _masterInstanceReader = instanceReaderAddress;
167
352
  _masterInstanceBundleManager = bundleManagerAddress;
353
+
354
+ IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
355
+ IInstance masterInstance = IInstance(_masterInstance);
356
+ IRegistry.ObjectInfo memory info = registryService.registerInstance(masterInstance, getOwner());
357
+ masterInstanceNftId = info.nftId;
358
+
359
+ // masterInstance.linkToRegisteredNftId();
168
360
  }
169
361
 
170
362
  function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
171
- require(_masterInstanceReader != address(0), "ERROR:CRD-003:INSTANCE_READER_MASTER_NOT_SET");
172
- require (instanceReaderAddress != address(0), "ERROR:CRD-012:INSTANCE_READER_ZERO");
173
- require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
363
+ if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
364
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
365
+ if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
174
366
 
175
367
  InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
176
- require(instanceReader.getInstanceNftId() == Instance(_masterInstance).getNftId(), "ERROR:CRD-015:INSTANCE_READER_INSTANCE_MISMATCH");
368
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
177
369
 
178
370
  _masterInstanceReader = instanceReaderAddress;
179
371
  }
180
372
 
181
- function upgradeInstanceReader(NftId instanceNftId) external {
373
+ function upgradeInstanceReader(NftId instanceNftId)
374
+ external
375
+ onlyInstanceOwner(instanceNftId)
376
+ {
182
377
  IRegistry registry = getRegistry();
183
378
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
184
379
  Instance instance = Instance(instanceInfo.objectAddress);
185
- address owner = instance.getOwner();
186
-
187
- if (msg.sender != owner) {
188
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
189
- }
190
380
 
191
381
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
192
- upgradedInstanceReaderClone.initialize(address(registry), instanceNftId);
382
+ upgradedInstanceReaderClone.initialize(address(registry), address(instance));
193
383
  instance.setInstanceReader(upgradedInstanceReaderClone);
194
384
  }
195
385
 
@@ -210,15 +400,11 @@ contract InstanceService is Service, IInstanceService {
210
400
  }
211
401
 
212
402
  // From IService
213
- function getName() public pure override(IService, Service) returns(string memory) {
214
- return NAME;
403
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
404
+ return INSTANCE();
215
405
  }
216
406
 
217
407
  /// @dev top level initializer
218
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
219
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
220
- // 3) deploy registry -> pass registry service address as constructor argument
221
- // registry is getting instantiated and locked to registry service address forever
222
408
  function _initialize(
223
409
  address owner,
224
410
  bytes memory data
@@ -227,27 +413,55 @@ contract InstanceService is Service, IInstanceService {
227
413
  initializer
228
414
  virtual override
229
415
  {
230
- address initialOwner = address(0);
231
- address registryAddress = address(0);
416
+ address initialOwner;
417
+ address registryAddress;
232
418
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
233
419
  // TODO while InstanceService is not deployed in InstanceServiceManager constructor
234
420
  // owner is InstanceServiceManager deployer
235
- _initializeService(registryAddress, owner);
236
-
237
- _registerInterface(type(IService).interfaceId);
238
- _registerInterface(type(IInstanceService).interfaceId);
421
+ initializeService(registryAddress, owner);
422
+ registerInterface(type(IInstanceService).interfaceId);
239
423
  }
240
424
 
241
- function hasRole(address account, RoleId role, NftId instanceNftId) external view returns (bool) {
242
- IRegistry.ObjectInfo memory instanceObjectInfo = getRegistry().getObjectInfo(instanceNftId);
243
- address instanceAddress = instanceObjectInfo.objectAddress;
425
+ // TODO call instance access manager directlly and delete this function?
426
+ function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
244
427
  Instance instance = Instance(instanceAddress);
245
- AccessManagerUpgradeable accessManager = AccessManagerUpgradeable(instance.authority());
246
- (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
247
- if (executionDelay > 0) {
248
- return false;
249
- }
250
- return isMember;
428
+ InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
429
+ return accessManager.hasRole(role, account);
430
+ }
431
+ // creates gif targets only -> they have INSTANCE as parent
432
+ function createGifTarget(NftId instanceNftId, address targetAddress, string memory targetName, bytes4[][] memory selectors, RoleId[] memory roles)
433
+ external
434
+ onlyRegisteredService
435
+ {
436
+ IRegistry registry = getRegistry();
437
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
438
+ if(instanceInfo.objectType != INSTANCE()) {
439
+ revert ErrorInstanceServiceNotInstance(instanceNftId);
440
+ }
441
+
442
+ Instance instance = Instance(instanceInfo.objectAddress);
443
+ InstanceAccessManager accessManager = instance.getInstanceAccessManager();
444
+ accessManager.createGifTarget(targetAddress, targetName);
445
+ for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
446
+ {
447
+ accessManager.setTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
448
+ }
449
+
251
450
  }
252
- }
253
451
 
452
+ // TODO called by component, but target can be component helper...so needs target name
453
+ // TODO check that targetName associated with component...how???
454
+ //function setTargetLocked(string memory targetName, bool locked) onlyComponent external {
455
+ function setComponentLocked(bool locked) onlyComponent external {
456
+ address componentAddress = msg.sender;
457
+ IRegistry registry = getRegistry();
458
+ NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
459
+ address instanceAddress = registry.getObjectInfo(instanceNftId).objectAddress;
460
+ IInstance instance = IInstance(instanceAddress);
461
+
462
+ InstanceAccessManager accessManager = instance.getInstanceAccessManager();
463
+ // TODO setLocked by target address?
464
+ string memory componentName = ShortStrings.toString(accessManager.getTargetInfo(componentAddress).name);
465
+ accessManager.setTargetLocked(componentName, locked);
466
+ }
467
+ }