@etherisc/gif-next 0.0.2-e545d2c-624 → 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 (178) hide show
  1. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +11 -0
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +11 -0
  5. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +11 -0
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -5
  11. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.json +11 -0
  13. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  14. package/artifacts/contracts/components/Product.sol/Product.json +16 -5
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  35. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  38. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -13
  41. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -69
  45. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +2 -2
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
  54. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  56. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +90 -0
  58. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +92 -2
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +2 -2
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +114 -16
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +13 -9
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +92 -2
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +2 -2
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +114 -16
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +13 -9
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -16
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +13 -9
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  98. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  100. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  102. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  103. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  104. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  106. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  108. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +2 -2
  110. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  112. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  113. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  114. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  115. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  116. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  117. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  119. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  120. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  121. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  122. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  124. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  125. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  126. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  127. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  128. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  129. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  130. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  131. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  132. package/artifacts/contracts/test/TestService.sol/TestService.json +2 -2
  133. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  134. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  137. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  138. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  139. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  140. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  141. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  142. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  143. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  145. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  147. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  148. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  149. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  150. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  151. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  152. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  153. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  154. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  155. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  156. package/contracts/components/BaseComponent.sol +15 -6
  157. package/contracts/components/Distribution.sol +0 -10
  158. package/contracts/components/IBaseComponent.sol +3 -2
  159. package/contracts/components/IProductComponent.sol +2 -2
  160. package/contracts/components/Pool.sol +3 -17
  161. package/contracts/components/Product.sol +5 -11
  162. package/contracts/instance/IInstance.sol +0 -2
  163. package/contracts/instance/IInstanceBase.sol +0 -1
  164. package/contracts/instance/Instance.sol +2 -12
  165. package/contracts/instance/InstanceBase.sol +0 -2
  166. package/contracts/instance/base/ComponentServiceBase.sol +62 -0
  167. package/contracts/instance/base/IInstanceBase.sol +0 -2
  168. package/contracts/instance/service/DistributionService.sol +22 -27
  169. package/contracts/instance/service/PoolService.sol +21 -24
  170. package/contracts/instance/service/ProductService.sol +20 -24
  171. package/contracts/shared/IRegisterable.sol +0 -2
  172. package/package.json +1 -1
  173. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  174. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  175. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  176. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  177. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  178. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
