@etherisc/gif-next 0.0.2-b9e9dc3-713 → 0.0.2-bc11089-132

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 (256) hide show
  1. package/README.md +67 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +155 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +177 -15
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +117 -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/Pool.sol/Pool.dbg.json +1 -1
  13. package/artifacts/contracts/components/Pool.sol/Pool.json +209 -16
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +179 -50
  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/Dummy.sol/LifeCycleModule.json +2 -2
  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/SM.sol/SM.json +2 -2
  35. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  40. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  41. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  43. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  44. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  45. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1408 -22
  47. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  48. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  50. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +120 -0
  51. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  52. package/artifacts/contracts/instance/Instance.sol/Instance.json +200 -624
  53. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +283 -143
  55. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  56. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +202 -37
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +344 -56
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -13
  63. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +40 -0
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  72. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +54 -22
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
  84. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +440 -0
  86. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +18 -18
  88. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +684 -0
  90. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -0
  92. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  94. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  98. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +9 -71
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +17 -232
  102. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +984 -0
  104. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  106. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +718 -0
  108. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +428 -0
  110. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +768 -0
  112. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +201 -0
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -19
  119. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  120. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.json +172 -49
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +61 -29
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +47 -34
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  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/ERC165.sol/ERC165.json +2 -2
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +4 -4
  142. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  144. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
  146. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  147. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  149. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +4 -4
  153. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  155. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestService.sol/TestService.json +11 -11
  157. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  160. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  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/VersionLib.json +2 -2
  185. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  187. package/contracts/components/BaseComponent.sol +73 -11
  188. package/contracts/components/Distribution.sol +15 -18
  189. package/contracts/components/IBaseComponent.sol +8 -0
  190. package/contracts/components/IDistributionComponent.sol +1 -0
  191. package/contracts/components/IPoolComponent.sol +5 -1
  192. package/contracts/components/Pool.sol +43 -31
  193. package/contracts/components/Product.sol +42 -47
  194. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  195. package/contracts/instance/BundleManager.sol +129 -0
  196. package/contracts/instance/Cloneable.sol +46 -0
  197. package/contracts/instance/IInstance.sol +41 -7
  198. package/contracts/instance/IInstanceBase.sol +26 -0
  199. package/contracts/instance/IInstanceService.sol +29 -8
  200. package/contracts/instance/Instance.sol +66 -226
  201. package/contracts/instance/InstanceAccessManager.sol +94 -78
  202. package/contracts/instance/InstanceBase.sol +41 -0
  203. package/contracts/instance/InstanceReader.sol +36 -1
  204. package/contracts/instance/InstanceService.sol +245 -47
  205. package/contracts/instance/InstanceServiceManager.sol +6 -5
  206. package/contracts/instance/ObjectManager.sol +101 -0
  207. package/contracts/instance/base/ComponentServiceBase.sol +44 -21
  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 +260 -0
  212. package/contracts/instance/service/BundleServiceManager.sol +54 -0
  213. package/contracts/instance/service/ComponentOwnerService.sol +5 -5
  214. package/contracts/instance/service/DistributionService.sol +118 -0
  215. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  216. package/contracts/instance/service/IBundleService.sol +45 -0
  217. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  218. package/contracts/instance/service/IDistributionService.sol +1 -1
  219. package/contracts/instance/service/IPolicyService.sol +87 -0
  220. package/contracts/instance/service/IPoolService.sol +7 -24
  221. package/contracts/instance/service/IProductService.sol +7 -74
  222. package/contracts/instance/service/PolicyService.sol +508 -0
  223. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  224. package/contracts/instance/service/PoolService.sol +124 -0
  225. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  226. package/contracts/instance/service/ProductService.sol +173 -0
  227. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  228. package/contracts/registry/IRegistry.sol +26 -2
  229. package/contracts/registry/IRegistryService.sol +34 -19
  230. package/contracts/registry/Registry.sol +61 -36
  231. package/contracts/registry/RegistryService.sol +42 -124
  232. package/contracts/registry/RegistryServiceManager.sol +21 -5
  233. package/contracts/registry/TokenRegistry.sol +111 -0
  234. package/contracts/shared/ERC165.sol +6 -2
  235. package/contracts/{instance/base → shared}/IService.sol +3 -3
  236. package/contracts/shared/NftOwnable.sol +2 -4
  237. package/contracts/shared/Registerable.sol +1 -0
  238. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  239. package/contracts/shared/Service.sol +55 -0
  240. package/contracts/test/TestService.sol +3 -5
  241. package/contracts/types/NftIdSet.sol +26 -24
  242. package/contracts/types/RoleId.sol +10 -1
  243. package/contracts/types/StateId.sol +4 -0
  244. package/contracts/types/Version.sol +4 -1
  245. package/package.json +1 -1
  246. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  247. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  248. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  249. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  250. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  251. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  252. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  253. package/contracts/instance/AccessManagedSimple.sol +0 -114
  254. package/contracts/instance/AccessManagerSimple.sol +0 -682
  255. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  256. package/contracts/instance/base/ServiceBase.sol +0 -44
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {PolicyService} from "./PolicyService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract PolicyServiceManager is ProxyManager {
12
+
13
+ PolicyService private _policyService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ PolicyService svc = new PolicyService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _policyService = PolicyService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getPolicyService()
47
+ external
48
+ view
49
+ returns (PolicyService policyService)
50
+ {
51
+ return _policyService;
52
+ }
53
+
54
+ }
@@ -0,0 +1,124 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Pool} from "../../components/Pool.sol";
5
+ import {IRegistry} from "../../registry/IRegistry.sol";
6
+ import {IInstance} from "../../instance/IInstance.sol";
7
+ import {IBundle} from "../../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../../shared/IVersionable.sol";
13
+ import {Versionable} from "../../shared/Versionable.sol";
14
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
15
+
16
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
17
+ import {POOL, BUNDLE} from "../../types/ObjectType.sol";
18
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
19
+ import {Fee, FeeLib} from "../../types/Fee.sol";
20
+ import {Version, VersionLib} from "../../types/Version.sol";
21
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
22
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
23
+
24
+ import {IService} from "../../shared/IService.sol";
25
+ import {Service} from "../../shared/Service.sol";
26
+ import {BundleManager} from "../BundleManager.sol";
27
+ import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
28
+ import {IPoolService} from "./IPoolService.sol";
29
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
30
+ import {InstanceService} from "../InstanceService.sol";
31
+ import {InstanceReader} from "../InstanceReader.sol";
32
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
33
+
34
+ string constant POOL_SERVICE_NAME = "PoolService";
35
+
36
+ contract PoolService is
37
+ ComponentServiceBase,
38
+ IPoolService
39
+ {
40
+ using NftIdLib for NftId;
41
+
42
+ string public constant NAME = "PoolService";
43
+
44
+ address internal _registryAddress;
45
+
46
+ function _initialize(
47
+ address owner,
48
+ bytes memory data
49
+ )
50
+ internal
51
+ initializer
52
+ virtual override
53
+ {
54
+ address registryAddress;
55
+ address initialOwner;
56
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
57
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
58
+ // owner is PoolServiceManager deployer
59
+ _initializeService(registryAddress, owner);
60
+
61
+ _registerInterface(type(IPoolService).interfaceId);
62
+ }
63
+
64
+ function getName() public pure override(Service, IService) returns(string memory name) {
65
+ return NAME;
66
+ }
67
+
68
+ function register(address poolAddress)
69
+ external
70
+ returns(NftId poolNftId)
71
+ {
72
+ address poolOwner = msg.sender;
73
+ IBaseComponent pool = IBaseComponent(poolAddress);
74
+
75
+ IRegistry.ObjectInfo memory info;
76
+ bytes memory data;
77
+ (info, data) = getRegistryService().registerPool(pool, poolOwner);
78
+
79
+ IInstance instance = _getInstance(info);
80
+
81
+ bool hasRole = getInstanceService().hasRole(
82
+ poolOwner,
83
+ POOL_OWNER_ROLE(),
84
+ address(instance));
85
+
86
+ if(!hasRole) {
87
+ revert ExpectedRoleMissing(POOL_OWNER_ROLE(), poolOwner);
88
+ }
89
+
90
+ poolNftId = info.nftId;
91
+ ISetup.PoolSetupInfo memory initialSetup = _decodeAndVerifyPoolSetup(data);
92
+ instance.createPoolSetup(poolNftId, initialSetup);
93
+ }
94
+
95
+ function _decodeAndVerifyPoolSetup(bytes memory data) internal returns(ISetup.PoolSetupInfo memory setup)
96
+ {
97
+ setup = abi.decode(
98
+ data,
99
+ (ISetup.PoolSetupInfo)
100
+ );
101
+
102
+ // TODO add checks if applicable
103
+ }
104
+
105
+ function setFees(
106
+ Fee memory poolFee,
107
+ Fee memory stakingFee,
108
+ Fee memory performanceFee
109
+ )
110
+ external
111
+ override
112
+ {
113
+ (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
114
+ InstanceReader instanceReader = instance.getInstanceReader();
115
+ NftId poolNftId = poolInfo.nftId;
116
+
117
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
118
+ poolSetupInfo.poolFee = poolFee;
119
+ poolSetupInfo.stakingFee = stakingFee;
120
+ poolSetupInfo.performanceFee = performanceFee;
121
+
122
+ instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
123
+ }
124
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {PoolService} from "./PoolService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract PoolServiceManager is ProxyManager {
12
+
13
+ PoolService private _poolService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ PoolService poolSrv = new PoolService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(poolSrv),
25
+ data);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+
29
+ Registry registry = Registry(registryAddress);
30
+ address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getPoolService()
47
+ external
48
+ view
49
+ returns (PoolService poolService)
50
+ {
51
+ return _poolService;
52
+ }
53
+
54
+ }
@@ -0,0 +1,173 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../../registry/IRegistry.sol";
5
+ import {IProductComponent} from "../../components/IProductComponent.sol";
6
+ import {Product} from "../../components/Product.sol";
7
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
8
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
9
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
10
+ import {IInstance} from "../IInstance.sol";
11
+ import {IPolicy} from "../module/IPolicy.sol";
12
+ import {IRisk} from "../module/IRisk.sol";
13
+ import {IBundle} from "../module/IBundle.sol";
14
+ import {IProductService} from "./IProductService.sol";
15
+ import {ITreasury} from "../module/ITreasury.sol";
16
+ import {ISetup} from "../module/ISetup.sol";
17
+
18
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
19
+
20
+ import {IVersionable} from "../../shared/IVersionable.sol";
21
+ import {Versionable} from "../../shared/Versionable.sol";
22
+
23
+ import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
24
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
25
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
26
+ import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
27
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
28
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
29
+ import {Fee, FeeLib} from "../../types/Fee.sol";
30
+ import {ReferralId} from "../../types/Referral.sol";
31
+ import {RiskId} from "../../types/RiskId.sol";
32
+ import {StateId} from "../../types/StateId.sol";
33
+ import {Version, VersionLib} from "../../types/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
35
+
36
+ import {IService} from "../../shared/IService.sol";
37
+ import {Service} from "../../shared/Service.sol";
38
+ import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
39
+ import {IProductService} from "./IProductService.sol";
40
+ import {InstanceReader} from "../InstanceReader.sol";
41
+ import {IPoolService} from "./PoolService.sol";
42
+ import {POOL_SERVICE_NAME} from "./PoolService.sol";
43
+
44
+ string constant PRODUCT_SERVICE_NAME = "ProductService";
45
+
46
+ // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
47
+ contract ProductService is ComponentServiceBase, IProductService {
48
+ using NftIdLib for NftId;
49
+
50
+ string public constant NAME = "ProductService";
51
+
52
+ IPoolService internal _poolService;
53
+
54
+ event LogProductServiceSender(address sender);
55
+
56
+ function _initialize(
57
+ address owner,
58
+ bytes memory data
59
+ )
60
+ internal
61
+ initializer
62
+ virtual override
63
+ {
64
+ address registryAddress;
65
+ address initialOwner;
66
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
+
68
+ _initializeService(registryAddress, owner);
69
+
70
+ _poolService = IPoolService(_registry.getServiceAddress(POOL_SERVICE_NAME, getMajorVersion()));
71
+
72
+ _registerInterface(type(IProductService).interfaceId);
73
+ }
74
+
75
+
76
+ function getName() public pure override(IService, Service) returns(string memory name) {
77
+ return NAME;
78
+ }
79
+
80
+ function register(address productAddress)
81
+ external
82
+ returns(NftId productNftId)
83
+ {
84
+ address productOwner = msg.sender;
85
+ IBaseComponent product = IBaseComponent(productAddress);
86
+
87
+ IRegistry.ObjectInfo memory info;
88
+ bytes memory data;
89
+ (info, data) = getRegistryService().registerProduct(product, productOwner);
90
+
91
+ IInstance instance = _getInstance(info);
92
+ bool hasRole = getInstanceService().hasRole(
93
+ productOwner,
94
+ PRODUCT_OWNER_ROLE(),
95
+ address(instance));
96
+
97
+ if(!hasRole) {
98
+ revert ExpectedRoleMissing(PRODUCT_OWNER_ROLE(), productOwner);
99
+ }
100
+
101
+ productNftId = info.nftId;
102
+ ISetup.ProductSetupInfo memory initialSetup = _decodeAndVerifyProductSetup(data);
103
+ instance.createProductSetup(productNftId, initialSetup);
104
+ }
105
+
106
+ function _decodeAndVerifyProductSetup(bytes memory data) internal returns(ISetup.ProductSetupInfo memory setup)
107
+ {
108
+ setup = abi.decode(
109
+ data,
110
+ (ISetup.ProductSetupInfo)
111
+ );
112
+
113
+ // TODO add checks if applicable
114
+ }
115
+
116
+ function setFees(
117
+ Fee memory productFee,
118
+ Fee memory processingFee
119
+ )
120
+ external
121
+ {
122
+ // TODO check args
123
+
124
+ (
125
+ IRegistry.ObjectInfo memory productInfo,
126
+ IInstance instance
127
+ ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
128
+
129
+ InstanceReader instanceReader = instance.getInstanceReader();
130
+ NftId productNftId = productInfo.nftId;
131
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
132
+
133
+ productSetupInfo.productFee = productFee;
134
+ productSetupInfo.processingFee = processingFee;
135
+
136
+ instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
137
+ }
138
+
139
+ function createRisk(
140
+ RiskId riskId,
141
+ bytes memory data
142
+ ) external override {
143
+ (
144
+ IRegistry.ObjectInfo memory productInfo,
145
+ IInstance instance
146
+ ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
147
+ NftId productNftId = productInfo.nftId;
148
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
149
+ instance.createRisk(
150
+ riskId,
151
+ riskInfo
152
+ );
153
+ }
154
+
155
+ function updateRisk(
156
+ RiskId riskId,
157
+ bytes memory data
158
+ ) external {
159
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
160
+ InstanceReader instanceReader = instance.getInstanceReader();
161
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
162
+ riskInfo.data = data;
163
+ instance.updateRisk(riskId, riskInfo, KEEP_STATE());
164
+ }
165
+
166
+ function updateRiskState(
167
+ RiskId riskId,
168
+ StateId state
169
+ ) external {
170
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
171
+ instance.updateRiskState(riskId, state);
172
+ }
173
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ ProductService svc = new ProductService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _productService = ProductService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getProductService()
47
+ external
48
+ view
49
+ returns (ProductService productService)
50
+ {
51
+ return _productService;
52
+ }
53
+
54
+ }
@@ -10,10 +10,22 @@ import {VersionPart} from "../types/Version.sol";
10
10
 
11
11
  interface IRegistry is IERC165 {
12
12
 
13
+ event LogInitialMajorVersionSet(VersionPart majorVersion);
14
+ event LogMajorVersionSet(VersionPart majorVersionMax);
13
15
  event LogRegistration(ObjectInfo info);
14
-
15
16
  event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
16
17
 
18
+ // setMajorVersion()
19
+ error NotOwner(address account);
20
+ error MajorVersionMaxIncreaseInvalid(VersionPart newMajorVersionMax, VersionPart existingMaxMajorVersion);
21
+
22
+ // register()
23
+ error NotRegistryService();
24
+ error ZeroParentAddress();
25
+ error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
26
+ error ContractAlreadyRegistered(address objectAddress);
27
+ error InvalidServiceVersion(VersionPart majorVersion);
28
+ error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
17
29
 
18
30
  struct ObjectInfo {
19
31
  NftId nftId;
@@ -24,12 +36,22 @@ interface IRegistry is IERC165 {
24
36
  address initialOwner;
25
37
  bytes data;
26
38
  }// TODO delete nftId and initialOwner(if not used) from struct
39
+ // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
40
+
41
+ function setMajorVersion(VersionPart newMajorVersionMax) external;
27
42
 
28
43
  function register(ObjectInfo memory info) external returns (NftId nftId);
29
-
44
+
45
+ function getMajorVersionMin() external view returns (VersionPart);
46
+
47
+ function getMajorVersionMax() external view returns (VersionPart);
48
+
49
+ function getMajorVersion() external view returns (VersionPart);
30
50
 
31
51
  function getObjectCount() external view returns (uint256);
32
52
 
53
+ function getNftId() external view returns (NftId nftId);
54
+
33
55
  function getNftId(address objectAddress) external view returns (NftId nftId);
34
56
 
35
57
  function ownerOf(NftId nftId) external view returns (address);
@@ -44,6 +66,8 @@ interface IRegistry is IERC165 {
44
66
 
45
67
  function isRegistered(address contractAddress) external view returns (bool);
46
68
 
69
+ function isRegisteredService(address contractAddress) external view returns (bool);
70
+
47
71
  function getServiceName(NftId nftId) external view returns (string memory name);
48
72
 
49
73
  function getServiceAddress(
@@ -1,35 +1,50 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../contracts/types/NftId.sol";
5
- import {ObjectType} from "../../contracts/types/ObjectType.sol";
6
- import {RoleId} from "../../contracts/types/RoleId.sol";
7
- import {IService} from "../../contracts/instance/base/IService.sol";
8
- import {IRegistry} from "../../contracts/registry/IRegistry.sol";
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {ObjectType} from "../types/ObjectType.sol";
6
+ import {RoleId} from "../types/RoleId.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IRegistry} from "./IRegistry.sol";
9
9
 
10
- import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
11
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
10
+ import {IRegisterable} from "../shared/IRegisterable.sol";
11
+ import {IBaseComponent} from "../components/IBaseComponent.sol";
12
12
 
13
13
  interface IRegistryService is IService {
14
14
 
15
- function registerToken(address tokenAddress) external returns(NftId nftId);
15
+ error SelfRegistration();
16
+ error NotRegistryOwner();
16
17
 
17
- function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
18
+ error NotService();
19
+ error NotInstance();
20
+ error NotProduct();
21
+ error NotPool();
22
+ error NotDistribution();
18
23
 
19
- function registerInstance(IRegisterable instance)
20
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
24
+ error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
25
+ error NotRegisterableOwner(address expectedOwner);
26
+ error RegisterableOwnerIsZero();
27
+ error RegisterableOwnerIsRegistered();
28
+ error InvalidInitialOwner(address initialOwner);
29
+ error InvalidAddress(address registerableAddress);
21
30
 
22
- function registerProduct(IBaseComponent product, address owner)
23
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
24
31
 
25
- function registerPool(IBaseComponent pool, address owner)
26
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
32
+ function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
27
33
 
28
- function registerDistribution(IBaseComponent distribution, address owner)
29
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
34
+ function registerInstance(IRegisterable instance)
35
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
30
36
 
31
- function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
37
+ function registerProduct(IBaseComponent product, address owner)
38
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
32
39
 
33
- function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
40
+ function registerPool(IBaseComponent pool, address owner)
41
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
42
+
43
+ function registerDistribution(IBaseComponent distribution, address owner)
44
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
45
+
46
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
47
+
48
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
34
49
  }
35
50