@etherisc/gif-next 0.0.2-e510b92-393 → 0.0.2-e545d2c-624

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 (231) hide show
  1. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +29 -0
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +33 -102
  5. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +29 -0
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +33 -130
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +33 -113
  14. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  34. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +45 -32
  38. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -0
  41. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  42. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  43. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +99 -14
  45. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  46. package/artifacts/contracts/instance/Instance.sol/Instance.json +79 -665
  47. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +244 -114
  49. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  50. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +166 -173
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -78
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  58. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +15 -2
  59. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +24 -32
  61. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1031 -0
  76. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
  78. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +39 -52
  80. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +49 -72
  82. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +13 -37
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
  86. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +13 -13
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -13
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +12 -241
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +17 -241
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1156 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +32 -354
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +13 -57
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +40 -410
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +13 -81
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +132 -133
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -65
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +145 -227
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +30 -128
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -104
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IService.sol/IService.json +13 -13
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  136. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  138. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  140. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Service.sol/Service.json +13 -13
  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/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  151. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -31
  153. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  157. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  163. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  165. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  171. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  177. package/contracts/components/BaseComponent.sol +35 -8
  178. package/contracts/components/Distribution.sol +2 -1
  179. package/contracts/components/IBaseComponent.sol +3 -0
  180. package/contracts/components/Pool.sol +11 -6
  181. package/contracts/components/Product.sol +22 -10
  182. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  183. package/contracts/instance/IInstance.sol +7 -1
  184. package/contracts/instance/IInstanceBase.sol +26 -0
  185. package/contracts/instance/IInstanceService.sol +10 -2
  186. package/contracts/instance/Instance.sol +32 -214
  187. package/contracts/instance/InstanceAccessManager.sol +93 -78
  188. package/contracts/instance/InstanceBase.sol +41 -0
  189. package/contracts/instance/InstanceService.sol +228 -115
  190. package/contracts/instance/InstanceServiceManager.sol +5 -8
  191. package/contracts/instance/ObjectManager.sol +7 -1
  192. package/contracts/instance/base/ComponentServiceBase.sol +29 -87
  193. package/contracts/instance/module/IAccess.sol +27 -17
  194. package/contracts/instance/service/BundleService.sol +294 -0
  195. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  196. package/contracts/instance/service/ComponentOwnerService.sol +4 -6
  197. package/contracts/instance/service/DistributionService.sol +53 -21
  198. package/contracts/instance/service/DistributionServiceManager.sol +6 -9
  199. package/contracts/instance/service/IBundleService.sol +44 -0
  200. package/contracts/instance/service/IPolicyService.sol +94 -0
  201. package/contracts/instance/service/IPoolService.sol +2 -33
  202. package/contracts/instance/service/IProductService.sol +2 -72
  203. package/contracts/instance/service/PolicyService.sol +539 -0
  204. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  205. package/contracts/instance/service/PoolService.sol +65 -207
  206. package/contracts/instance/service/PoolServiceManager.sol +5 -8
  207. package/contracts/instance/service/ProductService.sol +100 -457
  208. package/contracts/registry/ChainNft.sol +1 -1
  209. package/contracts/registry/IRegistry.sol +26 -16
  210. package/contracts/registry/IRegistryService.sol +13 -5
  211. package/contracts/registry/Registry.sol +149 -201
  212. package/contracts/registry/RegistryAccessManager.sol +210 -0
  213. package/contracts/registry/RegistryService.sol +50 -88
  214. package/contracts/registry/RegistryServiceManager.sol +18 -36
  215. package/contracts/registry/ReleaseManager.sol +342 -0
  216. package/contracts/registry/TokenRegistry.sol +5 -6
  217. package/contracts/shared/IService.sol +2 -1
  218. package/contracts/shared/ProxyManager.sol +1 -1
  219. package/contracts/shared/Service.sol +10 -7
  220. package/contracts/test/TestService.sol +3 -2
  221. package/contracts/types/RoleId.sol +10 -10
  222. package/package.json +1 -1
  223. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  224. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  225. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  226. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  227. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  228. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  229. package/contracts/instance/AccessManagedSimple.sol +0 -115
  230. package/contracts/instance/AccessManagerSimple.sol +0 -692
  231. package/contracts/instance/IAccessManagerSimple.sol +0 -391
