@etherisc/gif-next 0.0.2-9c44ae6-473 → 0.0.2-a0a9c3a-892

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 (195) hide show
  1. package/README.md +20 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +126 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +136 -10
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +88 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +26 -0
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  13. package/artifacts/contracts/components/Pool.sol/Pool.json +160 -8
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +134 -8
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  36. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  37. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  38. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +45 -56
  40. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +26 -0
  44. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  45. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  46. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1 -1
  48. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  49. package/artifacts/contracts/instance/Instance.sol/Instance.json +100 -139
  50. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +55 -32
  52. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  54. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
  56. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +165 -96
  58. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -31
  60. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +15 -2
  62. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -19
  64. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
  78. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +440 -0
  80. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +2 -2
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +16 -48
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +8 -24
  86. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  88. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +9 -212
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +9 -233
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +984 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +20 -306
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +10 -42
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +20 -399
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +10 -78
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  117. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  126. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  129. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  130. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  131. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  132. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  133. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  134. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  136. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  137. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  138. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  139. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  140. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  141. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  142. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  143. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  145. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  147. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  148. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  149. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  150. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  151. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  152. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  153. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  154. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  155. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  156. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  161. package/contracts/components/BaseComponent.sol +49 -8
  162. package/contracts/components/IBaseComponent.sol +6 -0
  163. package/contracts/components/IPoolComponent.sol +4 -0
  164. package/contracts/components/Pool.sol +27 -3
  165. package/contracts/components/Product.sol +8 -5
  166. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  167. package/contracts/instance/BundleManager.sol +1 -26
  168. package/contracts/instance/IInstance.sol +4 -0
  169. package/contracts/instance/IInstanceBase.sol +26 -0
  170. package/contracts/instance/IInstanceService.sol +2 -2
  171. package/contracts/instance/Instance.sol +25 -14
  172. package/contracts/instance/InstanceAccessManager.sol +6 -6
  173. package/contracts/instance/InstanceBase.sol +41 -0
  174. package/contracts/instance/InstanceService.sol +78 -49
  175. package/contracts/instance/ObjectManager.sol +7 -1
  176. package/contracts/instance/base/ComponentServiceBase.sol +15 -77
  177. package/contracts/instance/service/BundleService.sol +260 -0
  178. package/contracts/instance/service/BundleServiceManager.sol +54 -0
  179. package/contracts/instance/service/DistributionService.sol +38 -8
  180. package/contracts/instance/service/IBundleService.sol +45 -0
  181. package/contracts/instance/service/IPolicyService.sol +87 -0
  182. package/contracts/instance/service/IPoolService.sol +2 -33
  183. package/contracts/instance/service/IProductService.sol +2 -72
  184. package/contracts/instance/service/PolicyService.sol +508 -0
  185. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  186. package/contracts/instance/service/PoolService.sol +40 -144
  187. package/contracts/instance/service/ProductService.sol +50 -447
  188. package/contracts/types/RoleId.sol +2 -0
  189. package/package.json +1 -1
  190. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  191. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  192. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  193. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  194. package/contracts/instance/AccessManagedSimple.sol +0 -115
  195. package/contracts/instance/AccessManagerSimple.sol +0 -692
@@ -10,7 +10,7 @@ import {IRegistry} from "../registry/IRegistry.sol";
10
10
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
11
  import {IBaseComponent} from "../components/IBaseComponent.sol";
12
12
 
13
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
13
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
14
14
  import {Instance} from "./Instance.sol";
15
15
  import {InstanceReader} from "./InstanceReader.sol";
16
16
  import {BundleManager} from "./BundleManager.sol";
