@etherisc/gif-next 0.0.2-e4b632c-016 → 0.0.2-e545d2c-624
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 +67 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +156 -91
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +130 -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 +188 -120
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +164 -143
- 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 +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +74 -3
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1463 -93
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +104 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +153 -660
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +243 -126
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- 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 +268 -60
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +52 -24
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +60 -9
- 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/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
- 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 +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1031 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +39 -52
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +118 -29
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +18 -26
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +13 -13
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -13
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -77
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +25 -240
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1156 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +727 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +420 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +777 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +263 -63
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +187 -83
- 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 +233 -192
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +31 -97
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -91
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -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 +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +13 -13
- 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 +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -13
- 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 +31 -31
- 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/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 +87 -14
- package/contracts/components/Distribution.sol +17 -19
- package/contracts/components/IBaseComponent.sol +10 -0
- package/contracts/components/IDistributionComponent.sol +1 -0
- package/contracts/components/IPoolComponent.sol +5 -1
- package/contracts/components/Pool.sol +45 -32
- package/contracts/components/Product.sol +52 -48
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +36 -7
- package/contracts/instance/IInstanceBase.sol +26 -0
- package/contracts/instance/IInstanceService.sol +13 -3
- package/contracts/instance/Instance.sol +56 -226
- package/contracts/instance/InstanceAccessManager.sol +93 -78
- package/contracts/instance/InstanceBase.sol +41 -0
- package/contracts/instance/InstanceReader.sol +26 -1
- package/contracts/instance/InstanceService.sol +278 -71
- package/contracts/instance/InstanceServiceManager.sol +10 -12
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +50 -13
- package/contracts/instance/module/IAccess.sol +27 -17
- package/contracts/instance/module/IBundle.sol +1 -0
- package/contracts/instance/module/ISetup.sol +3 -0
- package/contracts/instance/service/BundleService.sol +294 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ComponentOwnerService.sol +4 -6
- package/contracts/instance/service/DistributionService.sol +64 -14
- package/contracts/instance/service/DistributionServiceManager.sol +11 -13
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +6 -23
- package/contracts/instance/service/IProductService.sol +6 -73
- package/contracts/instance/service/PolicyService.sol +539 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +145 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +213 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +39 -6
- package/contracts/registry/IRegistryService.sol +36 -13
- package/contracts/registry/Registry.sol +172 -199
- package/contracts/registry/RegistryAccessManager.sol +210 -0
- package/contracts/registry/RegistryService.sol +78 -202
- package/contracts/registry/RegistryServiceManager.sol +20 -22
- package/contracts/registry/ReleaseManager.sol +342 -0
- package/contracts/registry/TokenRegistry.sol +110 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/NftOwnable.sol +2 -4
- package/contracts/shared/ProxyManager.sol +1 -1
- package/contracts/shared/Registerable.sol +1 -0
- package/contracts/shared/Service.sol +11 -7
- package/contracts/test/TestService.sol +3 -2
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/RoleId.sol +14 -6
- package/contracts/types/Version.sol +4 -1
- package/package.json +1 -1
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/contracts/instance/AccessManagedSimple.sol +0 -122
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
@@ -0,0 +1,145 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Pool} from "../../components/Pool.sol";
|
5
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
6
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
7
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
|
+
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
|
+
import {ISetup} from "../module/ISetup.sol";
|
10
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
11
|
+
|
12
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
14
|
+
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
|
+
|
16
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
|
+
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
21
|
+
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
22
|
+
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
23
|
+
|
24
|
+
import {IService} from "../../shared/IService.sol";
|
25
|
+
import {Service} from "../../shared/Service.sol";
|
26
|
+
import {BundleManager} from "../BundleManager.sol";
|
27
|
+
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
28
|
+
import {IPoolService} from "./IPoolService.sol";
|
29
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
|
+
import {InstanceService} from "../InstanceService.sol";
|
31
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
+
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
33
|
+
|
34
|
+
string constant POOL_SERVICE_NAME = "PoolService";
|
35
|
+
|
36
|
+
contract PoolService is
|
37
|
+
ComponentServiceBase,
|
38
|
+
IPoolService
|
39
|
+
{
|
40
|
+
using NftIdLib for NftId;
|
41
|
+
|
42
|
+
address internal _registryAddress;
|
43
|
+
|
44
|
+
function _initialize(
|
45
|
+
address owner,
|
46
|
+
bytes memory data
|
47
|
+
)
|
48
|
+
internal
|
49
|
+
initializer
|
50
|
+
virtual override
|
51
|
+
{
|
52
|
+
address registryAddress;
|
53
|
+
address initialOwner;
|
54
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
55
|
+
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
56
|
+
// owner is PoolServiceManager deployer
|
57
|
+
_initializeService(registryAddress, owner);
|
58
|
+
|
59
|
+
_registerInterface(type(IPoolService).interfaceId);
|
60
|
+
}
|
61
|
+
|
62
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
63
|
+
return POOL();
|
64
|
+
}
|
65
|
+
|
66
|
+
function register(address poolAddress)
|
67
|
+
external
|
68
|
+
returns(NftId poolNftId)
|
69
|
+
{
|
70
|
+
address poolOwner = msg.sender;
|
71
|
+
IBaseComponent pool = IBaseComponent(poolAddress);
|
72
|
+
|
73
|
+
IRegistry.ObjectInfo memory info;
|
74
|
+
bytes memory data;
|
75
|
+
(info, data) = getRegistryService().registerPool(pool, poolOwner);
|
76
|
+
|
77
|
+
NftId instanceNftId = info.parentNftId;
|
78
|
+
IInstance instance = _getInstance(instanceNftId);
|
79
|
+
bool hasRole = getInstanceService().hasRole(
|
80
|
+
poolOwner,
|
81
|
+
POOL_OWNER_ROLE(),
|
82
|
+
address(instance));
|
83
|
+
|
84
|
+
if(!hasRole) {
|
85
|
+
revert ExpectedRoleMissing(POOL_OWNER_ROLE(), poolOwner);
|
86
|
+
}
|
87
|
+
|
88
|
+
poolNftId = info.nftId;
|
89
|
+
string memory poolName;
|
90
|
+
ISetup.PoolSetupInfo memory initialSetup;
|
91
|
+
(poolName, initialSetup) = _decodeAndVerifyPoolData(data);
|
92
|
+
instance.createPoolSetup(poolNftId, initialSetup);
|
93
|
+
|
94
|
+
getInstanceService().createTarget(instanceNftId, poolAddress, poolName);
|
95
|
+
|
96
|
+
pool.linkToRegisteredNftId();
|
97
|
+
}
|
98
|
+
|
99
|
+
function _decodeAndVerifyPoolData(bytes memory data)
|
100
|
+
internal
|
101
|
+
returns(string memory name, ISetup.PoolSetupInfo memory setup)
|
102
|
+
{
|
103
|
+
(name, setup) = abi.decode(
|
104
|
+
data,
|
105
|
+
(string, ISetup.PoolSetupInfo)
|
106
|
+
);
|
107
|
+
|
108
|
+
// TODO add checks
|
109
|
+
/*IRegistry _registry = getRegistry();
|
110
|
+
|
111
|
+
if(wallet == address(0)) {
|
112
|
+
revert WalletIsZero();
|
113
|
+
}
|
114
|
+
|
115
|
+
ObjectType tokenType = _registry.getObjectInfo(address(token)).objectType;
|
116
|
+
|
117
|
+
if(tokenType != TOKEN()) {
|
118
|
+
revert InvalidToken();
|
119
|
+
}
|
120
|
+
|
121
|
+
if(UFixedLib.eqz(info.collateralizationLevel)) {
|
122
|
+
revert CollateralizationLevelIsZero();
|
123
|
+
}*/
|
124
|
+
}
|
125
|
+
|
126
|
+
function setFees(
|
127
|
+
Fee memory poolFee,
|
128
|
+
Fee memory stakingFee,
|
129
|
+
Fee memory performanceFee
|
130
|
+
)
|
131
|
+
external
|
132
|
+
override
|
133
|
+
{
|
134
|
+
(IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
135
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
136
|
+
NftId poolNftId = poolInfo.nftId;
|
137
|
+
|
138
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
139
|
+
poolSetupInfo.poolFee = poolFee;
|
140
|
+
poolSetupInfo.stakingFee = stakingFee;
|
141
|
+
poolSetupInfo.performanceFee = performanceFee;
|
142
|
+
|
143
|
+
instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
|
144
|
+
}
|
145
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {PoolService} from "./PoolService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {REGISTRY} from "../../types/ObjectType.sol";
|
10
|
+
|
11
|
+
contract PoolServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
PoolService private _poolService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with pool service implementation
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
PoolService poolSrv = new PoolService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(poolSrv),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_poolService = PoolService(address(versionable));
|
28
|
+
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
|
+
//registryService.registerService(_poolService);
|
34
|
+
|
35
|
+
// TODO no nft to link yet
|
36
|
+
// link ownership of instance service manager ot nft owner of instance service
|
37
|
+
//_linkToNftOwnable(
|
38
|
+
// address(registryAddress),
|
39
|
+
// address(_poolService));
|
40
|
+
}
|
41
|
+
|
42
|
+
//--- view functions ----------------------------------------------------//
|
43
|
+
function getPoolService()
|
44
|
+
external
|
45
|
+
view
|
46
|
+
returns (PoolService poolService)
|
47
|
+
{
|
48
|
+
return _poolService;
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
@@ -0,0 +1,213 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
import {IProductComponent} from "../../components/IProductComponent.sol";
|
6
|
+
import {Product} from "../../components/Product.sol";
|
7
|
+
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
8
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
9
|
+
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
10
|
+
import {IInstance} from "../IInstance.sol";
|
11
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
12
|
+
import {IRisk} from "../module/IRisk.sol";
|
13
|
+
import {IBundle} from "../module/IBundle.sol";
|
14
|
+
import {IProductService} from "./IProductService.sol";
|
15
|
+
import {ITreasury} from "../module/ITreasury.sol";
|
16
|
+
import {ISetup} from "../module/ISetup.sol";
|
17
|
+
|
18
|
+
import {TokenHandler} from "../../shared/TokenHandler.sol";
|
19
|
+
|
20
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
21
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
22
|
+
|
23
|
+
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
|
+
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
26
|
+
import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
|
27
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
28
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
30
|
+
import {ReferralId} from "../../types/Referral.sol";
|
31
|
+
import {RiskId} from "../../types/RiskId.sol";
|
32
|
+
import {StateId} from "../../types/StateId.sol";
|
33
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
34
|
+
import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
|
35
|
+
|
36
|
+
import {IService} from "../../shared/IService.sol";
|
37
|
+
import {Service} from "../../shared/Service.sol";
|
38
|
+
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
39
|
+
import {IProductService} from "./IProductService.sol";
|
40
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
41
|
+
import {IPoolService} from "./PoolService.sol";
|
42
|
+
|
43
|
+
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
44
|
+
contract ProductService is ComponentServiceBase, IProductService {
|
45
|
+
using NftIdLib for NftId;
|
46
|
+
|
47
|
+
IPoolService internal _poolService;
|
48
|
+
|
49
|
+
event LogProductServiceSender(address sender);
|
50
|
+
|
51
|
+
function _initialize(
|
52
|
+
address owner,
|
53
|
+
bytes memory data
|
54
|
+
)
|
55
|
+
internal
|
56
|
+
initializer
|
57
|
+
virtual override
|
58
|
+
{
|
59
|
+
address registryAddress;
|
60
|
+
address initialOwner;
|
61
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
62
|
+
|
63
|
+
_initializeService(registryAddress, owner);
|
64
|
+
|
65
|
+
_poolService = IPoolService(_registry.getServiceAddress(POOL(), getMajorVersion()));
|
66
|
+
|
67
|
+
_registerInterface(type(IProductService).interfaceId);
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
72
|
+
return PRODUCT();
|
73
|
+
}
|
74
|
+
|
75
|
+
function register(address productAddress)
|
76
|
+
external
|
77
|
+
returns(NftId productNftId)
|
78
|
+
{
|
79
|
+
address productOwner = msg.sender;
|
80
|
+
IBaseComponent product = IBaseComponent(productAddress);
|
81
|
+
|
82
|
+
IRegistry.ObjectInfo memory info;
|
83
|
+
bytes memory data;
|
84
|
+
(info, data) = getRegistryService().registerProduct(product, productOwner);
|
85
|
+
|
86
|
+
NftId instanceNftId = info.parentNftId;
|
87
|
+
IInstance instance = _getInstance(instanceNftId);
|
88
|
+
bool hasRole = getInstanceService().hasRole(
|
89
|
+
productOwner,
|
90
|
+
PRODUCT_OWNER_ROLE(),
|
91
|
+
address(instance));
|
92
|
+
|
93
|
+
if(!hasRole) {
|
94
|
+
revert ExpectedRoleMissing(PRODUCT_OWNER_ROLE(), productOwner);
|
95
|
+
}
|
96
|
+
|
97
|
+
productNftId = info.nftId;
|
98
|
+
string memory productName;
|
99
|
+
ISetup.ProductSetupInfo memory initialSetup;
|
100
|
+
(productName, initialSetup) = _decodeAndVerifyProductData(data);
|
101
|
+
|
102
|
+
instance.createProductSetup(productNftId, initialSetup);
|
103
|
+
|
104
|
+
getInstanceService().createTarget(instanceNftId, productAddress, productName);
|
105
|
+
|
106
|
+
product.linkToRegisteredNftId();
|
107
|
+
}
|
108
|
+
|
109
|
+
function _decodeAndVerifyProductData(bytes memory data)
|
110
|
+
internal
|
111
|
+
returns(string memory name, ISetup.ProductSetupInfo memory setup)
|
112
|
+
{
|
113
|
+
(name, setup) = abi.decode(
|
114
|
+
data,
|
115
|
+
(string, ISetup.ProductSetupInfo)
|
116
|
+
);
|
117
|
+
|
118
|
+
// TODO add checks
|
119
|
+
// if(wallet == address(0)) {
|
120
|
+
// revert WalletIsZero();
|
121
|
+
// }
|
122
|
+
|
123
|
+
// IRegistry.ObjectInfo memory tokenInfo = _registry.getObjectInfo(address(info.token));
|
124
|
+
|
125
|
+
// if(tokenInfo.objectType != TOKEN()) {
|
126
|
+
// revert InvalidToken();
|
127
|
+
// }
|
128
|
+
|
129
|
+
// IRegistry.ObjectInfo memory poolInfo = _registry.getObjectInfo(info.poolNftId);
|
130
|
+
|
131
|
+
// if(poolInfo.objectType != POOL()) {
|
132
|
+
// revert InvalidPool();
|
133
|
+
// }
|
134
|
+
|
135
|
+
// if(poolInfo.parentNftId != instanceNftId) {
|
136
|
+
// revert InvalidPoolsInstance();
|
137
|
+
// }
|
138
|
+
// // TODO pool have the same token
|
139
|
+
// //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
|
140
|
+
// //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
|
141
|
+
// // TODO pool is not linked
|
142
|
+
|
143
|
+
// IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(info.distributionNftId);
|
144
|
+
|
145
|
+
// if(distributionInfo.objectType != DISTRIBUTION()) {
|
146
|
+
// revert InvalidDistribution();
|
147
|
+
// }
|
148
|
+
|
149
|
+
// if(distributionInfo.parentNftId != instanceNftId) {
|
150
|
+
// revert InvalidDistributionsInstance();
|
151
|
+
// }
|
152
|
+
// // TODO distribution have the same token
|
153
|
+
// // TODO distribution is not linked
|
154
|
+
}
|
155
|
+
|
156
|
+
function setFees(
|
157
|
+
Fee memory productFee,
|
158
|
+
Fee memory processingFee
|
159
|
+
)
|
160
|
+
external
|
161
|
+
{
|
162
|
+
// TODO check args
|
163
|
+
|
164
|
+
(
|
165
|
+
IRegistry.ObjectInfo memory productInfo,
|
166
|
+
IInstance instance
|
167
|
+
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
168
|
+
|
169
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
170
|
+
NftId productNftId = productInfo.nftId;
|
171
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
172
|
+
|
173
|
+
productSetupInfo.productFee = productFee;
|
174
|
+
productSetupInfo.processingFee = processingFee;
|
175
|
+
|
176
|
+
instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
|
177
|
+
}
|
178
|
+
|
179
|
+
function createRisk(
|
180
|
+
RiskId riskId,
|
181
|
+
bytes memory data
|
182
|
+
) external override {
|
183
|
+
(
|
184
|
+
IRegistry.ObjectInfo memory productInfo,
|
185
|
+
IInstance instance
|
186
|
+
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
187
|
+
NftId productNftId = productInfo.nftId;
|
188
|
+
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
|
189
|
+
instance.createRisk(
|
190
|
+
riskId,
|
191
|
+
riskInfo
|
192
|
+
);
|
193
|
+
}
|
194
|
+
|
195
|
+
function updateRisk(
|
196
|
+
RiskId riskId,
|
197
|
+
bytes memory data
|
198
|
+
) external {
|
199
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
200
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
201
|
+
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
202
|
+
riskInfo.data = data;
|
203
|
+
instance.updateRisk(riskId, riskInfo, KEEP_STATE());
|
204
|
+
}
|
205
|
+
|
206
|
+
function updateRiskState(
|
207
|
+
RiskId riskId,
|
208
|
+
StateId state
|
209
|
+
) external {
|
210
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
211
|
+
instance.updateRiskState(riskId, state);
|
212
|
+
}
|
213
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {ProductService} from "./ProductService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {VersionLib} from "../../types/Version.sol";
|
10
|
+
|
11
|
+
contract ProductServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
ProductService private _productService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with product service implementation
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
ProductService svc = new ProductService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(svc),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_productService = ProductService(address(versionable));
|
28
|
+
|
29
|
+
// Registry registry = Registry(registryAddress);
|
30
|
+
// address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
+
// RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
+
// TODO this must have a role or own nft to register service
|
33
|
+
//registryService.registerService(_productService);
|
34
|
+
|
35
|
+
// TODO no nft to link yet
|
36
|
+
// link ownership of instance service manager ot nft owner of instance service
|
37
|
+
//_linkToNftOwnable(
|
38
|
+
// address(registryAddress),
|
39
|
+
// address(_productService));
|
40
|
+
|
41
|
+
// implies that after this constructor call only upgrade functionality is available
|
42
|
+
_isDeployed = true;
|
43
|
+
}
|
44
|
+
|
45
|
+
//--- view functions ----------------------------------------------------//
|
46
|
+
function getProductService()
|
47
|
+
external
|
48
|
+
view
|
49
|
+
returns (ProductService productService)
|
50
|
+
{
|
51
|
+
return _productService;
|
52
|
+
}
|
53
|
+
|
54
|
+
}
|
@@ -7,13 +7,25 @@ import {ChainNft} from "./ChainNft.sol";
|
|
7
7
|
import {NftId} from "../types/NftId.sol";
|
8
8
|
import {ObjectType} from "../types/ObjectType.sol";
|
9
9
|
import {VersionPart} from "../types/Version.sol";
|
10
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
10
11
|
|
11
12
|
interface IRegistry is IERC165 {
|
12
13
|
|
13
|
-
event LogRegistration(
|
14
|
+
event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
|
15
|
+
event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
|
14
16
|
|
15
|
-
|
17
|
+
// register()
|
18
|
+
error CallerNotRegistryService();
|
19
|
+
error ServiceRegistration();
|
16
20
|
|
21
|
+
// registerService()
|
22
|
+
error CallerNotReleaseManager();
|
23
|
+
error ServiceAlreadyRegistered(address service);
|
24
|
+
|
25
|
+
// _register()
|
26
|
+
error ZeroParentAddress();
|
27
|
+
error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
|
28
|
+
error ContractAlreadyRegistered(address objectAddress);
|
17
29
|
|
18
30
|
struct ObjectInfo {
|
19
31
|
NftId nftId;
|
@@ -26,11 +38,32 @@ interface IRegistry is IERC165 {
|
|
26
38
|
}// TODO delete nftId and initialOwner(if not used) from struct
|
27
39
|
// TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
|
28
40
|
|
41
|
+
struct ReleaseInfo {
|
42
|
+
ObjectType[] domains;
|
43
|
+
Timestamp createdAt;
|
44
|
+
//Timestamp updatedAt;
|
45
|
+
}
|
46
|
+
|
47
|
+
function registerService(
|
48
|
+
ObjectInfo memory serviceInfo,
|
49
|
+
VersionPart serviceVersion,
|
50
|
+
ObjectType serviceDomain
|
51
|
+
) external returns(NftId nftId);
|
52
|
+
|
29
53
|
function register(ObjectInfo memory info) external returns (NftId nftId);
|
30
|
-
|
54
|
+
|
55
|
+
function getMajorVersionMin() external view returns (VersionPart);
|
56
|
+
|
57
|
+
function getMajorVersionMax() external view returns (VersionPart);
|
58
|
+
|
59
|
+
function getMajorVersion() external view returns (VersionPart);
|
60
|
+
|
61
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
|
31
62
|
|
32
63
|
function getObjectCount() external view returns (uint256);
|
33
64
|
|
65
|
+
function getNftId() external view returns (NftId nftId);
|
66
|
+
|
34
67
|
function getNftId(address objectAddress) external view returns (NftId nftId);
|
35
68
|
|
36
69
|
function ownerOf(NftId nftId) external view returns (address);
|
@@ -45,11 +78,11 @@ interface IRegistry is IERC165 {
|
|
45
78
|
|
46
79
|
function isRegistered(address contractAddress) external view returns (bool);
|
47
80
|
|
48
|
-
function
|
81
|
+
function isRegisteredService(address contractAddress) external view returns (bool);
|
49
82
|
|
50
83
|
function getServiceAddress(
|
51
|
-
|
52
|
-
VersionPart
|
84
|
+
ObjectType serviceDomain,
|
85
|
+
VersionPart releaseVersion
|
53
86
|
) external view returns (address serviceAddress);
|
54
87
|
|
55
88
|
function getChainNft() external view returns (ChainNft);
|
@@ -1,6 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
|
+
|
4
6
|
import {NftId} from "../types/NftId.sol";
|
5
7
|
import {ObjectType} from "../types/ObjectType.sol";
|
6
8
|
import {RoleId} from "../types/RoleId.sol";
|
@@ -10,26 +12,47 @@ import {IRegistry} from "./IRegistry.sol";
|
|
10
12
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
11
13
|
import {IBaseComponent} from "../components/IBaseComponent.sol";
|
12
14
|
|
13
|
-
interface IRegistryService is
|
15
|
+
interface IRegistryService is
|
16
|
+
IService,
|
17
|
+
IAccessManaged
|
18
|
+
{
|
19
|
+
error SelfRegistration();
|
20
|
+
error NotRegistryOwner();
|
21
|
+
|
22
|
+
error NotService();
|
23
|
+
error NotInstance();
|
24
|
+
error NotProduct();
|
25
|
+
error NotPool();
|
26
|
+
error NotDistribution();
|
14
27
|
|
15
|
-
|
28
|
+
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
29
|
+
error NotRegisterableOwner(address expectedOwner);
|
30
|
+
error RegisterableOwnerIsZero();
|
31
|
+
error RegisterableOwnerIsRegistered();
|
32
|
+
error InvalidInitialOwner(address initialOwner);
|
33
|
+
error InvalidAddress(address registerableAddress);
|
16
34
|
|
17
|
-
|
35
|
+
struct FunctionConfig
|
36
|
+
{
|
37
|
+
ObjectType serviceDomain;
|
38
|
+
bytes4 selector;
|
39
|
+
}
|
18
40
|
|
19
|
-
|
20
|
-
|
41
|
+
// TODO used by service -> add owner arg
|
42
|
+
function registerInstance(IRegisterable instance)
|
43
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
21
44
|
|
22
|
-
|
23
|
-
|
45
|
+
function registerProduct(IBaseComponent product, address owner)
|
46
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
24
47
|
|
25
|
-
|
26
|
-
|
48
|
+
function registerPool(IBaseComponent pool, address owner)
|
49
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
27
50
|
|
28
|
-
|
29
|
-
|
51
|
+
function registerDistribution(IBaseComponent distribution, address owner)
|
52
|
+
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
30
53
|
|
31
|
-
|
54
|
+
function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
|
32
55
|
|
33
|
-
|
56
|
+
function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
|
34
57
|
}
|
35
58
|
|