@@ -4,37 +4,21 @@ pragma solidity ^0.8.19;
4
4
  import {IRegistry} from "../../registry/IRegistry.sol";
5
5
  import {IRegistryService} from "../../registry/IRegistryService.sol";
6
6
  import {IInstance} from "../../instance/IInstance.sol";
7
- import {ObjectType, INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE} from "../../types/ObjectType.sol";
8
- import {NftId, NftIdLib} from "../../types/NftId.sol";
9
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
7
+ import {IAccess} from "../module/IAccess.sol";
8
+ import {ObjectType, INSTANCE, REGISTRY} from "../../types/ObjectType.sol";
9
+ import {NftId} from "../../types/NftId.sol";
10
+ import {RoleId} from "../../types/RoleId.sol";
10
11
 
11
- import {BaseComponent} from "../../components/BaseComponent.sol";
12
- import {Product} from "../../components/Product.sol";
13
- import {INftOwnable} from "../../shared/INftOwnable.sol";
14
12
  import {Service} from "../../shared/Service.sol";
15
13
  import {InstanceService} from "../InstanceService.sol";
16
- import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
14
+ import {InstanceAccessManager} from "../InstanceAccessManager.sol";
17
15
 
18
16
  abstract contract ComponentServiceBase is Service {
19
17
 
18
+ error ErrorComponentServiceBaseComponentLocked(address componentAddress);
20
19
  error ExpectedRoleMissing(RoleId expected, address caller);
21
20
  error ComponentTypeInvalid(ObjectType componentType);
22
21
 
23
- mapping (ObjectType => RoleId) internal _objectTypeToExpectedRole;
24
-
25
- /// @dev modifier to check if caller has a role on the instance the component is registered in
26
- modifier onlyComponentOwnerRole(address componentAddress) {
27
- BaseComponent component = BaseComponent(componentAddress);
28
- ObjectType objectType = _getObjectType(component);
29
- RoleId expectedRole = _objectTypeToExpectedRole[objectType];
30
-
31
- address componentOwner = msg.sender;
32
- INftOwnable nftOwnable = INftOwnable(address(component.getInstance()));
33
- if(! getInstanceService().hasRole(componentOwner, expectedRole, nftOwnable.getNftId())) {
34
- revert ExpectedRoleMissing(expectedRole, componentOwner);
35
- }
36
- _;
37
- }
38
22
 
39
23
  /// @dev modifier to check if caller is a registered service
40
24
  modifier onlyService() {
@@ -43,72 +27,28 @@ abstract contract ComponentServiceBase is Service {
43
27
  _;
44
28
  }
45
29
 
46
- function _initializeService(
47
- address registry,
48
- address initialOwner
49
- )
50
- internal
51
- override
52
- {
53
- super._initializeService(registry, initialOwner);
54
- _objectTypeToExpectedRole[PRODUCT()] = PRODUCT_OWNER_ROLE();
55
- _objectTypeToExpectedRole[POOL()] = POOL_OWNER_ROLE();
56
- _objectTypeToExpectedRole[DISTRIBUTION()] = DISTRIBUTION_OWNER_ROLE();
57
- _objectTypeToExpectedRole[ORACLE()] = ORACLE_OWNER_ROLE();
58
- }
30
+ // view functions
59
31
 
60
- function getInstanceService() public view returns (InstanceService) {
61
- return InstanceService(getRegistry().getServiceAddress("InstanceService", getMajorVersion()));
32
+ function getRegistryService() public view virtual returns (IRegistryService) {
33
+ address service = getRegistry().getServiceAddress(REGISTRY(), getMajorVersion());
34
+ return IRegistryService(service);
62
35
  }
63
36
 
64
- function register(address componentAddress)
65
- external
66
- onlyComponentOwnerRole(componentAddress)
67
- returns (NftId componentNftId)
68
- {
69
- address componentOwner = msg.sender;
70
- BaseComponent component = BaseComponent(componentAddress);
71
- ObjectType objectType = _getObjectType(component);
72
- IRegistryService registryService = getRegistryService();
73
-
74
- IRegistry.ObjectInfo memory objInfo;
75
- bytes memory initialObjData;
76
-
77
- if (objectType == DISTRIBUTION()) {
78
- (objInfo, initialObjData) = registryService.registerDistribution(component, componentOwner);
79
- } else if (objectType == PRODUCT()) {
80
- (objInfo, initialObjData) = registryService.registerProduct(component, componentOwner);
81
- } else if (objectType == POOL()) {
82
- (objInfo, initialObjData) = registryService.registerPool(component, componentOwner);
83
- // TODO: implement this for oracle - currently missing in registry
84
- // } else if (objectType == ORACLE()) {
85
- // (objInfo, initialObjData) = registryService.registerOracle(component, componentOwner);
86
- } else {
87
- revert ComponentTypeInvalid(objectType);
88
- }
89
-
90
- componentNftId = objInfo.nftId;
91
- {
92
- IInstance instance = _getInstance(objInfo);
93
- _finalizeComponentRegistration(componentNftId, initialObjData, instance);
94
- }
37
+ function getInstanceService() public view returns (InstanceService) {
38
+ address service = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
39
+ return InstanceService(service);
95
40
  }
96
41
 
97
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal virtual;
42
+ // internal view functions
98
43
 
99
- function _getObjectType(BaseComponent component) internal view returns (ObjectType) {
100
- (IRegistry.ObjectInfo memory compInitialInfo, ) = component.getInitialInfo();
101
- return compInitialInfo.objectType;
102
- }
103
-
104
- function _getInstance(IRegistry.ObjectInfo memory compObjInfo) internal view returns (IInstance) {
105
- IRegistry registry = getRegistry();
106
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(compObjInfo.parentNftId);
44
+ function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
45
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
107
46
  return IInstance(instanceInfo.objectAddress);
108
47
  }
109
48
 
110
49
  function _getAndVerifyComponentInfoAndInstance(
111
- ObjectType objectType
50
+ //address component,
51
+ ObjectType expectedType
112
52
  )
113
53
  internal
114
54
  view
@@ -117,18 +57,20 @@ abstract contract ComponentServiceBase is Service {
117
57
  IInstance instance
118
58
  )
119
59
  {
120
- NftId componentNftId = _registry.getNftId(msg.sender);
121
- require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
60
+ IRegistry registry = getRegistry();
61
+ //TODO redundant check -> just check type
62
+ //NftId componentNftId = registry.getNftId(component);
63
+ //require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
122
64
 
123
- info = getRegistry().getObjectInfo(componentNftId);
124
- require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
65
+ info = registry.getObjectInfo(msg.sender);
66
+ require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
125
67
 
126
- address instanceAddress = getRegistry().getObjectInfo(info.parentNftId).objectAddress;
68
+ address instanceAddress = registry.getObjectInfo(info.parentNftId).objectAddress;
127
69
  instance = IInstance(instanceAddress);
128
- }
129
70
 
130
- function getRegistryService() public view virtual returns (IRegistryService) {
131
- address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
132
- return IRegistryService(service);
71
+ InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
72
+ if (accessManager.isTargetLocked(info.objectAddress)) {
73
+ revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
74
+ }
133
75
  }
134
76
  }
@@ -5,34 +5,44 @@ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
7
  import {RoleId} from "../../types/RoleId.sol";
8
+ import {Timestamp} from "../../types/Timestamp.sol";
8
9
 
9
10
  interface IAccess {
11
+
10
12
  struct RoleInfo {
11
13
  ShortString name;
12
14
  bool isCustom;
15
+ bool isLocked;
16
+ Timestamp createdAt;
17
+ Timestamp updatedAt;
13
18
  }
14
19
 
15
20
  struct TargetInfo {
16
21
  ShortString name;
17
22
  bool isCustom;
23
+ bool isLocked;
24
+ Timestamp createdAt;
25
+ Timestamp updatedAt;
18
26
  }
19
27
 
20
- error ErrorTargetAddressZero();
21
- error ErrorTargetAlreadyExists(address target, ShortString name);
22
- error ErrorTargetDoesNotExist(address target);
23
- error ErrorTargetNameEmpty(address target);
24
- error ErrorTargetNameExists(address target, address existingTarget, ShortString name);
25
-
26
- error ErrorRoleIdInvalid(RoleId roleId);
27
- error ErrorRoleIdTooBig(RoleId roleId);
28
- error ErrorRoleIdTooSmall(RoleId roleId);
29
- error ErrorRoleIdAlreadyExists(RoleId roleId, ShortString name);
30
- error ErrorRoleIdNotActive(RoleId roleId);
31
- error ErrorRoleNameEmpty(RoleId roleId);
32
- error ErrorRoleNameNotUnique(RoleId roleId, ShortString name);
33
- error ErrorRoleInvalidUpdate(RoleId roleId, bool isCustom);
34
- error ErrorGrantNonexstentRole(RoleId roleId);
35
- error ErrorRevokeNonexstentRole(RoleId roleId);
36
- error ErrorRenounceNonexstentRole(RoleId roleId);
28
+ error ErrorIAccessRoleIdInvalid(RoleId roleId);
29
+ error ErrorIAccessRoleIdTooBig(RoleId roleId);
30
+ error ErrorIAccessRoleIdTooSmall(RoleId roleId);
31
+ error ErrorIAccessRoleIdAlreadyExists(RoleId roleId, ShortString name);
32
+ error ErrorIAccessRoleIdNotActive(RoleId roleId);
33
+ error ErrorIAccessRoleNameEmpty(RoleId roleId);
34
+ error ErrorIAccessRoleNameNotUnique(RoleId roleId, ShortString name);
35
+ error ErrorIAccessRoleInvalidUpdate(RoleId roleId, bool isCustom);
36
+ error ErrorIAccessRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
37
+ error ErrorIAccessSetLockedForNonexstentRole(RoleId roleId);
38
+ error ErrorIAccessGrantNonexstentRole(RoleId roleId);
39
+ error ErrorIAccessRevokeNonexstentRole(RoleId roleId);
40
+ error ErrorIAccessRenounceNonexstentRole(RoleId roleId);
37
41
 
42
+ error ErrorIAccessTargetAddressZero();
43
+ error ErrorIAccessTargetAlreadyExists(address target, ShortString name);
44
+ error ErrorIAccessTargetNameEmpty(address target);
45
+ error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
46
+ error ErrorIAccessSetLockedForNonexstentTarget(address target);
47
+ error ErrorIAccessTargetLocked(address target);
38
48
  }
@@ -0,0 +1,294 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Pool} from "../../components/Pool.sol";
5
+ import {IRegistry} from "../../registry/IRegistry.sol";
6
+ import {IInstance} from "../../instance/IInstance.sol";
7
+ import {IBundle} from "../../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../../shared/IVersionable.sol";
13
+ import {Versionable} from "../../shared/Versionable.sol";
14
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
15
+
16
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
17
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
18
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
19
+ import {Fee, FeeLib} from "../../types/Fee.sol";
20
+ import {Version, VersionLib} from "../../types/Version.sol";
21
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
22
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
23
+
24
+ import {IService} from "../../shared/IService.sol";
25
+ import {Service} from "../../shared/Service.sol";
26
+ import {BundleManager} from "../BundleManager.sol";
27
+ import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
28
+ import {IBundleService} from "./IBundleService.sol";
29
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
30
+ import {InstanceService} from "../InstanceService.sol";
31
+ import {InstanceReader} from "../InstanceReader.sol";
32
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
33
+
34
+ string constant BUNDLE_SERVICE_NAME = "BundleService";
35
+
36
+ contract BundleService is
37
+ ComponentServiceBase,
38
+ IBundleService
39
+ {
40
+ using NftIdLib for NftId;
41
+
42
+ string public constant NAME = "BundleService";
43
+
44
+ address internal _registryAddress;
45
+
46
+ function _initialize(
47
+ address owner,
48
+ bytes memory data
49
+ )
50
+ internal
51
+ initializer
52
+ virtual override
53
+ {
54
+ address registryAddress;
55
+ address initialOwner;
56
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
57
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
58
+ // owner is PoolServiceManager deployer
59
+ _initializeService(registryAddress, owner);
60
+
61
+ _registerInterface(type(IBundleService).interfaceId);
62
+ }
63
+
64
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
65
+ return BUNDLE();
66
+ }
67
+
68
+ function createBundle(
69
+ address owner,
70
+ Fee memory fee,
71
+ uint256 stakingAmount,
72
+ uint256 lifetime,
73
+ bytes calldata filter
74
+ )
75
+ external
76
+ override
77
+ returns(NftId bundleNftId)
78
+ {
79
+ (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
80
+ InstanceReader instanceReader = instance.getInstanceReader();
81
+ NftId poolNftId = info.nftId;
82
+
83
+ IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
84
+ poolNftId,
85
+ fee,
86
+ filter,
87
+ stakingAmount,
88
+ 0,
89
+ stakingAmount,
90
+ lifetime,
91
+ zeroTimestamp(),
92
+ zeroTimestamp()
93
+ );
94
+
95
+ // register bundle with registry
96
+ bundleNftId = getRegistryService().registerBundle(
97
+ IRegistry.ObjectInfo(
98
+ zeroNftId(),
99
+ poolNftId,
100
+ BUNDLE(),
101
+ false, // intercepting property for bundles is defined on pool
102
+ address(0),
103
+ owner,
104
+ abi.encode(bundleInfo)
105
+ )
106
+ );
107
+
108
+ // create bundle info in instance
109
+ instance.createBundle(bundleNftId, bundleInfo);
110
+
111
+ BundleManager bundleManager = instance.getBundleManager();
112
+ bundleManager.add(bundleNftId);
113
+
114
+ _processStakingByTreasury(
115
+ instanceReader,
116
+ poolNftId,
117
+ bundleNftId,
118
+ stakingAmount);
119
+
120
+ // TODO add logging
121
+ }
122
+
123
+ function setBundleFee(
124
+ NftId bundleNftId,
125
+ Fee memory fee
126
+ )
127
+ external
128
+ override
129
+ {
130
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
131
+ InstanceReader instanceReader = instance.getInstanceReader();
132
+ NftId poolNftId = info.nftId;
133
+
134
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
135
+ require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
136
+ require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
137
+
138
+ bundleInfo.fee = fee;
139
+
140
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
141
+ }
142
+
143
+ function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
144
+ external
145
+ onlyService
146
+ {
147
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
148
+ IInstance instance = IInstance(instanceInfo.objectAddress);
149
+ instance.updateBundle(bundleNftId, bundleInfo, state);
150
+ }
151
+
152
+ function lockBundle(NftId bundleNftId)
153
+ external
154
+ {
155
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
156
+ BundleManager bundleManager = instance.getBundleManager();
157
+ bundleManager.lock(bundleNftId);
158
+ }
159
+
160
+ function unlockBundle(NftId bundleNftId)
161
+ external
162
+ {
163
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
164
+ BundleManager bundleManager = instance.getBundleManager();
165
+ bundleManager.unlock(bundleNftId);
166
+ }
167
+
168
+ function underwritePolicy(IInstance instance,
169
+ NftId policyNftId,
170
+ NftId bundleNftId,
171
+ uint256 collateralAmount,
172
+ uint256 netPremiumAmount
173
+ )
174
+ external
175
+ onlyService
176
+ {
177
+ InstanceReader instanceReader = instance.getInstanceReader();
178
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
179
+
180
+ // lock collateral
181
+ bundleInfo.lockedAmount += collateralAmount;
182
+ bundleInfo.balanceAmount += netPremiumAmount;
183
+
184
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
185
+
186
+ linkPolicy(instance, policyNftId);
187
+ }
188
+
189
+ function increaseBalance(IInstance instance,
190
+ NftId bundleNftId,
191
+ uint256 amount
192
+ )
193
+ external
194
+ onlyService
195
+ {
196
+ InstanceReader instanceReader = instance.getInstanceReader();
197
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
198
+
199
+ bundleInfo.balanceAmount += amount;
200
+
201
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
202
+ }
203
+
204
+ function closePolicy(IInstance instance,
205
+ NftId policyNftId,
206
+ NftId bundleNftId,
207
+ uint256 collateralAmount
208
+ )
209
+ external
210
+ onlyService
211
+ {
212
+ InstanceReader instanceReader = instance.getInstanceReader();
213
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
214
+
215
+ // lock collateral
216
+ bundleInfo.lockedAmount -= collateralAmount;
217
+
218
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
219
+
220
+ unlinkPolicy(instance, policyNftId);
221
+ }
222
+
223
+ /// @dev links policy to bundle
224
+ function linkPolicy(IInstance instance, NftId policyNftId)
225
+ internal
226
+ onlyService
227
+ {
228
+ InstanceReader instanceReader = instance.getInstanceReader();
229
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
230
+
231
+ // ensure policy has not yet been activated
232
+ if (policyInfo.activatedAt.gtz()) {
233
+ revert BundleManager.ErrorBundleManagerErrorPolicyAlreadyActivated(policyNftId);
234
+ }
235
+
236
+ BundleManager bundleManager = instance.getBundleManager();
237
+ bundleManager.linkPolicy(policyNftId);
238
+ }
239
+
240
+ /// @dev unlinks policy from bundle
241
+ function unlinkPolicy(IInstance instance, NftId policyNftId)
242
+ internal
243
+ onlyService
244
+ {
245
+ InstanceReader instanceReader = instance.getInstanceReader();
246
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
247
+
248
+ // ensure policy has no open claims
249
+ if (policyInfo.openClaimsCount > 0) {
250
+ revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
251
+ policyNftId,
252
+ policyInfo.openClaimsCount);
253
+ }
254
+
255
+ // ensure policy is closeable
256
+ if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
257
+ && policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
258
+ {
259
+ revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
260
+ }
261
+
262
+ BundleManager bundleManager = instance.getBundleManager();
263
+ bundleManager.unlinkPolicy(policyNftId);
264
+ }
265
+
266
+ function _processStakingByTreasury(
267
+ InstanceReader instanceReader,
268
+ NftId poolNftId,
269
+ NftId bundleNftId,
270
+ uint256 stakingAmount
271
+ )
272
+ internal
273
+ {
274
+ // process token transfer(s)
275
+ if(stakingAmount > 0) {
276
+ ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
277
+ TokenHandler tokenHandler = poolInfo.tokenHandler;
278
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
279
+ Fee memory stakingFee = poolInfo.stakingFee;
280
+
281
+ tokenHandler.transfer(
282
+ bundleOwner,
283
+ poolInfo.wallet,
284
+ stakingAmount
285
+ );
286
+
287
+
288
+ if (! FeeLib.feeIsZero(stakingFee)) {
289
+ (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
290
+ // TODO: track staking fees in pool's state (issue #177)
291
+ }
292
+ }
293
+ }
294
+ }
@@ -0,0 +1,51 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {BundleService} from "./BundleService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
10
+
11
+ contract BundleServiceManager is ProxyManager {
12
+
13
+ BundleService private _bundleService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ BundleService bundleSrv = new BundleService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(bundleSrv),
25
+ data);
26
+
27
+ _bundleService = BundleService(address(versionable));
28
+
29
+ // TODO `this` must have a role or own nft to register service
30
+ //Registry registry = Registry(registryAddress);
31
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _bundleService.getMajorVersion());
32
+ //RegistryService registryService = RegistryService(registryServiceAddress);
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+ }
41
+
42
+ //--- view functions ----------------------------------------------------//
43
+ function getBundleService()
44
+ external
45
+ view
46
+ returns (BundleService)
47
+ {
48
+ return _bundleService;
49
+ }
50
+
51
+ }
@@ -16,7 +16,7 @@ import {IVersionable} from "../../shared/IVersionable.sol";
16
16
  import {Versionable} from "../../shared/Versionable.sol";
