@etherisc/gif-next 0.0.2-e59218b-293 → 0.0.2-e5a2253-213

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 (244) hide show
  1. package/README.md +63 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +166 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +153 -85
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +128 -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 +28 -2
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -5
  13. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  14. package/artifacts/contracts/components/Pool.sol/Pool.json +185 -114
  15. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  16. package/artifacts/contracts/components/Product.sol/Product.json +160 -98
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  37. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  38. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +138 -2
  45. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  46. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  47. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +104 -14
  49. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.json +107 -660
  51. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +244 -114
  53. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  54. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  55. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +38 -28
  57. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +183 -151
  59. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -74
  61. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  62. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  63. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +114 -32
  65. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
  67. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  73. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1121 -0
  81. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +141 -66
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +14 -34
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IBundleService.sol/IBundleService.json} +295 -41
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -13
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -164
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +17 -241
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1246 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +140 -241
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +14 -38
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +129 -401
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +14 -78
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +132 -133
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -65
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +145 -227
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +30 -128
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -104
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IService.sol/IService.json +13 -13
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  141. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  143. package/artifacts/contracts/shared/Service.sol/Service.json +13 -13
  144. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -31
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  157. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  158. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  159. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  164. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  166. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  167. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  173. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  179. package/contracts/components/BaseComponent.sol +91 -14
  180. package/contracts/components/Distribution.sol +2 -11
  181. package/contracts/components/IBaseComponent.sol +11 -1
  182. package/contracts/components/IPoolComponent.sol +5 -1
  183. package/contracts/components/IProductComponent.sol +2 -2
  184. package/contracts/components/Pool.sol +38 -26
  185. package/contracts/components/Product.sol +28 -21
  186. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  187. package/contracts/instance/BundleManager.sol +129 -0
  188. package/contracts/instance/Cloneable.sol +46 -0
  189. package/contracts/instance/IInstance.sol +9 -3
  190. package/contracts/instance/IInstanceBase.sol +25 -0
  191. package/contracts/instance/IInstanceService.sol +13 -3
  192. package/contracts/instance/Instance.sol +43 -224
  193. package/contracts/instance/InstanceAccessManager.sol +93 -78
  194. package/contracts/instance/InstanceBase.sol +39 -0
  195. package/contracts/instance/InstanceService.sol +247 -100
  196. package/contracts/instance/InstanceServiceManager.sol +5 -8
  197. package/contracts/instance/ObjectManager.sol +101 -0
  198. package/contracts/instance/base/ComponentServiceBase.sol +85 -81
  199. package/contracts/instance/base/IInstanceBase.sol +0 -2
  200. package/contracts/instance/module/IAccess.sol +27 -17
  201. package/contracts/instance/module/ISetup.sol +2 -1
  202. package/contracts/instance/service/BundleService.sol +294 -0
  203. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  204. package/contracts/instance/service/DistributionService.sol +48 -21
  205. package/contracts/instance/service/DistributionServiceManager.sol +6 -9
  206. package/contracts/instance/service/IBundleService.sol +44 -0
  207. package/contracts/instance/service/IPolicyService.sol +94 -0
  208. package/contracts/instance/service/IPoolService.sol +4 -25
  209. package/contracts/instance/service/IProductService.sol +2 -72
  210. package/contracts/instance/service/PolicyService.sol +539 -0
  211. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  212. package/contracts/instance/service/PoolService.sol +65 -124
  213. package/contracts/instance/service/PoolServiceManager.sol +5 -8
  214. package/contracts/instance/service/ProductService.sol +96 -454
  215. package/contracts/registry/ChainNft.sol +1 -1
  216. package/contracts/registry/IRegistry.sol +26 -16
  217. package/contracts/registry/IRegistryService.sol +13 -5
  218. package/contracts/registry/Registry.sol +149 -201
  219. package/contracts/registry/RegistryAccessManager.sol +210 -0
  220. package/contracts/registry/RegistryService.sol +50 -88
  221. package/contracts/registry/RegistryServiceManager.sol +18 -36
  222. package/contracts/registry/ReleaseManager.sol +342 -0
  223. package/contracts/registry/TokenRegistry.sol +5 -6
  224. package/contracts/shared/IRegisterable.sol +0 -2
  225. package/contracts/shared/IService.sol +2 -1
  226. package/contracts/shared/ProxyManager.sol +1 -1
  227. package/contracts/shared/Service.sol +10 -7
  228. package/contracts/test/TestService.sol +3 -2
  229. package/contracts/types/NftIdSet.sol +26 -24
  230. package/contracts/types/RoleId.sol +10 -10
  231. package/package.json +1 -1
  232. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  233. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  234. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  235. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  236. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  237. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  238. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  239. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  240. package/contracts/instance/AccessManagedSimple.sol +0 -115
  241. package/contracts/instance/AccessManagerSimple.sol +0 -692
  242. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  243. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  244. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
