@etherisc/gif-next 0.0.2-c96f882-016 → 0.0.2-ca84135-795

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