17
17
 
18
18
  import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
19
- import {ObjectType, TOKEN, COMPONENT, PRODUCT, ORACLE, POOL, DISTRIBUTION} from "../../types/ObjectType.sol";
19
+ import {ObjectType, REGISTRY, TOKEN, COMPONENT, PRODUCT, ORACLE, POOL, DISTRIBUTION} from "../../types/ObjectType.sol";
20
20
  import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
21
21
  import {Key32} from "../../types/Key32.sol";
22
22
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
@@ -50,8 +50,6 @@ contract ComponentOwnerService is
50
50
 
51
51
  error CollateralizationLevelIsZero();
52
52
 
53
- string public constant NAME = "ComponentOwnerService";
54
-
55
53
  modifier onlyRegisteredComponent(IBaseComponent component) {
56
54
  NftId nftId = getRegistry().getNftId(address(component));
57
55
  require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
@@ -68,8 +66,8 @@ contract ComponentOwnerService is
68
66
  _registerInterface(type(IComponentOwnerService).interfaceId);
69
67
  }
70
68
 
71
- function getName() public pure override(IService, Service) returns(string memory name) {
72
- return NAME;
69
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
70
+ return COMPONENT();
73
71
  }
74
72
 
75
73
  function getRoleForType(
@@ -90,7 +88,7 @@ contract ComponentOwnerService is
90
88
  }
91
89
 
92
90
  function getRegistryService() public view virtual returns (IRegistryService) {
93
- address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
91
+ address service = getRegistry().getServiceAddress(REGISTRY(), getMajorVersion());
94
92
  return IRegistryService(service);
95
93
  }
96
94