@@ -7,25 +7,25 @@ import {ChainNft} from "./ChainNft.sol";
7
7
  import {NftId} from "../types/NftId.sol";
8
8
  import {ObjectType} from "../types/ObjectType.sol";
9
9
  import {VersionPart} from "../types/Version.sol";
10
+ import {Timestamp} from "../types/Timestamp.sol";
10
11
 
11
12
  interface IRegistry is IERC165 {
12
13
 
13
- event LogInitialMajorVersionSet(VersionPart majorVersion);
14
- event LogMajorVersionSet(VersionPart majorVersionMax);
15
- event LogRegistration(ObjectInfo info);
16
- event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
17
-
18
- // setMajorVersion()
19
- error NotOwner(address account);
20
- error MajorVersionMaxIncreaseInvalid(VersionPart newMajorVersionMax, VersionPart existingMaxMajorVersion);
14
+ event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
15
+ event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
21
16
 
22
17
  // register()
23
- error NotRegistryService();
18
+ error CallerNotRegistryService();
19
+ error ServiceRegistration();
20
+
21
+ // registerService()
22
+ error CallerNotReleaseManager();
23
+ error ServiceAlreadyRegistered(address service);
24
+
25
+ // _register()
24
26
  error ZeroParentAddress();
25
27
  error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
26
28
  error ContractAlreadyRegistered(address objectAddress);
27
- error InvalidServiceVersion(VersionPart majorVersion);
28
- error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
29
29
 
30
30
  struct ObjectInfo {
31
31
  NftId nftId;
@@ -38,7 +38,17 @@ interface IRegistry is IERC165 {
38
38
  }// TODO delete nftId and initialOwner(if not used) from struct
39
39
  // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
40
40
 
41
- function setMajorVersion(VersionPart newMajorVersionMax) external;
41
+ struct ReleaseInfo {
42
+ ObjectType[] domains;
43
+ Timestamp createdAt;
44
+ //Timestamp updatedAt;
45
+ }
46
+
47
+ function registerService(
48
+ ObjectInfo memory serviceInfo,
49
+ VersionPart serviceVersion,
50
+ ObjectType serviceDomain
51
+ ) external returns(NftId nftId);
42
52
 
43
53
  function register(ObjectInfo memory info) external returns (NftId nftId);
44
54
 
@@ -48,6 +58,8 @@ interface IRegistry is IERC165 {
48
58
 
49
59
  function getMajorVersion() external view returns (VersionPart);
50
60
 
61
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
62
+
51
63
  function getObjectCount() external view returns (uint256);
52
64
 
53
65
  function getNftId() external view returns (NftId nftId);
@@ -68,11 +80,9 @@ interface IRegistry is IERC165 {
68
80
 
69
81
  function isRegisteredService(address contractAddress) external view returns (bool);
70
82
 
71
- function getServiceName(NftId nftId) external view returns (string memory name);
72
-
73
83
  function getServiceAddress(
74
- string memory serviceName,
75
- VersionPart majorVersion
84
+ ObjectType serviceDomain,
85
+ VersionPart releaseVersion
76
86
  ) external view returns (address serviceAddress);
77
87
 
78
88
  function getChainNft() external view returns (ChainNft);
@@ -1,6 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
4
6
  import {NftId} from "../types/NftId.sol";
5
7
  import {ObjectType} from "../types/ObjectType.sol";
6
8
  import {RoleId} from "../types/RoleId.sol";
@@ -10,8 +12,10 @@ import {IRegistry} from "./IRegistry.sol";
10
12
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
13
  import {IBaseComponent} from "../components/IBaseComponent.sol";
12
14
 
13
- interface IRegistryService is IService {
14
-
15
+ interface IRegistryService is
16
+ IService,
17
+ IAccessManaged
18
+ {
15
19
  error SelfRegistration();
16
20
  error NotRegistryOwner();
17
21
 
@@ -28,9 +32,13 @@ interface IRegistryService is IService {
28
32
  error InvalidInitialOwner(address initialOwner);
29
33
  error InvalidAddress(address registerableAddress);
30
34
 
35
+ struct FunctionConfig
36
+ {
37
+ ObjectType serviceDomain;
38
+ bytes4 selector;
39
+ }
31
40
 
32
- function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
33
-
41
+ // TODO used by service -> add owner arg
34
42
  function registerInstance(IRegisterable instance)
35
43
  external returns(IRegistry.ObjectInfo memory info, bytes memory data);
36
44
 
@@ -43,7 +51,7 @@ interface IRegistryService is IService {
43
51
  function registerDistribution(IBaseComponent distribution, address owner)
44
52
  external returns(IRegistry.ObjectInfo memory info, bytes memory data);
45
53
 
46
- function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
54
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
47
55
 
48
56
  function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
49
57
  }
@@ -1,88 +1,75 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegisterable} from "../shared/IRegisterable.sol";
5
- import {IService} from "../shared/IService.sol";
6
4
 
7
- import {ChainNft} from "./ChainNft.sol";
8
- import {IRegistry} from "./IRegistry.sol";
9
- import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
10
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
5
+ import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
6
+ import {VersionPart} from "../types/Version.sol";
11
7
  import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
12
- import {ITransferInterceptor} from "./ITransferInterceptor.sol";
13
8
 
14
9
  import {ERC165} from "../shared/ERC165.sol";
15
10
 
11
+ import {ChainNft} from "./ChainNft.sol";
12
+ import {IRegistry} from "./IRegistry.sol";
13
+ import {ReleaseManager} from "./ReleaseManager.sol";
16
14
 
17
15
  // IMPORTANT
18
16
  // Each NFT minted by registry is accosiated with:
19
17
  // 1) NFT owner
20
18
  // 2) registred contract OR object stored in registered (parent) contract
21
19
  // Four registration flows:
22
- // 1) non IRegisterable address by registryOwner (TOKEN)
23
- // 2) IRegisterable address by registryOwner (SERVICE)
24
- // 3) IRegisterable address by approved service (INSTANCE, COMPONENT)
25
- // 4) state object by approved service (POLICY, BUNDLE, STAKE)
20
+ // 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
21
+ // 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
22
+ // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
23
+ // 4) state object by regular service (POLICY, BUNDLE, STAKE)
26
24
 
27
25
  contract Registry is
28
26
  ERC165,
29
27
  IRegistry
30
28
  {
31
- uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
32
29
  address public constant NFT_LOCK_ADDRESS = address(0x1);
33
30
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
34
- uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
35
31
  string public constant EMPTY_URI = "";
36
32
 
37
- VersionPart internal _majorVersion;
38
-
39
33
  mapping(NftId nftId => ObjectInfo info) internal _info;
40
34
  mapping(address object => NftId nftId) internal _nftIdByAddress;
41
35
 
36
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) _service;
37
+
42
38
  mapping(ObjectType objectType => mapping(
43
39
  ObjectType parentType => bool)) internal _isValidContractCombination;
44
40
 
45
41
  mapping(ObjectType objectType => mapping(
46
42
  ObjectType parentType => bool)) internal _isValidObjectCombination;
47
43
 
48
- mapping(NftId nftId => string name) internal _string;
49
- mapping(bytes32 serviceNameHash => mapping(
50
- VersionPart majorVersion => address service)) internal _service;
51
-
52
44
  NftId internal _registryNftId;
53
- NftId internal _serviceNftId; // set in stone upon registry creation
54
45
  ChainNft internal _chainNft;
55
46
 
47
+ ReleaseManager internal _releaseManager;
56
48
 
57
- modifier onlyOwner() {
58
- if(msg.sender != getOwner()) {
59
- revert NotOwner(msg.sender);
49
+ modifier onlyRegistryService() {
50
+ if(!_releaseManager.isActiveRegistryService(msg.sender)) {
51
+ revert CallerNotRegistryService();
60
52
  }
61
53
  _;
62
54
  }
63
55
 
64
- modifier onlyRegistryService() {
65
- if(msg.sender != _info[_serviceNftId].objectAddress) {
66
- revert NotRegistryService();
56
+ modifier onlyReleaseManager() {
57
+ if(msg.sender != address(_releaseManager)) {
58
+ revert CallerNotReleaseManager();
67
59
  }
68
60
  _;
69
61
  }
70
62
 
71
- constructor(address registryOwner, VersionPart majorVersion)
63
+ constructor()
72
64
  {
73
- require(registryOwner > address(0), "Registry: registry owner is 0");
74
-
75
- // major version at constructor time
76
- _majorVersion = VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
77
- emit LogInitialMajorVersionSet(_majorVersion);
65
+ _releaseManager = ReleaseManager(msg.sender);
78
66
 
79
67
  // deploy NFT
80
68
  _chainNft = new ChainNft(address(this));// adds 10kb to deployment size
81
69
 
82
70
  // initial registry setup
83
71
  _registerProtocol();
84
- _registerRegistry(registryOwner);
85
- _registerRegistryService(registryOwner);
72
+ _registerRegistry();
86
73
 
87
74
  // set object parent relations
88
75
  _setupValidObjectParentCombinations();
@@ -90,94 +77,49 @@ contract Registry is
90
77
  _registerInterface(type(IRegistry).interfaceId);
91
78
  }
92
79
 
93
- // from IRegistry
94
-
95
- /// @dev latest GIF release version
96
- function setMajorVersion(VersionPart newMajorVersion)
80
+ function registerService(
81
+ ObjectInfo memory info,
82
+ VersionPart version,
83
+ ObjectType domain
84
+ )
97
85
  external
98
- onlyOwner
86
+ onlyReleaseManager
87
+ returns(NftId nftId)
99
88
  {
100
- // ensure major version increments is one
101
- uint256 oldMax = _majorVersion.toInt();
102
- uint256 newMax = newMajorVersion.toInt();
103
- if (newMax <= oldMax || newMax - oldMax != 1) {
104
- revert MajorVersionMaxIncreaseInvalid(newMajorVersion, _majorVersion);
89
+ /* must be guaranteed by release manager
90
+ if(info.objectType != SERVICE()) {
91
+ revert();
105
92
  }
93
+ info.initialOwner = NFT_LOCK_ADDRESS <- if services are access managed
94
+ */
106
95
 
107
- _majorVersion = newMajorVersion;
108
- emit LogMajorVersionSet(_majorVersion);
96
+ if(_service[version][domain] > address(0)) {
97
+ revert ServiceAlreadyRegistered(info.objectAddress);
98
+ }
99
+
100
+ _service[version][domain] = info.objectAddress; // nftId;
101
+
102
+ nftId = _register(info);
103
+
104
+ emit LogServiceRegistration(version, domain);
109
105
  }
110
106
 
111
- /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
112
- // TODO service registration means its approval for some type?
113
- // TODO registration of precompile addresses
114
107
  function register(ObjectInfo memory info)
115
108
  external
116
109
  onlyRegistryService
117
110
  returns(NftId nftId)
118
111
  {
119
- ObjectType objectType = info.objectType;
120
- NftId parentNftId = info.parentNftId;
121
- ObjectInfo memory parentInfo = _info[parentNftId];
122
- ObjectType parentType = parentInfo.objectType; // see function header
123
- address parentAddress = parentInfo.objectAddress;
124
-
125
- // parent is contract -> need to check? -> check before minting
126
- // special case: global registry nft as parent when not on mainnet -> global registry address is 0
127
- // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
128
- // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
129
- if(parentAddress == address(0)) {
130
- revert ZeroParentAddress();
131
- }
132
-
133
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
134
-
135
- // TODO does external call
136
- uint256 mintedTokenId = _chainNft.mint(
137
- info.initialOwner,
138
- interceptor,
139
- EMPTY_URI);
140
- nftId = toNftId(mintedTokenId);
141
-
142
- // TODO move nftId out of info struct
143
- // getters by nftId -> return struct without nftId
144
- // getters by address -> return nftId AND struct
145
- info.nftId = nftId;
146
- _info[nftId] = info;
147
-
148
- if(info.objectAddress > address(0))
149
- {
150
- // TODO if need to add types latter -> at least call this check from registry service
151
- // parent is registered + object-parent types are valid
152
- if(_isValidContractCombination[objectType][parentType] == false) {
153
- revert InvalidTypesCombination(objectType, parentType);
154
- }
155
-
156
- address contractAddress = info.objectAddress;
157
-
158
- if(_nftIdByAddress[contractAddress].gtz()) {
159
- revert ContractAlreadyRegistered(contractAddress);
160
- }
161
-
162
- _nftIdByAddress[contractAddress] = nftId;
163
-
164
- // special case
165
- if(objectType == SERVICE()) {
166
- _registerService(info);
167
- }
168
- }
169
- else
170
- {
171
- if(_isValidObjectCombination[objectType][parentType] == false) {
172
- revert InvalidTypesCombination(objectType, parentType);
173
- }
112
+ // no service registrations
113
+ if(info.objectType == SERVICE()) {
114
+ revert ServiceRegistration();
174
115
  }
175
116
 
176
- emit LogRegistration(info);
117
+ nftId = _register(info);
177
118
  }
119
+
178
120
  /// @dev earliest GIF major version
179
121
  function getMajorVersionMin() external view returns (VersionPart) {
180
- return VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
122
+ return _releaseManager.getInitialVersion();
181
123
  }
182
124
 
183
125
  // TODO make distinction between active an not yet active version
@@ -188,12 +130,17 @@ contract Registry is
188
130
  // in the process of being set up while the latest active version is 1 major release smaller
189
131
  /// @dev latest GIF major version (might not yet be active)
190
132
  function getMajorVersionMax() external view returns (VersionPart) {
191
- return _majorVersion;
133
+ return _releaseManager.getNextVersion();
192
134
  }
193
135
 
194
136
  /// @dev latest active GIF release version
195
137
  function getMajorVersion() external view returns (VersionPart) {
196
- return _majorVersion;
138
+ return _releaseManager.getLatestVersion();
139
+ }
140
+
141
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory)
142
+ {
143
+ return _releaseManager.getReleaseInfo(version);
197
144
  }
198
145
 
199
146
  function getObjectCount() external view override returns (uint256) {
@@ -236,18 +183,12 @@ contract Registry is
236
183
  return _nftIdByAddress[object].gtz() && _info[_nftIdByAddress[object]].objectType == SERVICE();
237
184
  }
238
185
 
239
- function getServiceName(NftId nftId) external view returns (string memory) {
240
- return _string[nftId];
241
- }
242
-
243
- // special case to retrive a gif service
244
186
  function getServiceAddress(
245
- string memory serviceName,
246
- VersionPart majorVersion
187
+ ObjectType serviceDomain,
188
+ VersionPart releaseVersion
247
189
  ) external view returns (address)
248
190
  {
249
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
250
- return _service[serviceNameHash][majorVersion];
191
+ return _service[releaseVersion][serviceDomain];
251
192
  }
252
193
 
253
194
  function getChainNft() external view override returns (ChainNft) {
@@ -260,28 +201,65 @@ contract Registry is
260
201
 
261
202
  // Internals
262
203
 
263
- function _registerService(ObjectInfo memory info)
204
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
205
+ // TODO registration of precompile addresses
206
+ function _register(ObjectInfo memory info)
264
207
  internal
208
+ returns(NftId nftId)
265
209
  {
266
- (
267
- string memory serviceName,
268
- VersionPart majorVersion
269
- ) = abi.decode(info.data, (string, VersionPart));
270
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
271
-
272
- // ensures consistency of service.getVersion() and majorVersion here
273
- if(majorVersion != _majorVersion) {
274
- revert InvalidServiceVersion(majorVersion);
275
- }
276
-
277
- if(_service[serviceNameHash][majorVersion] != address(0)) {
278
- revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
210
+ ObjectType objectType = info.objectType;
211
+ NftId parentNftId = info.parentNftId;
212
+ ObjectInfo memory parentInfo = _info[parentNftId];
213
+ ObjectType parentType = parentInfo.objectType; // see function header
214
+ address parentAddress = parentInfo.objectAddress;
215
+
216
+ // parent is contract -> need to check? -> check before minting
217
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
218
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
219
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
220
+ if(parentAddress == address(0)) {
221
+ revert ZeroParentAddress();
279
222
  }
280
223
 
281
- _string[info.nftId] = serviceName;
282
- _service[serviceNameHash][majorVersion] = info.objectAddress;
224
+ address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
225
+
226
+ // TODO does external call
227
+ // compute next nftId, do all checks and stores, mint() at most end...
228
+ uint256 mintedTokenId = _chainNft.mint(
229
+ info.initialOwner,
230
+ interceptor,
231
+ EMPTY_URI);
232
+ nftId = toNftId(mintedTokenId);
233
+
234
+ // TODO move nftId out of info struct
235
+ // getters by nftId -> return struct without nftId
236
+ // getters by address -> return nftId AND struct
237
+ info.nftId = nftId;
238
+ _info[nftId] = info;
239
+
240
+ if(info.objectAddress > address(0))
241
+ {
242
+ // parent is registered + object-parent types are valid
243
+ if(_isValidContractCombination[objectType][parentType] == false) {
244
+ revert InvalidTypesCombination(objectType, parentType);
245
+ }
246
+
247
+ address contractAddress = info.objectAddress;
248
+
249
+ if(_nftIdByAddress[contractAddress].gtz()) {
250
+ revert ContractAlreadyRegistered(contractAddress);
251
+ }
252
+
253
+ _nftIdByAddress[contractAddress] = nftId;
254
+ }
255
+ else
256
+ {
257
+ if(_isValidObjectCombination[objectType][parentType] == false) {
258
+ revert InvalidTypesCombination(objectType, parentType);
259
+ }
260
+ }
283
261
 
284
- emit LogServiceNameRegistration(serviceName, majorVersion);
262
+ emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
285
263
  }
286
264
 
287
265
  /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
@@ -314,32 +292,31 @@ contract Registry is
314
292
 
315
293
  /// @dev protocol registration used to anchor the dip ecosystem relations
316
294
  function _registerProtocol()
317
- internal
295
+ private
318
296
  {
319
297
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
320
298
  NftId protocolNftId = toNftId(protocolId);
321
299
 
322
- _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
300
+ _info[protocolNftId] = ObjectInfo({
301
+ nftId: protocolNftId,
302
+ parentNftId: zeroNftId(),
303
+ objectType: PROTOCOL(),
304
+ isInterceptor: false,
305
+ objectAddress: address(0),
306
+ initialOwner: NFT_LOCK_ADDRESS,
307
+ data: ""
308
+ });
323
309
 
324
- _info[protocolNftId] = ObjectInfo(
325
- protocolNftId,
326
- zeroNftId(), // parent
327
- PROTOCOL(),
328
- false, // isInterceptor
329
- address(0), // objectAddress
330
- NFT_LOCK_ADDRESS,// initialOwner
331
- ""
332
- );
310
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
333
311
  }
334
312
 
335
313
  /// @dev registry registration
336
314
  /// might also register the global registry when not on mainnet
337
- function _registerRegistry(address registryOwner)
338
- internal
315
+ function _registerRegistry()
316
+ private
339
317
  {
340
318
  uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
341
319
  NftId registryNftId = toNftId(registryId);
342
-
343
320
  NftId parentNftId;
344
321
 
345
322
  if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
@@ -352,68 +329,39 @@ contract Registry is
352
329
  parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
353
330
  }
354
331
 
355
- _chainNft.mint(registryOwner, registryId);
356
-
357
- _info[registryNftId] = ObjectInfo(
358
- registryNftId,
359
- parentNftId,
360
- REGISTRY(),
361
- false, // isInterceptor
362
- address(this),
363
- registryOwner,
364
- ""
365
- );
332
+ _info[registryNftId] = ObjectInfo({
333
+ nftId: registryNftId,
334
+ parentNftId: parentNftId,
335
+ objectType: REGISTRY(),
336
+ isInterceptor: false,
337
+ objectAddress: address(this),
338
+ initialOwner: NFT_LOCK_ADDRESS,
339
+ data: ""
340
+ });
366
341
  _nftIdByAddress[address(this)] = registryNftId;
367
342
  _registryNftId = registryNftId;
368
- }
369
343
 
344
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
345
+ }
370
346
 
371
347
  /// @dev global registry registration for non mainnet registries
372
348
  function _registerGlobalRegistry()
373
- internal
349
+ private
374
350
  {
375
351
  uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
376
-
377
- _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
378
-
379
352
  NftId globalRegistryNftId = toNftId(globalRegistryId);
380
353
 
381
- _info[globalRegistryNftId] = ObjectInfo(
382
- globalRegistryNftId,
383
- toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
384
- REGISTRY(),
385
- false, // isInterceptor
386
- address(0), // objectAddress
387
- NFT_LOCK_ADDRESS, // initialOwner
388
- "" // data
389
- );
390
- }
354
+ _info[globalRegistryNftId] = ObjectInfo({
355
+ nftId: globalRegistryNftId,
356
+ parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
357
+ objectType: REGISTRY(),
358
+ isInterceptor: false,
359
+ objectAddress: address(0),
360
+ initialOwner: NFT_LOCK_ADDRESS,
361
+ data: ""
362
+ });
391
363
 
392
- function _registerRegistryService(address registryOwner)
393
- internal
394
- {
395
- uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
396
- NftId serviceNftId = toNftId(serviceId);
397
-
398
- _chainNft.mint(registryOwner, serviceId);
399
-
400
- _info[serviceNftId] = ObjectInfo(
401
- serviceNftId,
402
- _registryNftId,
403
- SERVICE(),
404
- false, // isInterceptor
405
- msg.sender, // service deploys registry
406
- registryOwner, // initialOwner,
407
- ""
408
- );
409
-
410
- _nftIdByAddress[msg.sender] = serviceNftId;
411
-
412
- string memory serviceName = "RegistryService";
413
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
414
- _service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
415
- _string[serviceNftId] = serviceName;
416
- _serviceNftId = serviceNftId;
364
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
417
365
  }
418
366
 
419
367
  /// @dev defines which object - parent types relations are allowed to register
@@ -423,7 +371,7 @@ contract Registry is
423
371
  // 3) DO NOT use REGISTRY as object type
424
372
  // 2) DO NOT use PROTOCOL and "zeroObjectType"
425
373
  function _setupValidObjectParentCombinations()
426
- internal
374
+ private
427
375
  {
428
376
  // registry as parent, ONLY registry owner
429
377
  _isValidContractCombination[TOKEN()][REGISTRY()] = true;
@@ -445,4 +393,4 @@ contract Registry is
445
393
  _isValidObjectCombination[BUNDLE()][POOL()] = true;
446
394
  _isValidObjectCombination[STAKE()][POOL()] = true;
447
395
  }
448
- }
396
+ }