@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.
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +11 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +11 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +11 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +11 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +16 -5
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -13
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -69
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +90 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +92 -2
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +2 -2
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +114 -16
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +13 -9
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +92 -2
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +2 -2
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +114 -16
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +13 -9
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -16
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +13 -9
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +2 -2
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +2 -2
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/BaseComponent.sol +15 -6
- package/contracts/components/Distribution.sol +0 -10
- package/contracts/components/IBaseComponent.sol +3 -2
- package/contracts/components/IProductComponent.sol +2 -2
- package/contracts/components/Pool.sol +3 -17
- package/contracts/components/Product.sol +5 -11
- package/contracts/instance/IInstance.sol +0 -2
- package/contracts/instance/IInstanceBase.sol +0 -1
- package/contracts/instance/Instance.sol +2 -12
- package/contracts/instance/InstanceBase.sol +0 -2
- package/contracts/instance/base/ComponentServiceBase.sol +62 -0
- package/contracts/instance/base/IInstanceBase.sol +0 -2
- package/contracts/instance/service/DistributionService.sol +22 -27
- package/contracts/instance/service/PoolService.sol +21 -24
- package/contracts/instance/service/ProductService.sol +20 -24
- package/contracts/shared/IRegisterable.sol +0 -2
- package/package.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- 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
|
-
}
|