@etherisc/gif-next 0.0.2-2a0a7d0-893 → 0.0.2-2a59cd5-352
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 +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +405 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +883 -141
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +113 -6
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +798 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +662 -43
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +656 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +583 -75
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +504 -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/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/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/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 +450 -35
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +111 -7
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +589 -223
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +39 -89
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -53
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +400 -96
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +175 -25
- 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/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +166 -7
- 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/IAccess.sol/IAccess.json +13 -13
- 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/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +290 -66
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +169 -19
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +439 -27
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +194 -16
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +638 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +118 -40
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +217 -7
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +33 -20
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +20 -7
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +20 -7
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +223 -64
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +182 -32
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +186 -27
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +166 -16
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +186 -27
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +166 -16
- 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 +15 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +100 -26
- 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 +28 -15
- 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 +260 -40
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +166 -16
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +160 -10
- 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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +37 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +18 -5
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +20 -7
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +156 -11
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +156 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -11
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +166 -7
- 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/shared/Versionable.sol/Versionable.json +2 -2
- 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 +152 -11
- 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 +184 -25
- 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/TestVersionable.sol/TestVersionable.json +8 -8
- 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/DistributorType.sol/DistributorTypeLib.json +2 -2
- 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/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- 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/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- 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/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +121 -62
- package/contracts/components/Distribution.sol +207 -53
- package/contracts/components/IComponent.sol +16 -3
- package/contracts/components/IDistributionComponent.sol +59 -3
- package/contracts/components/IPoolComponent.sol +50 -29
- package/contracts/components/IProductComponent.sol +5 -1
- package/contracts/components/Pool.sol +133 -137
- package/contracts/components/Product.sol +90 -107
- package/contracts/instance/IInstance.sol +26 -6
- package/contracts/instance/IInstanceService.sol +19 -0
- package/contracts/instance/Instance.sol +58 -30
- package/contracts/instance/InstanceAccessManager.sol +12 -13
- package/contracts/instance/InstanceService.sol +119 -39
- package/contracts/instance/base/ComponentService.sol +3 -2
- package/contracts/instance/module/IAccess.sol +3 -4
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +11 -6
- package/contracts/instance/service/DistributionService.sol +197 -30
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +11 -1
- package/contracts/instance/service/IDistributionService.sol +53 -0
- package/contracts/instance/service/IPolicyService.sol +10 -16
- package/contracts/instance/service/PolicyService.sol +84 -98
- package/contracts/instance/service/PoolService.sol +9 -42
- package/contracts/instance/service/ProductService.sol +20 -28
- package/contracts/registry/IRegistry.sol +3 -2
- package/contracts/registry/IRegistryService.sol +16 -6
- package/contracts/registry/Registry.sol +20 -8
- package/contracts/registry/RegistryService.sol +50 -85
- package/contracts/registry/ReleaseManager.sol +19 -40
- package/contracts/registry/TokenRegistry.sol +4 -3
- package/contracts/shared/ERC165.sol +12 -11
- package/contracts/shared/INftOwnable.sol +12 -6
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -4
- package/contracts/shared/IRegistryLinked.sol +15 -0
- package/contracts/shared/IVersionable.sol +2 -2
- package/contracts/shared/NftOwnable.sol +113 -59
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +5 -4
- package/contracts/shared/Registerable.sol +15 -24
- package/contracts/shared/RegistryLinked.sol +64 -0
- package/contracts/shared/Service.sol +5 -5
- package/contracts/shared/Versionable.sol +3 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +6 -2
- package/package.json +3 -3
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
- package/contracts/instance/base/IInstanceBase.sol +0 -21
|
@@ -13,18 +13,25 @@ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
|
|
13
13
|
import {BundleManager} from "./BundleManager.sol";
|
|
14
14
|
import {InstanceReader} from "./InstanceReader.sol";
|
|
15
15
|
|
|
16
|
-
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
|
17
|
-
|
|
18
16
|
import {IBundle} from "./module/IBundle.sol";
|
|
19
|
-
import {
|
|
20
|
-
import {IRisk} from "./module/IRisk.sol";
|
|
21
|
-
import {IPolicy} from "./module/IPolicy.sol";
|
|
22
|
-
|
|
17
|
+
import {IBundleService} from "./service/IBundleService.sol";
|
|
23
18
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
|
19
|
+
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
|
20
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
|
21
|
+
import {IPolicy} from "./module/IPolicy.sol";
|
|
22
|
+
import {IDistribution} from "./module/IDistribution.sol";
|
|
23
|
+
import {IPolicyService} from "./service/IPolicyService.sol";
|
|
24
24
|
import {IPoolService} from "./service/IPoolService.sol";
|
|
25
25
|
import {IProductService} from "./service/IProductService.sol";
|
|
26
26
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
|
27
27
|
import {IBundleService} from "./service/IBundleService.sol";
|
|
28
|
+
import {IRisk} from "./module/IRisk.sol";
|
|
29
|
+
import {ISetup} from "./module/ISetup.sol";
|
|
30
|
+
import {NftId} from "../types/NftId.sol";
|
|
31
|
+
import {RiskId} from "../types/RiskId.sol";
|
|
32
|
+
import {StateId} from "../types/StateId.sol";
|
|
33
|
+
import {VersionPart} from "../types/Version.sol";
|
|
34
|
+
import {Key32} from "../types/Key32.sol";
|
|
28
35
|
|
|
29
36
|
|
|
30
37
|
|
|
@@ -53,6 +60,18 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
|
|
|
53
60
|
function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
|
|
54
61
|
function updateProductSetupState(NftId productNftId, StateId newState) external;
|
|
55
62
|
|
|
63
|
+
function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external;
|
|
64
|
+
function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
|
|
65
|
+
function updateDistributorTypeState(Key32 distributorKey, StateId newState) external;
|
|
66
|
+
|
|
67
|
+
function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
|
|
68
|
+
function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
|
|
69
|
+
function updateDistributorState(NftId nftId, StateId newState) external;
|
|
70
|
+
|
|
71
|
+
function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external;
|
|
72
|
+
function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
|
|
73
|
+
function updateReferralState(Key32 referralKey, StateId newState) external;
|
|
74
|
+
|
|
56
75
|
function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
|
|
57
76
|
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
|
|
58
77
|
function updateRiskState(RiskId riskId, StateId newState) external;
|
|
@@ -61,6 +80,7 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
|
|
|
61
80
|
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
|
62
81
|
function updatePolicyState(NftId policyNftId, StateId newState) external;
|
|
63
82
|
|
|
83
|
+
function getMajorVersion() external pure returns (VersionPart majorVersion);
|
|
64
84
|
function getInstanceReader() external view returns (InstanceReader);
|
|
65
85
|
function getBundleManager() external view returns (BundleManager);
|
|
66
86
|
}
|
|
@@ -17,9 +17,28 @@ import {BundleManager} from "./BundleManager.sol";
|
|
|
17
17
|
|
|
18
18
|
interface IInstanceService is IService {
|
|
19
19
|
|
|
20
|
+
error ErrorInstanceServiceMasterInstanceAlreadySet();
|
|
21
|
+
error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
|
|
22
|
+
error ErrorInstanceServiceMasterBundleManagerAlreadySet();
|
|
23
|
+
error ErrorInstanceServiceInstanceAddressZero();
|
|
24
|
+
|
|
25
|
+
error ErrorInstanceServiceMasterInstanceReaderNotSet();
|
|
26
|
+
error ErrorInstanceServiceInstanceReaderAddressZero();
|
|
27
|
+
error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
|
|
28
|
+
error ErrorInstanceServiceInstanceReaderInstanceMismatch();
|
|
29
|
+
|
|
30
|
+
error ErrorInstanceServiceAccessManagerZero();
|
|
31
|
+
error ErrorInstanceServiceInstanceReaderZero();
|
|
32
|
+
error ErrorInstanceServiceBundleManagerZero();
|
|
33
|
+
|
|
34
|
+
error ErrorInstanceServiceInstanceAuthorityMismatch();
|
|
35
|
+
error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
|
|
36
|
+
error ErrorInstanceServiceBundleMangerInstanceMismatch();
|
|
37
|
+
|
|
20
38
|
error ErrorInstanceServiceRequestUnauhorized(address caller);
|
|
21
39
|
error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
|
|
22
40
|
error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
|
|
41
|
+
error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
|
|
23
42
|
|
|
24
43
|
event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
|
|
25
44
|
|
|
@@ -6,7 +6,7 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
|
|
|
6
6
|
import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
|
7
7
|
import {NftId} from "../types/NftId.sol";
|
|
8
8
|
import {NumberId} from "../types/NumberId.sol";
|
|
9
|
-
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT} from "../types/ObjectType.sol";
|
|
9
|
+
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
|
|
10
10
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
|
11
11
|
import {RoleId, RoleIdLib} from "../types/RoleId.sol";
|
|
12
12
|
import {StateId, ACTIVE} from "../types/StateId.sol";
|
|
@@ -25,6 +25,7 @@ import {KeyValueStore} from "./base/KeyValueStore.sol";
|
|
|
25
25
|
|
|
26
26
|
import {IAccess} from "./module/IAccess.sol";
|
|
27
27
|
import {IBundle} from "./module/IBundle.sol";
|
|
28
|
+
import {IDistribution} from "./module/IDistribution.sol";
|
|
28
29
|
import {IPolicy} from "./module/IPolicy.sol";
|
|
29
30
|
import {IRisk} from "./module/IRisk.sol";
|
|
30
31
|
import {ISetup} from "./module/ISetup.sol";
|
|
@@ -34,7 +35,7 @@ import {IPoolService} from "./service/IPoolService.sol";
|
|
|
34
35
|
import {IProductService} from "./service/IProductService.sol";
|
|
35
36
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
|
36
37
|
import {IBundleService} from "./service/IBundleService.sol";
|
|
37
|
-
|
|
38
|
+
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
|
38
39
|
|
|
39
40
|
contract Instance is
|
|
40
41
|
IInstance,
|
|
@@ -42,18 +43,29 @@ contract Instance is
|
|
|
42
43
|
Registerable,
|
|
43
44
|
KeyValueStore
|
|
44
45
|
{
|
|
46
|
+
|
|
47
|
+
uint256 public constant GIF_MAJOR_VERSION = 3;
|
|
48
|
+
|
|
49
|
+
uint64 public constant ADMIN_ROLE = type(uint64).min;
|
|
50
|
+
uint64 public constant PUBLIC_ROLE = type(uint64).max;
|
|
51
|
+
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
|
|
52
|
+
|
|
53
|
+
uint32 public constant EXECUTION_DELAY = 0;
|
|
54
|
+
|
|
55
|
+
bool private _initialized;
|
|
56
|
+
|
|
57
|
+
InstanceAccessManager internal _accessManager;
|
|
45
58
|
InstanceReader internal _instanceReader;
|
|
46
59
|
BundleManager internal _bundleManager;
|
|
47
60
|
|
|
48
61
|
function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
|
|
49
62
|
public
|
|
50
|
-
initializer
|
|
63
|
+
initializer()
|
|
51
64
|
{
|
|
52
65
|
__AccessManaged_init(accessManagerAddress);
|
|
53
66
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
_registerInterface(type(IInstance).interfaceId);
|
|
67
|
+
initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
|
|
68
|
+
registerInterface(type(IInstance).interfaceId);
|
|
57
69
|
}
|
|
58
70
|
|
|
59
71
|
//--- ProductSetup ------------------------------------------------------//
|
|
@@ -95,43 +107,43 @@ contract Instance is
|
|
|
95
107
|
updateState(_toNftKey32(poolNftId, POOL()), newState);
|
|
96
108
|
}
|
|
97
109
|
|
|
98
|
-
//--- DistributorType
|
|
99
|
-
function createDistributorType(
|
|
100
|
-
create(
|
|
110
|
+
//--- DistributorType -------------------------------------------------------//
|
|
111
|
+
function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external restricted() {
|
|
112
|
+
create(distributorKey, abi.encode(info));
|
|
101
113
|
}
|
|
102
114
|
|
|
103
|
-
function updateDistributorType(
|
|
104
|
-
update(
|
|
115
|
+
function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
|
|
116
|
+
update(distributorKey, abi.encode(info), newState);
|
|
105
117
|
}
|
|
106
118
|
|
|
107
|
-
function updateDistributorTypeState(
|
|
108
|
-
updateState(
|
|
119
|
+
function updateDistributorTypeState(Key32 distributorKey, StateId newState) external restricted() {
|
|
120
|
+
updateState(distributorKey, newState);
|
|
109
121
|
}
|
|
110
122
|
|
|
111
123
|
//--- Distributor -------------------------------------------------------//
|
|
112
|
-
function createDistributor(NftId
|
|
113
|
-
create(
|
|
124
|
+
function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external restricted() {
|
|
125
|
+
create(toDistributorKey32(nftId), abi.encode(info));
|
|
114
126
|
}
|
|
115
127
|
|
|
116
|
-
function updateDistributor(NftId
|
|
117
|
-
update(
|
|
128
|
+
function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
|
|
129
|
+
update(toDistributorKey32(nftId), abi.encode(info), newState);
|
|
118
130
|
}
|
|
119
131
|
|
|
120
|
-
function updateDistributorState(NftId
|
|
121
|
-
updateState(
|
|
132
|
+
function updateDistributorState(NftId nftId, StateId newState) external restricted() {
|
|
133
|
+
updateState(toDistributorKey32(nftId), newState);
|
|
122
134
|
}
|
|
123
135
|
|
|
124
136
|
//--- Referral ----------------------------------------------------------//
|
|
125
|
-
function createReferral(
|
|
126
|
-
create(
|
|
137
|
+
function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external restricted() {
|
|
138
|
+
create(referralKey, abi.encode(referralInfo));
|
|
127
139
|
}
|
|
128
140
|
|
|
129
|
-
function updateReferral(
|
|
130
|
-
update(
|
|
141
|
+
function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
|
|
142
|
+
update(referralKey, abi.encode(referralInfo), newState);
|
|
131
143
|
}
|
|
132
144
|
|
|
133
|
-
function updateReferralState(
|
|
134
|
-
updateState(
|
|
145
|
+
function updateReferralState(Key32 referralKey, StateId newState) external restricted() {
|
|
146
|
+
updateState(referralKey, newState);
|
|
135
147
|
}
|
|
136
148
|
|
|
137
149
|
//--- Bundle ------------------------------------------------------------//
|
|
@@ -212,24 +224,36 @@ contract Instance is
|
|
|
212
224
|
return policyNftId.toKey32(POLICY());
|
|
213
225
|
}
|
|
214
226
|
|
|
227
|
+
function toDistributionKey32(NftId distNftId) public pure returns (Key32) {
|
|
228
|
+
return distNftId.toKey32(DISTRIBUTION());
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function toDistributorTypeKey32(NftId distNftId) public pure returns (Key32) {
|
|
232
|
+
return distNftId.toKey32(DISTRIBUTOR_TYPE());
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function toDistributorKey32(NftId distNftId) public pure returns (Key32) {
|
|
236
|
+
return distNftId.toKey32(DISTRIBUTOR());
|
|
237
|
+
}
|
|
238
|
+
|
|
215
239
|
function getDistributionService() external view returns (IDistributionService) {
|
|
216
|
-
return IDistributionService(
|
|
240
|
+
return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
|
|
217
241
|
}
|
|
218
242
|
|
|
219
243
|
function getProductService() external view returns (IProductService) {
|
|
220
|
-
return IProductService(
|
|
244
|
+
return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
|
|
221
245
|
}
|
|
222
246
|
|
|
223
247
|
function getPoolService() external view returns (IPoolService) {
|
|
224
|
-
return IPoolService(
|
|
248
|
+
return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
|
|
225
249
|
}
|
|
226
250
|
|
|
227
251
|
function getPolicyService() external view returns (IPolicyService) {
|
|
228
|
-
return IPolicyService(
|
|
252
|
+
return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
|
|
229
253
|
}
|
|
230
254
|
|
|
231
255
|
function getBundleService() external view returns (IBundleService) {
|
|
232
|
-
return IBundleService(
|
|
256
|
+
return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
|
|
233
257
|
}
|
|
234
258
|
|
|
235
259
|
function setInstanceReader(InstanceReader instanceReader) external restricted() {
|
|
@@ -237,6 +261,10 @@ contract Instance is
|
|
|
237
261
|
_instanceReader = instanceReader;
|
|
238
262
|
}
|
|
239
263
|
|
|
264
|
+
function getMajorVersion() external pure returns (VersionPart majorVersion) {
|
|
265
|
+
return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
|
|
266
|
+
}
|
|
267
|
+
|
|
240
268
|
function getInstanceReader() external view returns (InstanceReader) {
|
|
241
269
|
return _instanceReader;
|
|
242
270
|
}
|
|
@@ -58,7 +58,7 @@ contract InstanceAccessManager is
|
|
|
58
58
|
|
|
59
59
|
function setRoleLocked(RoleId roleId, bool locked) external restricted() {
|
|
60
60
|
if (!roleExists(roleId)) {
|
|
61
|
-
revert IAccess.
|
|
61
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
_role[roleId].isLocked = locked;
|
|
@@ -71,7 +71,7 @@ contract InstanceAccessManager is
|
|
|
71
71
|
|
|
72
72
|
function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
|
|
73
73
|
if (!roleExists(roleId)) {
|
|
74
|
-
revert IAccess.
|
|
74
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
if (_role[roleId].isLocked) {
|
|
@@ -161,7 +161,7 @@ contract InstanceAccessManager is
|
|
|
161
161
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
|
162
162
|
|
|
163
163
|
if (target == address(0)) {
|
|
164
|
-
revert IAccess.
|
|
164
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
_target[target].isLocked = locked;
|
|
@@ -236,7 +236,7 @@ contract InstanceAccessManager is
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
if (_target[target].createdAt.gtz()) {
|
|
239
|
-
revert IAccess.
|
|
239
|
+
revert IAccess.ErrorIAccessTargetExists(target, _target[target].name);
|
|
240
240
|
}
|
|
241
241
|
if (_targetForName[ShortStrings.toShortString(name)] != address(0)) {
|
|
242
242
|
revert IAccess.ErrorIAccessTargetNameExists(target, _targetForName[ShortStrings.toShortString(name)], ShortStrings.toShortString(name));
|
|
@@ -258,20 +258,19 @@ contract InstanceAccessManager is
|
|
|
258
258
|
// TODO: implement
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
function setTargetFunctionRole(
|
|
262
|
-
address target,
|
|
263
|
-
bytes4[] calldata selectors,
|
|
264
|
-
uint64 roleId
|
|
265
|
-
) public virtual restricted() {
|
|
266
|
-
_accessManager.setTargetFunctionRole(target, selectors, roleId);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
261
|
function setTargetFunctionRole(
|
|
270
262
|
string memory targetName,
|
|
271
263
|
bytes4[] calldata selectors,
|
|
272
264
|
RoleId roleId
|
|
273
265
|
) public virtual restricted() {
|
|
274
266
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
|
267
|
+
|
|
268
|
+
if (target == address(0)) {
|
|
269
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
|
270
|
+
}
|
|
271
|
+
if (! roleExists(roleId)) {
|
|
272
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
|
273
|
+
}
|
|
275
274
|
uint64 roleIdInt = RoleId.unwrap(roleId);
|
|
276
275
|
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
|
277
276
|
}
|
|
@@ -279,7 +278,7 @@ contract InstanceAccessManager is
|
|
|
279
278
|
function setTargetClosed(string memory targetName, bool closed) public restricted() {
|
|
280
279
|
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
|
281
280
|
if (target == address(0)) {
|
|
282
|
-
revert IAccess.
|
|
281
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
|
283
282
|
}
|
|
284
283
|
_accessManager.setTargetClosed(target, closed);
|
|
285
284
|
}
|
|
@@ -18,6 +18,9 @@ import {NftId} from "../../contracts/types/NftId.sol";
|
|
|
18
18
|
import {RoleId} from "../types/RoleId.sol";
|
|
19
19
|
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
|
20
20
|
import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
|
21
|
+
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
|
22
|
+
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
|
23
|
+
import {IProductComponent} from "../components/IProductComponent.sol";
|
|
21
24
|
|
|
22
25
|
contract InstanceService is Service, IInstanceService {
|
|
23
26
|
|
|
@@ -31,7 +34,7 @@ contract InstanceService is Service, IInstanceService {
|
|
|
31
34
|
|
|
32
35
|
modifier onlyInstanceOwner(NftId instanceNftId) {
|
|
33
36
|
IRegistry registry = getRegistry();
|
|
34
|
-
ChainNft chainNft = registry.
|
|
37
|
+
ChainNft chainNft = ChainNft(registry.getChainNftAddress());
|
|
35
38
|
|
|
36
39
|
if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
|
|
37
40
|
revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
|
|
@@ -90,9 +93,9 @@ contract InstanceService is Service, IInstanceService {
|
|
|
90
93
|
clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
|
|
91
94
|
clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
|
|
92
95
|
|
|
93
|
-
|
|
96
|
+
IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
|
|
94
97
|
clonedInstanceNftId = info.nftId;
|
|
95
|
-
clonedInstance.linkToRegisteredNftId();
|
|
98
|
+
// clonedInstance.linkToRegisteredNftId();
|
|
96
99
|
|
|
97
100
|
emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
|
|
98
101
|
}
|
|
@@ -122,6 +125,7 @@ contract InstanceService is Service, IInstanceService {
|
|
|
122
125
|
}
|
|
123
126
|
|
|
124
127
|
function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
|
128
|
+
clonedAccessManager.createGifTarget(address(clonedAccessManager), "InstanceAccessManager");
|
|
125
129
|
clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
|
|
126
130
|
clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
|
|
127
131
|
}
|
|
@@ -131,18 +135,27 @@ contract InstanceService is Service, IInstanceService {
|
|
|
131
135
|
IRegistry registry = getRegistry();
|
|
132
136
|
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
|
133
137
|
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
|
134
|
-
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](
|
|
138
|
+
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
|
|
135
139
|
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
|
136
140
|
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
|
141
|
+
instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
|
|
142
|
+
instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
|
|
143
|
+
instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
|
|
144
|
+
instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
|
|
145
|
+
instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
|
|
146
|
+
instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
|
|
147
|
+
instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
|
|
148
|
+
instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
|
|
149
|
+
instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
|
|
137
150
|
clonedAccessManager.setTargetFunctionRole(
|
|
138
151
|
"Instance",
|
|
139
152
|
instanceDistributionServiceSelectors,
|
|
140
|
-
DISTRIBUTION_SERVICE_ROLE());
|
|
153
|
+
DISTRIBUTION_SERVICE_ROLE());
|
|
141
154
|
}
|
|
142
155
|
|
|
143
156
|
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
144
157
|
// configure authorization for pool service on instance
|
|
145
|
-
address poolServiceAddress =
|
|
158
|
+
address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
|
|
146
159
|
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
|
147
160
|
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
|
148
161
|
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
|
@@ -155,7 +168,7 @@ contract InstanceService is Service, IInstanceService {
|
|
|
155
168
|
|
|
156
169
|
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
157
170
|
// configure authorization for product service on instance
|
|
158
|
-
address productServiceAddress =
|
|
171
|
+
address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
|
|
159
172
|
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
|
160
173
|
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
|
161
174
|
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
|
@@ -171,7 +184,7 @@ contract InstanceService is Service, IInstanceService {
|
|
|
171
184
|
|
|
172
185
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
173
186
|
// configure authorization for policy service on instance
|
|
174
|
-
address policyServiceAddress =
|
|
187
|
+
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
|
|
175
188
|
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
|
|
176
189
|
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
|
|
177
190
|
instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
|
|
@@ -185,7 +198,7 @@ contract InstanceService is Service, IInstanceService {
|
|
|
185
198
|
|
|
186
199
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
|
187
200
|
// configure authorization for bundle service on instance
|
|
188
|
-
address bundleServiceAddress =
|
|
201
|
+
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
|
|
189
202
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
|
190
203
|
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
|
|
191
204
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
|
@@ -210,7 +223,7 @@ contract InstanceService is Service, IInstanceService {
|
|
|
210
223
|
|
|
211
224
|
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
212
225
|
// configure authorization for instance service on instance
|
|
213
|
-
address instanceServiceAddress =
|
|
226
|
+
address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
|
|
214
227
|
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
|
215
228
|
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
|
216
229
|
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
|
@@ -218,33 +231,41 @@ contract InstanceService is Service, IInstanceService {
|
|
|
218
231
|
"Instance",
|
|
219
232
|
instanceInstanceServiceSelectors,
|
|
220
233
|
INSTANCE_SERVICE_ROLE());
|
|
234
|
+
|
|
235
|
+
bytes4[] memory instanceAccessManagerInstanceServiceSelectors = new bytes4[](1);
|
|
236
|
+
instanceAccessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
|
|
237
|
+
clonedAccessManager.setTargetFunctionRole(
|
|
238
|
+
"InstanceAccessManager",
|
|
239
|
+
instanceAccessManagerInstanceServiceSelectors,
|
|
240
|
+
INSTANCE_SERVICE_ROLE());
|
|
221
241
|
}
|
|
222
242
|
|
|
223
|
-
function
|
|
224
|
-
address accessManagerAddress,
|
|
225
|
-
address instanceAddress,
|
|
226
|
-
address instanceReaderAddress,
|
|
227
|
-
address bundleManagerAddress)
|
|
243
|
+
function setAndRegisterMasterInstance(address instanceAddress)
|
|
228
244
|
external
|
|
229
245
|
onlyOwner
|
|
230
246
|
returns(NftId masterInstanceNftId)
|
|
231
247
|
{
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
248
|
+
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
|
249
|
+
if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
|
|
250
|
+
if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
|
|
235
251
|
|
|
236
|
-
|
|
237
|
-
require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
|
|
238
|
-
require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
|
|
239
|
-
require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
|
|
252
|
+
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
|
240
253
|
|
|
241
254
|
IInstance instance = IInstance(instanceAddress);
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
255
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
|
256
|
+
address accessManagerAddress = address(accessManager);
|
|
257
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
258
|
+
address instanceReaderAddress = address(instanceReader);
|
|
259
|
+
BundleManager bundleManager = instance.getBundleManager();
|
|
260
|
+
address bundleManagerAddress = address(bundleManager);
|
|
261
|
+
|
|
262
|
+
if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
|
|
263
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
|
264
|
+
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
|
|
265
|
+
|
|
266
|
+
if(instance.authority() != accessManagerAddress) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
|
267
|
+
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
|
268
|
+
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
|
248
269
|
|
|
249
270
|
_masterInstanceAccessManager = accessManagerAddress;
|
|
250
271
|
_masterInstance = instanceAddress;
|
|
@@ -253,19 +274,19 @@ contract InstanceService is Service, IInstanceService {
|
|
|
253
274
|
|
|
254
275
|
IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
|
|
255
276
|
IInstance masterInstance = IInstance(_masterInstance);
|
|
256
|
-
|
|
277
|
+
IRegistry.ObjectInfo memory info = registryService.registerInstance(masterInstance, getOwner());
|
|
257
278
|
masterInstanceNftId = info.nftId;
|
|
258
279
|
|
|
259
|
-
masterInstance.linkToRegisteredNftId();
|
|
280
|
+
// masterInstance.linkToRegisteredNftId();
|
|
260
281
|
}
|
|
261
282
|
|
|
262
283
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
284
|
+
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
|
285
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
|
286
|
+
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
|
266
287
|
|
|
267
288
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
|
268
|
-
|
|
289
|
+
if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
|
|
269
290
|
|
|
270
291
|
_masterInstanceReader = instanceReaderAddress;
|
|
271
292
|
}
|
|
@@ -321,9 +342,8 @@ contract InstanceService is Service, IInstanceService {
|
|
|
321
342
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
|
322
343
|
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
|
323
344
|
// owner is InstanceServiceManager deployer
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
_registerInterface(type(IInstanceService).interfaceId);
|
|
345
|
+
initializeService(registryAddress, owner);
|
|
346
|
+
registerInterface(type(IInstanceService).interfaceId);
|
|
327
347
|
}
|
|
328
348
|
|
|
329
349
|
function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
|
|
@@ -332,12 +352,72 @@ contract InstanceService is Service, IInstanceService {
|
|
|
332
352
|
return accessManager.hasRole(role, account);
|
|
333
353
|
}
|
|
334
354
|
|
|
335
|
-
function
|
|
355
|
+
function createGifTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
|
|
336
356
|
IRegistry registry = getRegistry();
|
|
337
357
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
|
338
358
|
Instance instance = Instance(instanceInfo.objectAddress);
|
|
339
359
|
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
|
340
|
-
accessManager.
|
|
360
|
+
accessManager.createGifTarget(targetAddress, targetName);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
function grantDistributionDefaultPermissions(NftId instanceNftId, address distributionAddress, string memory distributionName) external onlyRegisteredService {
|
|
364
|
+
IRegistry registry = getRegistry();
|
|
365
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionAddress);
|
|
366
|
+
|
|
367
|
+
if (distributionInfo.objectType != DISTRIBUTION()) {
|
|
368
|
+
revert ErrorInstanceServiceInvalidComponentType(distributionAddress, DISTRIBUTION(), distributionInfo.objectType);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
|
372
|
+
Instance instance = Instance(instanceInfo.objectAddress);
|
|
373
|
+
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
|
374
|
+
|
|
375
|
+
bytes4[] memory fctSelectors = new bytes4[](1);
|
|
376
|
+
fctSelectors[0] = IDistributionComponent.setFees.selector;
|
|
377
|
+
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors, DISTRIBUTION_OWNER_ROLE());
|
|
378
|
+
|
|
379
|
+
bytes4[] memory fctSelectors2 = new bytes4[](2);
|
|
380
|
+
fctSelectors2[0] = IDistributionComponent.processSale.selector;
|
|
381
|
+
fctSelectors2[1] = IDistributionComponent.processRenewal.selector;
|
|
382
|
+
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors2, PRODUCT_SERVICE_ROLE());
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
function grantPoolDefaultPermissions(NftId instanceNftId, address poolAddress, string memory poolName) external onlyRegisteredService {
|
|
386
|
+
IRegistry registry = getRegistry();
|
|
387
|
+
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(poolAddress);
|
|
388
|
+
|
|
389
|
+
if (poolInfo.objectType != POOL()) {
|
|
390
|
+
revert ErrorInstanceServiceInvalidComponentType(poolAddress, POOL(), poolInfo.objectType);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
|
394
|
+
Instance instance = Instance(instanceInfo.objectAddress);
|
|
395
|
+
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
|
396
|
+
|
|
397
|
+
bytes4[] memory fctSelectors = new bytes4[](1);
|
|
398
|
+
fctSelectors[0] = IPoolComponent.setFees.selector;
|
|
399
|
+
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
|
|
400
|
+
|
|
401
|
+
bytes4[] memory fctSelectors2 = new bytes4[](1);
|
|
402
|
+
fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
|
|
403
|
+
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
|
|
407
|
+
IRegistry registry = getRegistry();
|
|
408
|
+
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productAddress);
|
|
409
|
+
|
|
410
|
+
if (productInfo.objectType != PRODUCT()) {
|
|
411
|
+
revert ErrorInstanceServiceInvalidComponentType(productAddress, PRODUCT(), productInfo.objectType);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
|
415
|
+
Instance instance = Instance(instanceInfo.objectAddress);
|
|
416
|
+
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
|
417
|
+
|
|
418
|
+
bytes4[] memory fctSelectors = new bytes4[](1);
|
|
419
|
+
fctSelectors[0] = IProductComponent.setFees.selector;
|
|
420
|
+
instanceAccessManager.setTargetFunctionRole(productName, fctSelectors, PRODUCT_OWNER_ROLE());
|
|
341
421
|
}
|
|
342
422
|
|
|
343
423
|
function setTargetLocked(string memory targetName, bool locked) external {
|
|
@@ -49,6 +49,7 @@ abstract contract ComponentService is Service {
|
|
|
49
49
|
RoleId requiredRole
|
|
50
50
|
)
|
|
51
51
|
internal
|
|
52
|
+
view
|
|
52
53
|
returns (
|
|
53
54
|
IComponent component,
|
|
54
55
|
address owner,
|
|
@@ -60,7 +61,7 @@ abstract contract ComponentService is Service {
|
|
|
60
61
|
owner = msg.sender;
|
|
61
62
|
|
|
62
63
|
// check component has not already been registerd
|
|
63
|
-
NftId compoentNftId =
|
|
64
|
+
NftId compoentNftId = getRegistry().getNftId(componentAddress);
|
|
64
65
|
if(compoentNftId.gtz()) {
|
|
65
66
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress, compoentNftId);
|
|
66
67
|
}
|
|
@@ -72,7 +73,7 @@ abstract contract ComponentService is Service {
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
// check component is of required type
|
|
75
|
-
|
|
76
|
+
IRegistry.ObjectInfo memory componentInfo = component.getInitialInfo();
|
|
76
77
|
if(componentInfo.objectType != requiredType) {
|
|
77
78
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, componentInfo.objectType);
|
|
78
79
|
}
|