@@ -1,315 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {IRegistry} from "../../registry/IRegistry.sol";
7
- import {IInstance} from "../IInstance.sol";
8
-
9
- import {ITreasury} from "../module/ITreasury.sol";
10
- // import {TreasuryModule} from "../module/TreasuryModule.sol";
11
- import {ISetup} from "../module/ISetup.sol";
12
- import {IBaseComponent} from "../../components/IBaseComponent.sol";
13
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
14
- import {IKeyValueStore} from "../../instance/base/IKeyValueStore.sol";
15
- import {IVersionable} from "../../shared/IVersionable.sol";
16
- import {Versionable} from "../../shared/Versionable.sol";
17
-
18
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
19
- import {ObjectType, REGISTRY, TOKEN, COMPONENT, PRODUCT, ORACLE, POOL, DISTRIBUTION} from "../../types/ObjectType.sol";
20
- import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
21
- import {Key32} from "../../types/Key32.sol";
22
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
23
- import {Fee} from "../../types/Fee.sol";
24
- import {Version, VersionLib} from "../../types/Version.sol";
25
- import {UFixed, UFixedLib} from "../../types/UFixed.sol";
26
-
27
- import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
28
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
29
- import {IProductComponent} from "../../components/IProductComponent.sol";
30
- import {IService} from "../../shared/IService.sol";
31
- import {IComponentOwnerService} from "./IComponentOwnerService.sol";
32
- import {Service} from "../../shared/Service.sol";
33
- // import {IPool, IPoolModule} from "../module/IPoolModule.sol";
34
-
35
- import {IRegistryService} from "../../registry/IRegistryService.sol";
36
-
37
- contract ComponentOwnerService is
38
- Service,
39
- IComponentOwnerService
40
- {
41
- using NftIdLib for NftId;
42
-
43
- error MissingTypeRole();
44
- error WalletIsZero();
45
- error InvalidToken();
46
- error InvalidPool();
47
- error InvalidDistribution();
48
- error InvalidPoolsInstance();
49
- error InvalidDistributionsInstance();
50
-
51
- error CollateralizationLevelIsZero();
52
-
53
- modifier onlyRegisteredComponent(IBaseComponent component) {
54
- NftId nftId = getRegistry().getNftId(address(component));
55
- require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
56
- _;
57
- }
58
-
59
- constructor(
60
- address registry,
61
- NftId registryNftId,
62
- address initialOwner
63
- )
64
- {
65
- _initializeService(registry, initialOwner);
66
- _registerInterface(type(IComponentOwnerService).interfaceId);
67
- }
68
-
69
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
70
- return COMPONENT();
71
- }
72
-
73
- function getRoleForType(
74
- ObjectType cType
75
- ) public pure override returns (RoleId role) {
76
- if (cType == PRODUCT()) {
77
- return PRODUCT_OWNER_ROLE();
78
- }
79
- if (cType == POOL()) {
80
- return POOL_OWNER_ROLE();
81
- }
82
- if (cType == DISTRIBUTION()) {
83
- return DISTRIBUTION_OWNER_ROLE();
84
- }
85
- if (cType == ORACLE()) {
86
- return ORACLE_OWNER_ROLE();
87
- }
88
- }
89
-
90
- function getRegistryService() public view virtual returns (IRegistryService) {
91
- address service = getRegistry().getServiceAddress(REGISTRY(), getMajorVersion());
92
- return IRegistryService(service);
93
- }
94
-
95
- function registerProduct(
96
- IBaseComponent product
97
- ) external returns (NftId nftId) {
98
-
99
- // TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
100
- (
101
- IRegistry.ObjectInfo memory info,
102
- bytes memory data
103
- ) = getRegistryService().registerProduct(
104
- product,
105
- msg.sender);
106
-
107
- NftId instanceNftId = info.parentNftId;
108
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
109
- IInstance instance = IInstance(instanceAddress);
110
-
111
- RoleId typeRole = getRoleForType(PRODUCT());
112
- // TODO refactor to use access manager infra
113
- // if(instance.hasRole(typeRole, msg.sender) == false) {
114
- // revert MissingTypeRole();
115
- // }
116
-
117
- _registerProduct(
118
- info.nftId,
119
- instanceNftId,
120
- instance,
121
- data
122
- );
123
- }
124
-
125
- function registerPool(
126
- IBaseComponent pool
127
- ) external returns (NftId nftId) {
128
-
129
- // TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
130
- (
131
- IRegistry.ObjectInfo memory info,
132
- bytes memory data
133
- ) = getRegistryService().registerPool(
134
- pool,
135
- msg.sender);
136
-
137
- NftId instanceNftId = info.parentNftId;
138
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
139
- IInstance instance = IInstance(instanceAddress);
140
-
141
- RoleId typeRole = getRoleForType(POOL());
142
- // TODO refactor to use access manager infra
143
- // if(instance.hasRole(typeRole, msg.sender) == false) {
144
- // revert MissingTypeRole();
145
- // }
146
-
147
- _registerPool(
148
- info.nftId,
149
- instanceNftId,
150
- instance,
151
- data
152
- );
153
- }
154
-
155
- function registerDistribution(
156
- IBaseComponent distribution
157
- ) external returns (NftId nftId) {
158
-
159
- // TODO some info parameters from component and from register may differ -> getObjectInfo() after registration?
160
- (
161
- IRegistry.ObjectInfo memory info,
162
- bytes memory data
163
- ) = getRegistryService().registerDistribution(
164
- distribution,
165
- msg.sender);
166
-
167
- NftId instanceNftId = info.parentNftId;
168
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
169
- IInstance instance = IInstance(instanceAddress);
170
-
171
- RoleId typeRole = getRoleForType(DISTRIBUTION());
172
- // TODO refactor to use access manager infra
173
- // if(instance.hasRole(typeRole, msg.sender) == false) {
174
- // revert MissingTypeRole();
175
- // }
176
- }
177
-
178
- function lock(
179
- IBaseComponent component
180
- ) external override onlyRegisteredComponent(component) {
181
- // TODO use msg.sender to get component and get instance via registered parent nft id
182
- IInstance instance = component.getInstance();
183
- NftId nftId = component.getNftId();
184
- Key32 key = nftId.toKey32(COMPONENT());
185
- // instance.updateState(key, PAUSED());
186
- }
187
-
188
- function unlock(
189
- IBaseComponent component
190
- ) external override onlyRegisteredComponent(component) {
191
- // TODO use msg.sender to get component and get instance via registered parent nft id
192
- IInstance instance = component.getInstance();
193
- NftId nftId = component.getNftId();
194
- Key32 key = nftId.toKey32(COMPONENT());
195
- // instance.updateState(key, ACTIVE());
196
- }
197
-
198
- // Internals
199
-
200
- function _registerProduct(
201
- NftId nftId,
202
- NftId instanceNftId,
203
- IInstance instance,
204
- bytes memory data
205
- )
206
- internal
207
- {
208
- // TODO change treasury info to product setup info
209
- (ISetup.ProductSetupInfo memory info) = abi.decode(data, (ISetup.ProductSetupInfo));
210
- // (
211
- // ITreasury.TreasuryInfo memory info,
212
- // address wallet
213
- // ) = abi.decode(data, (ITreasury.TreasuryInfo, address));
214
-
215
- // IRegistry _registry = getRegistry();
216
-
217
- // if(wallet == address(0)) {
218
- // revert WalletIsZero();
219
- // }
220
-
221
- // IRegistry.ObjectInfo memory tokenInfo = _registry.getObjectInfo(address(info.token));
222
-
223
- // if(tokenInfo.objectType != TOKEN()) {
224
- // revert InvalidToken();
225
- // }
226
-
227
- // IRegistry.ObjectInfo memory poolInfo = _registry.getObjectInfo(info.poolNftId);
228
-
229
- // if(poolInfo.objectType != POOL()) {
230
- // revert InvalidPool();
231
- // }
232
-
233
- // if(poolInfo.parentNftId != instanceNftId) {
234
- // revert InvalidPoolsInstance();
235
- // }
236
- // // TODO pool have the same token
237
- // //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
238
- // //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
239
- // // TODO pool is not linked
240
-
241
- // IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(info.distributionNftId);
242
-
243
- // if(distributionInfo.objectType != DISTRIBUTION()) {
244
- // revert InvalidDistribution();
245
- // }
246
-
247
- // if(distributionInfo.parentNftId != instanceNftId) {
248
- // revert InvalidDistributionsInstance();
249
- // }
250
- // // TODO distribution have the same token
251
- // // TODO distribution is not linked
252
-
253
- // // component module
254
- // instance.registerComponent(
255
- // nftId,
256
- // info.token,
257
- // wallet // TODO move wallet into TreasuryInfo?
258
- // );
259
-
260
- // treasury module
261
- instance.createProductSetup(
262
- nftId,
263
- info
264
- );
265
- }
266
-
267
- function _registerPool(
268
- NftId nftId,
269
- NftId instanceNftId,
270
- IInstance instance,
271
- bytes memory data
272
- )
273
- internal
274
- {
275
- (
276
- ISetup.PoolSetupInfo memory info,
277
- address wallet,
278
- IERC20Metadata token,
279
- /*poolFee*/,
280
- /*stakingFee*/,
281
- /*performanceFee*/
282
- ) = abi.decode(data, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
283
-
284
- IRegistry _registry = getRegistry();
285
-
286
- if(wallet == address(0)) {
287
- revert WalletIsZero();
288
- }
289
-
290
- ObjectType tokenType = _registry.getObjectInfo(address(token)).objectType;
291
-
292
- if(tokenType != TOKEN()) {
293
- revert InvalidToken();
294
- }
295
-
296
- if(UFixedLib.eqz(info.collateralizationLevel)) {
297
- revert CollateralizationLevelIsZero();
298
- }
299
-
300
- // TODO add more validations
301
-
302
- // // component module
303
- // instance.registerComponent(
304
- // nftId,
305
- // token,
306
- // wallet
307
- // );
308
-
309
- // pool module
310
- instance.createPoolSetup(
311
- nftId,
312
- info
313
- );
314
- }
315
- }
@@ -1,20 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType} from "../../types/ObjectType.sol";
6
- import {RoleId} from "../../types/RoleId.sol";
7
- import {IBaseComponent} from "../../components/IBaseComponent.sol";
8
- import {IService} from "../../shared/IService.sol";
9
-
10
- // TODO rename to registry service
11
- interface IComponentOwnerService is IService {
12
-
13
- // TODO move to product/pool services
14
- function lock(IBaseComponent component) external;
15
-
16
- // TODO move to product/pool services
17
- function unlock(IBaseComponent component) external;
18
-
19
- function getRoleForType(ObjectType cType) external pure returns (RoleId role);
20
- }