@@ -22,7 +22,7 @@ interface IInstanceService is IService {
22
22
  function createInstanceClone()
23
23
  external
24
24
  returns (
25
- AccessManagerSimple clonedAccessManager,
25
+ AccessManagerUpgradeableInitializeable clonedAccessManager,
26
26
  Instance clonedInstance,
27
27
  NftId instanceNftId,
28
28
  InstanceReader clonedInstanceReader,
@@ -3,9 +3,10 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
7
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
8
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
6
9
 
7
- import {AccessManagedSimple} from "./AccessManagedSimple.sol";
8
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
9
10
  import {IAccess} from "./module/IAccess.sol";
10
11
  import {IBundle} from "./module/IBundle.sol";
11
12
  import {IPolicy} from "./module/IPolicy.sol";
@@ -29,14 +30,16 @@ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
29
30
  import {IDistributionService} from "./service/IDistributionService.sol";
30
31
  import {IPoolService} from "./service/IPoolService.sol";
31
32
  import {IProductService} from "./service/IProductService.sol";
33
+ import {IPolicyService} from "./service/IPolicyService.sol";
34
+ import {IBundleService} from "./service/IBundleService.sol";
32
35
  import {VersionPart} from "../types/Version.sol";
36
+ import {InstanceBase} from "./InstanceBase.sol";
33
37
 
34
38
  contract Instance is
35
- AccessManagedSimple,
36
- KeyValueStore,
39
+ AccessManagedUpgradeable,
37
40
  IInstance,
38
- ERC165,
39
- Registerable
41
+ // Initializable,
42
+ InstanceBase
40
43
  {
41
44
 
42
45
  uint64 public constant ADMIN_ROLE = type(uint64).min;
@@ -53,21 +56,19 @@ contract Instance is
53
56
 
54
57
  mapping(ShortString name => address target) internal _target;
55
58
 
56
- AccessManagerSimple internal _accessManager;
59
+ AccessManagerUpgradeable internal _accessManager;
57
60
  InstanceReader internal _instanceReader;
58
61
  BundleManager internal _bundleManager;
59
62
 
60
- constructor(address accessManagerAddress, address registryAddress, NftId registryNftId)
63
+ function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
64
+ public
65
+ initializer
61
66
  {
62
- initialize(accessManagerAddress, registryAddress, registryNftId, msg.sender);
63
- }
64
-
65
- function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner) public {
66
67
  require(!_initialized, "Contract instance has already been initialized");
67
68
 
68
- initializeAccessManagedSimple(accessManagerAddress);
69
+ __AccessManaged_init(accessManagerAddress);
69
70
 
70
- _accessManager = AccessManagerSimple(accessManagerAddress);
71
+ _accessManager = AccessManagerUpgradeable(accessManagerAddress);
71
72
  _createRole(RoleIdLib.toRoleId(ADMIN_ROLE), "AdminRole", false, false);
72
73
  _createRole(RoleIdLib.toRoleId(PUBLIC_ROLE), "PublicRole", false, false);
73
74
 
@@ -434,8 +435,17 @@ contract Instance is
434
435
  return IPoolService(_registry.getServiceAddress("PoolService", VersionPart.wrap(3)));
435
436
  }
436
437
 
438
+ function getPolicyService() external view returns (IPolicyService) {
439
+ return IPolicyService(_registry.getServiceAddress("PolicyService", VersionPart.wrap(3)));
440
+ }
441
+
442
+ function getBundleService() external view returns (IBundleService) {
443
+ return IBundleService(_registry.getServiceAddress("BundleService", VersionPart.wrap(3)));
444
+ }
445
+
437
446
  function setInstanceReader(InstanceReader instanceReader) external restricted() {
438
447
  require(address(_instanceReader) == address(0), "InstanceReader is set");
448
+ require(instanceReader.getInstanceNftId() == getNftId(), "NFT ID of InstanceReader does not match");
439
449
  _instanceReader = instanceReader;
440
450
  }
441
451
 
@@ -445,6 +455,7 @@ contract Instance is
445
455
 
446
456
  function setBundleManager(BundleManager bundleManager) external restricted() {
447
457
  require(address(_bundleManager) == address(0), "BundleManager is set");
458
+ require(bundleManager.getInstanceNftId() == getNftId(), "NFT ID of BundleManager does not match");
448
459
  _bundleManager = bundleManager;
449
460
  }
450
461
 
@@ -3,9 +3,9 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
7
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
6
8
 
7
- import {AccessManagedSimple} from "./AccessManagedSimple.sol";
8
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
9
9
  import {IBundle} from "./module/IBundle.sol";
10
10
  import {IPolicy} from "./module/IPolicy.sol";
11
11
  import {IRisk} from "./module/IRisk.sol";
@@ -21,7 +21,7 @@ import {StateId, ACTIVE} from "../types/StateId.sol";
21
21
  import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
22
22
 
23
23
  contract InstanceAccessManager is
24
- AccessManagedSimple
24
+ AccessManagedUpgradeable
25
25
  {
26
26
  string public constant ADMIN_ROLE_NAME = "AdminRole";
27
27
  string public constant PUBLIC_ROLE_NAME = "PublicRole";
@@ -76,12 +76,12 @@ contract InstanceAccessManager is
76
76
  mapping(ShortString name => address target) internal _targetForName;
77
77
  address [] internal _targets;
78
78
 
79
- AccessManagerSimple internal _accessManager;
79
+ AccessManagerUpgradeable internal _accessManager;
80
80
 
81
81
  constructor(address accessManager)
82
82
  {
83
- _accessManager = AccessManagerSimple(accessManager);
84
- initializeAccessManagedSimple(accessManager);
83
+ _accessManager = AccessManagerUpgradeable(accessManager);
84
+ __AccessManaged_init(accessManager);
85
85
 
86
86
  _createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
87
87
  _createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {IAccess} from "./module/IAccess.sol";
8
+ import {IBundle} from "./module/IBundle.sol";
9
+ import {IPolicy} from "./module/IPolicy.sol";
10
+ import {IRisk} from "./module/IRisk.sol";
11
+ import {ISetup} from "./module/ISetup.sol";
12
+ import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
13
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
14
+ import {IInstance} from "./IInstance.sol";
15
+ import {InstanceReader} from "./InstanceReader.sol";
16
+ import {BundleManager} from "./BundleManager.sol";
17
+ import {NftId} from "../types/NftId.sol";
18
+ import {NumberId} from "../types/NumberId.sol";
19
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
20
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
21
+ import {RoleId, RoleIdLib} from "../types/RoleId.sol";
22
+ import {StateId, ACTIVE} from "../types/StateId.sol";
23
+ import {ERC165} from "../shared/ERC165.sol";
24
+ import {Registerable} from "../shared/Registerable.sol";
25
+ import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
26
+ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
27
+ import {IDistributionService} from "./service/IDistributionService.sol";
28
+ import {IPoolService} from "./service/IPoolService.sol";
29
+ import {IProductService} from "./service/IProductService.sol";
30
+ import {VersionPart} from "../types/Version.sol";
31
+ import {IInstanceBase} from "./IInstanceBase.sol";
32
+
33
+ contract InstanceBase is
34
+ IInstanceBase,
35
+ KeyValueStore,
36
+ ERC165,
37
+ Registerable
38
+ {
39
+
40
+
41
+ }
@@ -2,8 +2,9 @@
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
6
 
6
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
7
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
7
8
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
8
9
  import {Instance} from "./Instance.sol";
9
10
  import {IInstanceService} from "./IInstanceService.sol";
@@ -18,7 +19,7 @@ import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
18
19
  import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
19
20
  import {RoleId} from "../types/RoleId.sol";
20
21
  import {VersionLib} from "../types/Version.sol";
21
- import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../types/RoleId.sol";
22
+ import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
22
23
 
23
24
  contract InstanceService is Service, IInstanceService {
24
25
 
@@ -35,7 +36,7 @@ contract InstanceService is Service, IInstanceService {
35
36
  function createInstanceClone()
36
37
  external
37
38
  returns (
38
- AccessManagerSimple clonedAccessManager,
39
+ AccessManagerUpgradeableInitializeable clonedAccessManager,
39
40
  Instance clonedInstance,
40
41
  NftId clonedInstanceNftId,
41
42
  InstanceReader clonedInstanceReader,
@@ -51,8 +52,8 @@ contract InstanceService is Service, IInstanceService {
51
52
  // initially set the authority of the access managar to this (being the instance service).
52
53
  // This will allow the instance service to bootstrap the authorizations of the instance
53
54
  // and then transfer the ownership of the access manager to the instance owner once everything is setup
54
- clonedAccessManager = AccessManagerSimple(Clones.clone(_accessManagerMaster));
55
- clonedAccessManager.initialize(address(this));
55
+ clonedAccessManager = AccessManagerUpgradeableInitializeable(Clones.clone(_accessManagerMaster));
56
+ clonedAccessManager.__AccessManagerUpgradeableInitializeable_init(address(this));
56
57
 
57
58
  clonedInstance = Instance(Clones.clone(_instanceMaster));
58
59
  clonedInstance.initialize(address(clonedAccessManager), _registryAddress, registryNftId, msg.sender);
@@ -79,7 +80,7 @@ contract InstanceService is Service, IInstanceService {
79
80
  emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
80
81
  }
81
82
 
82
- function _grantInitialAuthorizations(AccessManagerSimple clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
83
+ function _grantInitialAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
83
84
  // configure authorization for distribution service on instance
84
85
  address distributionServiceAddress = _registry.getServiceAddress("DistributionService", VersionLib.toVersion(3, 0, 0).toMajorPart());
85
86
  clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
@@ -97,69 +98,88 @@ contract InstanceService is Service, IInstanceService {
97
98
  bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
98
99
  instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
99
100
  instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
100
- instancePoolServiceSelectors[2] = clonedInstance.createBundle.selector;
101
- instancePoolServiceSelectors[3] = clonedInstance.updateBundle.selector;
102
101
  clonedAccessManager.setTargetFunctionRole(
103
102
  address(clonedInstance),
104
103
  instancePoolServiceSelectors,
105
104
  POOL_SERVICE_ROLE().toInt());
106
-
107
- // configure authorization for pool service on bundle manager
108
- bytes4[] memory bundleManagerPoolServiceSelectors = new bytes4[](5);
109
- bundleManagerPoolServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
110
- bundleManagerPoolServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
111
- bundleManagerPoolServiceSelectors[2] = clonedBundleManager.add.selector;
112
- bundleManagerPoolServiceSelectors[3] = clonedBundleManager.lock.selector;
113
- bundleManagerPoolServiceSelectors[4] = clonedBundleManager.unlock.selector;
114
- clonedAccessManager.setTargetFunctionRole(
115
- address(clonedBundleManager),
116
- bundleManagerPoolServiceSelectors,
117
- POOL_SERVICE_ROLE().toInt());
118
105
 
119
106
  // configure authorization for product service on instance
120
107
  address productServiceAddress = _registry.getServiceAddress("ProductService", VersionLib.toVersion(3, 0, 0).toMajorPart());
121
108
  clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE().toInt(), address(productServiceAddress), 0);
122
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](9);
109
+ bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
123
110
  instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
124
111
  instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
125
112
  instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
126
113
  instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
127
114
  instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
128
- instanceProductServiceSelectors[5] = clonedInstance.createPolicy.selector;
129
- instanceProductServiceSelectors[6] = clonedInstance.updatePolicy.selector;
130
- instanceProductServiceSelectors[7] = clonedInstance.updatePolicyState.selector;
131
115
  clonedAccessManager.setTargetFunctionRole(
132
116
  address(clonedInstance),
133
117
  instanceProductServiceSelectors,
134
118
  PRODUCT_SERVICE_ROLE().toInt());
135
- }
136
119
 
137
- function setAccessManagerMaster(address accessManagerMaster) external {
138
- require(
139
- _accessManagerMaster == address(0),
140
- "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
141
- _accessManagerMaster = accessManagerMaster;
142
- }
120
+ // configure authorization for policy service on instance
121
+ address policyServiceAddress = _registry.getServiceAddress("PolicyService", VersionLib.toVersion(3, 0, 0).toMajorPart());
122
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE().toInt(), address(policyServiceAddress), 0);
123
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
124
+ instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
125
+ instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
126
+ instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
127
+ clonedAccessManager.setTargetFunctionRole(
128
+ address(clonedInstance),
129
+ instancePolicyServiceSelectors,
130
+ POLICY_SERVICE_ROLE().toInt());
131
+
132
+ // configure authorization for bundle service on instance
133
+ address bundleServiceAddress = _registry.getServiceAddress("BundleService", VersionLib.toVersion(3, 0, 0).toMajorPart());
134
+ clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE().toInt(), address(bundleServiceAddress), 0);
135
+ bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
136
+ instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
137
+ instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
138
+ clonedAccessManager.setTargetFunctionRole(
139
+ address(clonedInstance),
140
+ instanceBundleServiceSelectors,
141
+ BUNDLE_SERVICE_ROLE().toInt());
143
142
 
144
- function setInstanceMaster(address instanceMaster) external {
145
- require(
146
- _instanceMaster == address(0),
147
- "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
148
- _instanceMaster = instanceMaster;
143
+ // configure authorization for bundle service on bundle manager
144
+ bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
145
+ bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
146
+ bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
147
+ bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
148
+ bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
149
+ bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
150
+ clonedAccessManager.setTargetFunctionRole(
151
+ address(clonedBundleManager),
152
+ bundleManagerBundleServiceSelectors,
153
+ BUNDLE_SERVICE_ROLE().toInt());
149
154
  }
150
155
 
151
- function setInstanceReaderMaster(address instanceReaderMaster) external {
152
- require(
153
- _instanceReaderMaster == address(0),
154
- "ERROR:CRD-003:INSTANCE_READER_MASTER_ALREADY_SET");
155
- _instanceReaderMaster = instanceReaderMaster;
156
+ function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
157
+ require( _accessManagerMaster == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
158
+ require( _instanceMaster == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
159
+ require( _instanceBundleManagerMaster == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
160
+
161
+ require (accessManagerAddress != address(0), "ERROR:CRD-005:ACCESS_MANAGER_ZERO");
162
+ require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
163
+ require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
164
+ require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
165
+
166
+ Instance instance = Instance(instanceAddress);
167
+ InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
168
+ BundleManager bundleManager = BundleManager(bundleManagerAddress);
169
+
170
+ require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
171
+ require(instanceReader.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
172
+ require(bundleManager.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
173
+
174
+ _accessManagerMaster = accessManagerAddress;
175
+ _instanceMaster = instanceAddress;
176
+ _instanceReaderMaster = instanceReaderAddress;
177
+ _instanceBundleManagerMaster = bundleManagerAddress;
156
178
  }
157
179
 
158
- function setBundleManagerMaster(address bundleManagerMaster) external {
159
- require(
160
- _instanceBundleManagerMaster == address(0),
161
- "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
162
- _instanceBundleManagerMaster = bundleManagerMaster;
180
+ function upgradeInstanceReader(NftId instanceNftId) external {
181
+ // TODO: ensure this is done by instance owner
182
+ // TODO: upgrade instance reader of this instance to latest (set above here)
163
183
  }
164
184
 
165
185
  function getInstanceReaderMaster() external view returns (address) {
@@ -216,12 +236,21 @@ contract InstanceService is Service, IInstanceService {
216
236
  _registerInterface(type(IService).interfaceId);
217
237
  _registerInterface(type(IInstanceService).interfaceId);
218
238
  }
219
-
220
- function hasRole(address account, RoleId role, NftId instanceNftId) external view returns (bool) {
239
+ // TODO use instanceAddress instead of nft
240
+ /*function hasRole(address account, RoleId role, NftId instanceNftId) external view returns (bool) {
221
241
  IRegistry.ObjectInfo memory instanceObjectInfo = getRegistry().getObjectInfo(instanceNftId);
222
242
  address instanceAddress = instanceObjectInfo.objectAddress;
223
243
  Instance instance = Instance(instanceAddress);
224
- AccessManagerSimple accessManager = AccessManagerSimple(instance.authority());
244
+ AccessManagerUpgradeable accessManager = AccessManagerUpgradeable(instance.authority());
245
+ (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
246
+ if (executionDelay > 0) {
247
+ return false;
248
+ }
249
+ return isMember;
250
+ }*/
251
+ function hasRole(address account, RoleId role, address instanceAddress) external view returns (bool) {
252
+ Instance instance = Instance(instanceAddress);
253
+ AccessManagerUpgradeable accessManager = AccessManagerUpgradeable(instance.authority());
225
254
  (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
226
255
  if (executionDelay > 0) {
227
256
  return false;
@@ -21,6 +21,7 @@ contract ObjectManager is
21
21
 
22
22
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
23
23
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
24
+ NftId internal _instanceNftId;
24
25
  InstanceReader internal _instanceReader;
25
26
 
26
27
  constructor() Cloneable() {
@@ -45,7 +46,8 @@ contract ObjectManager is
45
46
 
46
47
  IInstance instance = IInstance(instanceInfo.objectAddress);
47
48
  _instanceReader = instance.getInstanceReader();
48
-
49
+ _instanceNftId = instanceNftId;
50
+
49
51
  emit LogObjectManagerInitialized(instanceNftId, address(_instanceReader));
50
52
  }
51
53
 
@@ -53,6 +55,10 @@ contract ObjectManager is
53
55
  return _instanceReader;
54
56
  }
55
57
 
58
+ function getInstanceNftId() external view returns (NftId) {
59
+ return _instanceNftId;
60
+ }
61
+
56
62
  function _add(NftId componentNftId, NftId objectNftId) internal {
57
63
  LibNftIdSet.Set storage allSet = _allObjects[componentNftId];
58
64
  LibNftIdSet.Set storage activeSet = _activeObjects[componentNftId];
@@ -20,21 +20,6 @@ abstract contract ComponentServiceBase is Service {
20
20
  error ExpectedRoleMissing(RoleId expected, address caller);
21
21
  error ComponentTypeInvalid(ObjectType componentType);
22
22
 
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
23
 
39
24
  /// @dev modifier to check if caller is a registered service
40
25
  modifier onlyService() {
@@ -43,64 +28,19 @@ abstract contract ComponentServiceBase is Service {
43
28
  _;
44
29
  }
45
30
 
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();
31
+ // view functions
32
+
33
+ function getRegistryService() public view virtual returns (IRegistryService) {
34
+ address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
35
+ return IRegistryService(service);
58
36
  }
59
37
 
60
38
  function getInstanceService() public view returns (InstanceService) {
61
39
  return InstanceService(getRegistry().getServiceAddress("InstanceService", getMajorVersion()));
62
40
  }
63
41
 
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
- }
95
- }
96
-
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
44
  function _getInstance(IRegistry.ObjectInfo memory compObjInfo) internal view returns (IInstance) {
105
45
  IRegistry registry = getRegistry();
106
46
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(compObjInfo.parentNftId);
@@ -108,7 +48,8 @@ abstract contract ComponentServiceBase is Service {
108
48
  }
109
49
 
110
50
  function _getAndVerifyComponentInfoAndInstance(
111
- ObjectType objectType
51
+ //address component,
52
+ ObjectType expectedType
112
53
  )
113
54
  internal
114
55
  view
@@ -117,18 +58,15 @@ abstract contract ComponentServiceBase is Service {
117
58
  IInstance instance
118
59
  )
119
60
  {
120
- NftId componentNftId = _registry.getNftId(msg.sender);
121
- require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
61
+ IRegistry registry = getRegistry();
62
+ //TODO redundant check -> just check type
63
+ //NftId componentNftId = registry.getNftId(component);
64
+ //require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
122
65
 
123
- info = getRegistry().getObjectInfo(componentNftId);
124
- require(info.objectType == objectType, "OBJECT_TYPE_INVALID");
66
+ info = registry.getObjectInfo(msg.sender);
67
+ require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
125
68
 
126
- address instanceAddress = getRegistry().getObjectInfo(info.parentNftId).objectAddress;
69
+ address instanceAddress = registry.getObjectInfo(info.parentNftId).objectAddress;
127
70
  instance = IInstance(instanceAddress);
128
71
  }
129
-
130
- function getRegistryService() public view virtual returns (IRegistryService) {
131
- address service = getRegistry().getServiceAddress("RegistryService", getMajorVersion());
132
- return IRegistryService(service);
133
- }
134
72
  }