@etherisc/gif-next 0.0.2-d288ca9-933 → 0.0.2-d2fd9d7-008
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/README.md +47 -0
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +13 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +23 -15
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +13 -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/IPoolComponent.sol/IPoolComponent.json +28 -2
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +55 -16
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +31 -56
- 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/Dummy.sol/LifeCycleModule.json +2 -2
- 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/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -13
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +775 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1369 -22
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +64 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +198 -101
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +34 -47
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +177 -38
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +280 -34
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +95 -15
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +272 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +59 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- 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/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- 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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +18 -18
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +167 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +40 -31
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1049 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +464 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1147 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
- 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/IRegistry.sol/IRegistry.json +201 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -19
- 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 +172 -49
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +61 -29
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +47 -34
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- 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/ERC165.sol/ERC165.json +2 -2
- 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 +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.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/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +4 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- 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 +4 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +11 -11
- 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/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
- 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/NftIdSet.sol/LibNftIdSet.json +26 -3
- 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/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- 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/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +8 -3
- package/contracts/components/Distribution.sol +15 -18
- package/contracts/components/IBaseComponent.sol +1 -0
- package/contracts/components/IDistributionComponent.sol +1 -0
- package/contracts/components/IPoolComponent.sol +5 -1
- package/contracts/components/Pool.sol +36 -28
- package/contracts/components/Product.sol +34 -42
- package/contracts/instance/AccessManagedSimple.sol +1 -8
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +35 -7
- package/contracts/instance/IInstanceService.sol +23 -8
- package/contracts/instance/Instance.sol +34 -22
- package/contracts/instance/InstanceAccessManager.sol +1 -1
- package/contracts/instance/InstanceReader.sol +26 -1
- package/contracts/instance/InstanceService.sol +114 -18
- package/contracts/instance/InstanceServiceManager.sol +6 -5
- package/contracts/instance/ObjectManager.sol +95 -0
- package/contracts/instance/base/ComponentServiceBase.sol +93 -8
- package/contracts/instance/module/IBundle.sol +1 -0
- package/contracts/instance/module/ISetup.sol +3 -0
- package/contracts/instance/service/ComponentOwnerService.sol +5 -5
- package/contracts/instance/service/DistributionService.sol +88 -0
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +17 -3
- package/contracts/instance/service/IProductService.sol +7 -4
- package/contracts/instance/service/PoolService.sol +287 -0
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +570 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/IRegistry.sol +26 -2
- package/contracts/registry/IRegistryService.sol +34 -19
- package/contracts/registry/Registry.sol +61 -36
- package/contracts/registry/RegistryService.sol +42 -123
- package/contracts/registry/RegistryServiceManager.sol +21 -5
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +2 -4
- package/contracts/shared/Registerable.sol +1 -0
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/RoleId.sol +8 -0
- package/contracts/types/StateId.sol +4 -0
- package/contracts/types/Version.sol +4 -1
- package/package.json +1 -1
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/contracts/instance/base/ServiceBase.sol +0 -44
@@ -24,6 +24,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
24
24
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
25
25
|
import {ISetup} from "../instance/module/ISetup.sol";
|
26
26
|
import {Pool} from "../components/Pool.sol";
|
27
|
+
import {Distribution} from "../components/Distribution.sol";
|
27
28
|
|
28
29
|
import {zeroNftId} from "../types/NftId.sol";
|
29
30
|
|
@@ -32,9 +33,10 @@ contract Product is BaseComponent, IProductComponent {
|
|
32
33
|
|
33
34
|
IProductService internal _productService;
|
34
35
|
Pool internal _pool;
|
35
|
-
|
36
|
+
Distribution internal _distribution;
|
36
37
|
Fee internal _initialProductFee;
|
37
38
|
Fee internal _initialProcessingFee;
|
39
|
+
TokenHandler internal _tokenHandler;
|
38
40
|
|
39
41
|
NftId internal _poolNftId;
|
40
42
|
NftId internal _distributionNftId;
|
@@ -49,17 +51,18 @@ contract Product is BaseComponent, IProductComponent {
|
|
49
51
|
Fee memory productFee,
|
50
52
|
Fee memory processingFee,
|
51
53
|
address initialOwner
|
52
|
-
) BaseComponent(registry, instanceNftid,
|
54
|
+
) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
|
53
55
|
// TODO add validation
|
54
|
-
|
55
|
-
// _productService = _instance.getProductService();
|
56
|
+
_productService = _instance.getProductService();
|
56
57
|
_pool = Pool(pool);
|
57
|
-
_distribution = distribution;
|
58
|
+
_distribution = Distribution(distribution);
|
58
59
|
_initialProductFee = productFee;
|
59
60
|
_initialProcessingFee = processingFee;
|
60
61
|
|
62
|
+
_tokenHandler = new TokenHandler(token);
|
63
|
+
|
61
64
|
_poolNftId = getRegistry().getNftId(address(_pool));
|
62
|
-
_distributionNftId = getRegistry().getNftId(_distribution);
|
65
|
+
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
63
66
|
|
64
67
|
_registerInterface(type(IProductComponent).interfaceId);
|
65
68
|
}
|
@@ -118,13 +121,13 @@ contract Product is BaseComponent, IProductComponent {
|
|
118
121
|
);
|
119
122
|
}
|
120
123
|
|
121
|
-
function
|
124
|
+
function _updateRisk(
|
122
125
|
RiskId id,
|
123
|
-
|
126
|
+
bytes memory data
|
124
127
|
) internal {
|
125
|
-
_productService.
|
128
|
+
_productService.updateRisk(
|
126
129
|
id,
|
127
|
-
|
130
|
+
data
|
128
131
|
);
|
129
132
|
}
|
130
133
|
|
@@ -202,7 +205,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
202
205
|
}
|
203
206
|
|
204
207
|
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
205
|
-
return getRegistry().getNftId(_distribution);
|
208
|
+
return getRegistry().getNftId(address(_distribution));
|
206
209
|
}
|
207
210
|
|
208
211
|
// from product component
|
@@ -218,28 +221,12 @@ contract Product is BaseComponent, IProductComponent {
|
|
218
221
|
}
|
219
222
|
|
220
223
|
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
221
|
-
if (getNftId().eq(zeroNftId())) {
|
222
|
-
return ISetup.ProductSetupInfo(
|
223
|
-
_token,
|
224
|
-
TokenHandler(address(0)),
|
225
|
-
_distributionNftId,
|
226
|
-
_poolNftId,
|
227
|
-
FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
|
228
|
-
_initialProductFee,
|
229
|
-
_initialProcessingFee,
|
230
|
-
FeeLib.zeroFee(), //_instance.getPoolFee(_poolNftId)
|
231
|
-
FeeLib.zeroFee(), //_instance.getStakingFee(_poolNftId)
|
232
|
-
FeeLib.zeroFee() //_instance.getPerformanceFee(_poolNftId)
|
233
|
-
);
|
234
|
-
}
|
235
|
-
|
236
224
|
InstanceReader reader = _instance.getInstanceReader();
|
237
225
|
return reader.getProductSetupInfo(getNftId());
|
238
226
|
}
|
239
227
|
|
240
228
|
// from IRegisterable
|
241
229
|
|
242
|
-
// TODO used only once, occupies space
|
243
230
|
function getInitialInfo()
|
244
231
|
public
|
245
232
|
view
|
@@ -251,7 +238,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
251
238
|
IRegistry.ObjectInfo memory productInfo,
|
252
239
|
bytes memory data
|
253
240
|
) = super.getInitialInfo();
|
254
|
-
|
241
|
+
|
255
242
|
// TODO read pool & distribution fees
|
256
243
|
// 1) from pool -> the only option -> pool must be registered first?
|
257
244
|
// 2) from instance -> all fees are set into instance at product registration which is ongoing here
|
@@ -261,35 +248,40 @@ contract Product is BaseComponent, IProductComponent {
|
|
261
248
|
|
262
249
|
// from PoolComponent
|
263
250
|
(
|
264
|
-
|
251
|
+
,
|
265
252
|
bytes memory poolData
|
266
253
|
) = _pool.getInitialInfo();
|
254
|
+
|
255
|
+
(
|
256
|
+
ISetup.PoolSetupInfo memory poolSetupInfo
|
257
|
+
) = abi.decode(poolData, (ISetup.PoolSetupInfo));
|
267
258
|
|
259
|
+
// from DistributionComponent
|
268
260
|
(
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
Fee memory initialPoolFee,
|
273
|
-
Fee memory initialStakingFee,
|
274
|
-
Fee memory initialPerformanceFee
|
275
|
-
) = abi.decode(poolData, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
261
|
+
,
|
262
|
+
bytes memory distributionData
|
263
|
+
) = _distribution.getInitialInfo();
|
276
264
|
|
277
|
-
|
265
|
+
(
|
266
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo
|
267
|
+
) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
|
278
268
|
|
279
269
|
return (
|
280
270
|
productInfo,
|
281
271
|
abi.encode(
|
282
272
|
ISetup.ProductSetupInfo(
|
283
273
|
_token,
|
284
|
-
|
274
|
+
_tokenHandler,
|
285
275
|
_distributionNftId,
|
286
276
|
_poolNftId,
|
287
|
-
|
277
|
+
distributionSetupInfo.distributionFee,
|
288
278
|
_initialProductFee,
|
289
279
|
_initialProcessingFee,
|
290
|
-
|
291
|
-
|
292
|
-
|
280
|
+
poolSetupInfo.poolFee,
|
281
|
+
poolSetupInfo.stakingFee,
|
282
|
+
poolSetupInfo.performanceFee,
|
283
|
+
false,
|
284
|
+
_wallet
|
293
285
|
)
|
294
286
|
)
|
295
287
|
);
|
@@ -24,14 +24,7 @@ abstract contract AccessManagedSimple is Context, IAccessManaged {
|
|
24
24
|
|
25
25
|
bool private _consumingSchedule;
|
26
26
|
|
27
|
-
|
28
|
-
* @dev Initializes the contract connected to an initial authority.
|
29
|
-
*/
|
30
|
-
constructor(address initialAuthority) {
|
31
|
-
initialize(initialAuthority);
|
32
|
-
}
|
33
|
-
|
34
|
-
function initialize(address initialAuthority) public {
|
27
|
+
function initializeAccessManagedSimple(address initialAuthority) internal {
|
35
28
|
require(!_initialized, "AccessManaged: already initialized");
|
36
29
|
_setAuthority(initialAuthority);
|
37
30
|
_initialized = true;
|
@@ -0,0 +1,129 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IInstance} from "./IInstance.sol";
|
5
|
+
import {INSTANCE} from "../types/ObjectType.sol";
|
6
|
+
import {InstanceReader} from "./InstanceReader.sol";
|
7
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
8
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
import {LibNftIdSet} from "../types/NftIdSet.sol";
|
10
|
+
import {NftId} from "../types/NftId.sol";
|
11
|
+
import {TimestampLib} from "../types/Timestamp.sol";
|
12
|
+
|
13
|
+
import {ObjectManager} from "./ObjectManager.sol";
|
14
|
+
|
15
|
+
contract BundleManager is
|
16
|
+
ObjectManager
|
17
|
+
{
|
18
|
+
|
19
|
+
event LogBundleManagerPolicyLinked(NftId bundleNftId, NftId policyNftId);
|
20
|
+
event LogBundleManagerPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
|
21
|
+
|
22
|
+
event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
|
23
|
+
event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
|
24
|
+
event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
|
25
|
+
|
26
|
+
error ErrorBundleManagerErrorPolicyAlreadyActivated(NftId policyNftId);
|
27
|
+
error ErrorBundleManagerErrorBundleLocked(NftId bundleNftId, NftId policyNftId);
|
28
|
+
error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
|
29
|
+
error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
|
30
|
+
error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
|
31
|
+
error ErrorBundleManagerBundleNotRegistered(NftId bundleNftId);
|
32
|
+
|
33
|
+
mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
|
34
|
+
|
35
|
+
constructor() ObjectManager() {
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
/// @dev links a policy with its bundle
|
40
|
+
// to link a policy it MUST NOT yet have been activated
|
41
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
42
|
+
function linkPolicy(NftId policyNftId) external restricted() {
|
43
|
+
NftId bundleNftId = _instanceReader.getPolicyInfo(policyNftId).bundleNftId;
|
44
|
+
// decision will likely depend on the decision what to check here and what in the service
|
45
|
+
NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
|
46
|
+
|
47
|
+
// ensure bundle is unlocked (in active set) and registered with this instance
|
48
|
+
if (!_isActive(poolNftId, bundleNftId)) {
|
49
|
+
revert ErrorBundleManagerErrorBundleLocked(bundleNftId, policyNftId);
|
50
|
+
}
|
51
|
+
|
52
|
+
LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
|
53
|
+
emit LogBundleManagerPolicyLinked(bundleNftId, policyNftId);
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
/// @dev unlinks a policy from its bundle
|
58
|
+
// to unlink a policy it must closable, ie. meet one of the following criterias
|
59
|
+
// - the policy MUST be past its expiry period and it MUST NOT have any open claims
|
60
|
+
// - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
|
61
|
+
function unlinkPolicy(NftId policyNftId) external restricted() {
|
62
|
+
IPolicy.PolicyInfo memory policyInfo = _instanceReader.getPolicyInfo(policyNftId);
|
63
|
+
|
64
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
65
|
+
// decision will likely depend on the decision what to check here and what in the service
|
66
|
+
NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
|
67
|
+
|
68
|
+
// ensure bundle is registered with this instance
|
69
|
+
if (!_contains(poolNftId, bundleNftId)) {
|
70
|
+
revert ErrorBundleManagerBundleUnknown(bundleNftId);
|
71
|
+
}
|
72
|
+
|
73
|
+
LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
|
74
|
+
emit LogBundleManagerPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
/// @dev add a new bundle to a riskpool registerd with this instance
|
79
|
+
// the corresponding pool is fetched via instance reader
|
80
|
+
function add(NftId bundleNftId) external restricted() {
|
81
|
+
NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
|
82
|
+
|
83
|
+
// ensure pool is registered with instance
|
84
|
+
if(poolNftId.eqz()) {
|
85
|
+
revert ErrorBundleManagerBundleNotRegistered(bundleNftId);
|
86
|
+
}
|
87
|
+
|
88
|
+
_add(poolNftId, bundleNftId);
|
89
|
+
emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
|
90
|
+
}
|
91
|
+
|
92
|
+
/// @dev unlocked (active) bundles are available to underwrite new policies
|
93
|
+
function unlock(NftId bundleNftId) external restricted() {
|
94
|
+
NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
|
95
|
+
_activate(poolNftId, bundleNftId);
|
96
|
+
emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
|
97
|
+
}
|
98
|
+
|
99
|
+
/// @dev locked (deactivated) bundles may not underwrite any new policies
|
100
|
+
function lock(NftId bundleNftId) external restricted() {
|
101
|
+
NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
|
102
|
+
_deactivate(poolNftId, bundleNftId);
|
103
|
+
emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
|
104
|
+
}
|
105
|
+
|
106
|
+
function bundles(NftId poolNftId) external view returns(uint256) {
|
107
|
+
return _objects(poolNftId);
|
108
|
+
}
|
109
|
+
|
110
|
+
function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
|
111
|
+
return _getObject(poolNftId, idx);
|
112
|
+
}
|
113
|
+
|
114
|
+
function activeBundles(NftId poolNftId) external view returns(uint256) {
|
115
|
+
return _activeObjs(poolNftId);
|
116
|
+
}
|
117
|
+
|
118
|
+
function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
|
119
|
+
return _getActiveObject(poolNftId, idx);
|
120
|
+
}
|
121
|
+
|
122
|
+
function activePolicies(NftId bundleNftId) external view returns(uint256) {
|
123
|
+
return LibNftIdSet.size(_activePolicies[bundleNftId]);
|
124
|
+
}
|
125
|
+
|
126
|
+
function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
|
127
|
+
return LibNftIdSet.getElementAt(_activePolicies[bundleNftId], idx);
|
128
|
+
}
|
129
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
6
|
+
|
7
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
8
|
+
|
9
|
+
abstract contract Cloneable is
|
10
|
+
AccessManagedUpgradeable
|
11
|
+
{
|
12
|
+
event CloneableInitialized(address authority, address registry);
|
13
|
+
|
14
|
+
error CloneableRegistryInvalid(address registry);
|
15
|
+
|
16
|
+
IRegistry internal _registry;
|
17
|
+
|
18
|
+
constructor() {
|
19
|
+
_registry = IRegistry(address(0));
|
20
|
+
}
|
21
|
+
|
22
|
+
/// @dev call to initialize MUST be made in the same transaction as cloning of the contract
|
23
|
+
function initialize(
|
24
|
+
address authority,
|
25
|
+
address registry
|
26
|
+
)
|
27
|
+
public
|
28
|
+
initializer
|
29
|
+
{
|
30
|
+
// check/handle access managed
|
31
|
+
__AccessManaged_init(authority);
|
32
|
+
|
33
|
+
// check/handle registry
|
34
|
+
if (registry.code.length == 0) {
|
35
|
+
revert CloneableRegistryInvalid(registry);
|
36
|
+
}
|
37
|
+
|
38
|
+
_registry = IRegistry(registry);
|
39
|
+
|
40
|
+
emit CloneableInitialized(authority, registry);
|
41
|
+
}
|
42
|
+
|
43
|
+
function getRegistry() external view returns (IRegistry) {
|
44
|
+
return _registry;
|
45
|
+
}
|
46
|
+
}
|
@@ -3,26 +3,54 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
|
6
|
+
import {BundleManager} from "./BundleManager.sol";
|
6
7
|
import {InstanceReader} from "./InstanceReader.sol";
|
7
8
|
|
8
9
|
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
9
10
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
10
11
|
import {IPoolService} from "./service/IPoolService.sol";
|
11
12
|
import {IProductService} from "./service/IProductService.sol";
|
13
|
+
import {IBundle} from "./module/IBundle.sol";
|
12
14
|
import {ISetup} from "./module/ISetup.sol";
|
13
15
|
import {NftId} from "../types/NftId.sol";
|
16
|
+
import {StateId} from "../types/StateId.sol";
|
17
|
+
import {RiskId} from "../types/RiskId.sol";
|
18
|
+
import {IRisk} from "./module/IRisk.sol";
|
19
|
+
import {IPolicy} from "./module/IPolicy.sol";
|
20
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
14
21
|
|
15
|
-
|
22
|
+
|
23
|
+
interface IInstance is IERC165, IKeyValueStore {
|
16
24
|
|
17
25
|
function getComponentOwnerService() external view returns (IComponentOwnerService);
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
// function getPoolService() external view returns (IPoolService);
|
26
|
+
function getDistributionService() external view returns (IDistributionService);
|
27
|
+
function getProductService() external view returns (IProductService);
|
28
|
+
function getPoolService() external view returns (IPoolService);
|
22
29
|
|
23
|
-
function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
|
24
30
|
function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
|
25
|
-
function
|
31
|
+
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
|
32
|
+
function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
|
33
|
+
|
34
|
+
function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external;
|
35
|
+
function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external;
|
36
|
+
function updatePoolSetupState(NftId poolNftId, StateId newState) external;
|
37
|
+
|
38
|
+
function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
|
39
|
+
function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external;
|
40
|
+
function updateBundleState(NftId bundleNftId, StateId newState) external;
|
41
|
+
|
42
|
+
function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
|
43
|
+
function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
|
44
|
+
function updateProductSetupState(NftId productNftId, StateId newState) external;
|
45
|
+
|
46
|
+
function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
|
47
|
+
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
|
48
|
+
function updateRiskState(RiskId riskId, StateId newState) external;
|
49
|
+
|
50
|
+
function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external;
|
51
|
+
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
52
|
+
function updatePolicyState(NftId policyNftId, StateId newState) external;
|
26
53
|
|
27
54
|
function getInstanceReader() external view returns (InstanceReader);
|
55
|
+
function getBundleManager() external view returns (BundleManager);
|
28
56
|
}
|
@@ -1,17 +1,32 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {NftId} from "
|
5
|
-
import {ObjectType} from "
|
6
|
-
import {RoleId} from "
|
7
|
-
import {IService} from "
|
8
|
-
import {IRegistry} from "
|
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 "../registry/IRegistry.sol";
|
9
9
|
|
10
|
-
import {IRegisterable} from "
|
11
|
-
import {IBaseComponent} from "
|
10
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
11
|
+
import {IBaseComponent} from "../components/IBaseComponent.sol";
|
12
|
+
|
13
|
+
import {AccessManagerSimple} from "./AccessManagerSimple.sol";
|
14
|
+
import {Instance} from "./Instance.sol";
|
15
|
+
import {InstanceReader} from "./InstanceReader.sol";
|
16
|
+
import {BundleManager} from "./BundleManager.sol";
|
12
17
|
|
13
18
|
interface IInstanceService is IService {
|
14
19
|
|
15
|
-
|
20
|
+
event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
|
21
|
+
|
22
|
+
function createInstanceClone()
|
23
|
+
external
|
24
|
+
returns (
|
25
|
+
AccessManagerSimple clonedAccessManager,
|
26
|
+
Instance clonedInstance,
|
27
|
+
NftId instanceNftId,
|
28
|
+
InstanceReader clonedInstanceReader,
|
29
|
+
BundleManager clonedBundleManager
|
30
|
+
);
|
16
31
|
}
|
17
32
|
|
@@ -15,6 +15,7 @@ import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
|
15
15
|
import {KeyValueStore} from "./base/KeyValueStore.sol";
|
16
16
|
import {IInstance} from "./IInstance.sol";
|
17
17
|
import {InstanceReader} from "./InstanceReader.sol";
|
18
|
+
import {BundleManager} from "./BundleManager.sol";
|
18
19
|
import {NftId} from "../types/NftId.sol";
|
19
20
|
import {NumberId} from "../types/NumberId.sol";
|
20
21
|
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
|
@@ -25,6 +26,9 @@ import {ERC165} from "../shared/ERC165.sol";
|
|
25
26
|
import {Registerable} from "../shared/Registerable.sol";
|
26
27
|
import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
|
27
28
|
import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
|
29
|
+
import {IDistributionService} from "./service/IDistributionService.sol";
|
30
|
+
import {IPoolService} from "./service/IPoolService.sol";
|
31
|
+
import {IProductService} from "./service/IProductService.sol";
|
28
32
|
import {VersionPart} from "../types/Version.sol";
|
29
33
|
|
30
34
|
contract Instance is
|
@@ -51,21 +55,23 @@ contract Instance is
|
|
51
55
|
|
52
56
|
AccessManagerSimple internal _accessManager;
|
53
57
|
InstanceReader internal _instanceReader;
|
58
|
+
BundleManager internal _bundleManager;
|
54
59
|
|
55
60
|
constructor(address accessManagerAddress, address registryAddress, NftId registryNftId)
|
56
|
-
AccessManagedSimple(accessManagerAddress)
|
57
61
|
{
|
58
|
-
initialize(accessManagerAddress, registryAddress, registryNftId);
|
62
|
+
initialize(accessManagerAddress, registryAddress, registryNftId, msg.sender);
|
59
63
|
}
|
60
64
|
|
61
|
-
function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId) public {
|
65
|
+
function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner) public {
|
62
66
|
require(!_initialized, "Contract instance has already been initialized");
|
63
67
|
|
68
|
+
initializeAccessManagedSimple(accessManagerAddress);
|
69
|
+
|
64
70
|
_accessManager = AccessManagerSimple(accessManagerAddress);
|
65
71
|
_createRole(RoleIdLib.toRoleId(ADMIN_ROLE), "AdminRole", false, false);
|
66
72
|
_createRole(RoleIdLib.toRoleId(PUBLIC_ROLE), "PublicRole", false, false);
|
67
73
|
|
68
|
-
_initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false,
|
74
|
+
_initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
|
69
75
|
|
70
76
|
_registerInterface(type(IInstance).interfaceId);
|
71
77
|
_initialized = true;
|
@@ -218,16 +224,16 @@ contract Instance is
|
|
218
224
|
}
|
219
225
|
|
220
226
|
//--- PoolSetup ------------------------------------------------------//
|
221
|
-
function createPoolSetup(NftId
|
222
|
-
create(_toNftKey32(
|
227
|
+
function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external restricted() {
|
228
|
+
create(_toNftKey32(poolNftId, POOL()), abi.encode(setup));
|
223
229
|
}
|
224
230
|
|
225
|
-
function updatePoolSetup(NftId
|
226
|
-
update(_toNftKey32(
|
231
|
+
function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external restricted() {
|
232
|
+
update(_toNftKey32(poolNftId, POOL()), abi.encode(setup), newState);
|
227
233
|
}
|
228
234
|
|
229
|
-
function updatePoolSetupState(NftId
|
230
|
-
updateState(_toNftKey32(
|
235
|
+
function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
|
236
|
+
updateState(_toNftKey32(poolNftId, POOL()), newState);
|
231
237
|
}
|
232
238
|
|
233
239
|
//--- DistributorType ---------------------------------------------------//
|
@@ -416,20 +422,17 @@ contract Instance is
|
|
416
422
|
return ComponentOwnerService(_registry.getServiceAddress("ComponentOwnerService", VersionPart.wrap(3)));
|
417
423
|
}
|
418
424
|
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
// }
|
425
|
+
function getDistributionService() external view returns (IDistributionService) {
|
426
|
+
return IDistributionService(_registry.getServiceAddress("DistributionService", VersionPart.wrap(3)));
|
427
|
+
}
|
423
428
|
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
// }
|
429
|
+
function getProductService() external view returns (IProductService) {
|
430
|
+
return IProductService(_registry.getServiceAddress("ProductService", VersionPart.wrap(3)));
|
431
|
+
}
|
428
432
|
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
// }
|
433
|
+
function getPoolService() external view returns (IPoolService) {
|
434
|
+
return IPoolService(_registry.getServiceAddress("PoolService", VersionPart.wrap(3)));
|
435
|
+
}
|
433
436
|
|
434
437
|
function setInstanceReader(InstanceReader instanceReader) external restricted() {
|
435
438
|
require(address(_instanceReader) == address(0), "InstanceReader is set");
|
@@ -439,4 +442,13 @@ contract Instance is
|
|
439
442
|
function getInstanceReader() external view returns (InstanceReader) {
|
440
443
|
return _instanceReader;
|
441
444
|
}
|
445
|
+
|
446
|
+
function setBundleManager(BundleManager bundleManager) external restricted() {
|
447
|
+
require(address(_bundleManager) == address(0), "BundleManager is set");
|
448
|
+
_bundleManager = bundleManager;
|
449
|
+
}
|
450
|
+
|
451
|
+
function getBundleManager() external view returns (BundleManager) {
|
452
|
+
return _bundleManager;
|
453
|
+
}
|
442
454
|
}
|
@@ -79,9 +79,9 @@ contract InstanceAccessManager is
|
|
79
79
|
AccessManagerSimple internal _accessManager;
|
80
80
|
|
81
81
|
constructor(address accessManager)
|
82
|
-
AccessManagedSimple(accessManager)
|
83
82
|
{
|
84
83
|
_accessManager = AccessManagerSimple(accessManager);
|
84
|
+
initializeAccessManagedSimple(accessManager);
|
85
85
|
|
86
86
|
_createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
|
87
87
|
_createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
|
@@ -7,14 +7,16 @@ import {DistributorType} from "../types/DistributorType.sol";
|
|
7
7
|
import {Fee, FeeLib} from "../types/Fee.sol";
|
8
8
|
import {Key32} from "../types/Key32.sol";
|
9
9
|
import {NftId} from "../types/NftId.sol";
|
10
|
-
import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY} from "../types/ObjectType.sol";
|
10
|
+
import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY, BUNDLE} from "../types/ObjectType.sol";
|
11
11
|
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../types/Referral.sol";
|
12
12
|
import {Registerable} from "../shared/Registerable.sol";
|
13
13
|
import {RiskId} from "../types/RiskId.sol";
|
14
14
|
import {UFixed, MathLib, UFixedLib} from "../types/UFixed.sol";
|
15
15
|
import {Version} from "../types/Version.sol";
|
16
|
+
import {StateId} from "../types/StateId.sol";
|
16
17
|
|
17
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
|
+
import {IBundle} from "../instance/module/IBundle.sol";
|
18
20
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
19
21
|
import {IInstance} from "./IInstance.sol";
|
20
22
|
import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
|
@@ -80,6 +82,14 @@ contract InstanceReader {
|
|
80
82
|
}
|
81
83
|
}
|
82
84
|
|
85
|
+
function getPolicyState(NftId policyNftId)
|
86
|
+
public
|
87
|
+
view
|
88
|
+
returns (StateId state)
|
89
|
+
{
|
90
|
+
return _instance.getState(toPolicyKey(policyNftId));
|
91
|
+
}
|
92
|
+
|
83
93
|
function getRiskInfo(RiskId riskId)
|
84
94
|
public
|
85
95
|
view
|
@@ -114,6 +124,17 @@ contract InstanceReader {
|
|
114
124
|
return abi.decode(data, (ITreasury.TreasuryInfo));
|
115
125
|
}
|
116
126
|
}
|
127
|
+
|
128
|
+
function getBundleInfo(NftId bundleNftId)
|
129
|
+
public
|
130
|
+
view
|
131
|
+
returns (IBundle.BundleInfo memory info)
|
132
|
+
{
|
133
|
+
bytes memory data = _store.getData(toBundleKey(bundleNftId));
|
134
|
+
if (data.length > 0) {
|
135
|
+
return abi.decode(data, (IBundle.BundleInfo));
|
136
|
+
}
|
137
|
+
}
|
117
138
|
|
118
139
|
function getDistributorTypeInfo(DistributorType distributorType)
|
119
140
|
public
|
@@ -259,6 +280,10 @@ contract InstanceReader {
|
|
259
280
|
return distributionNftId.toKey32(DISTRIBUTION());
|
260
281
|
}
|
261
282
|
|
283
|
+
function toBundleKey(NftId poolNftId) public pure returns (Key32) {
|
284
|
+
return poolNftId.toKey32(BUNDLE());
|
285
|
+
}
|
286
|
+
|
262
287
|
function toPoolKey(NftId poolNftId) public pure returns (Key32) {
|
263
288
|
return poolNftId.toKey32(POOL());
|
264
289
|
}
|