@etherisc/gif-next 0.0.2-84e1050-545 → 0.0.2-86f4673-518
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 +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +884 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +480 -112
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +137 -86
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +556 -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 +661 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +590 -204
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +525 -131
- 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 +38 -62
- 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 +327 -43
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +146 -59
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +278 -111
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +103 -184
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +412 -245
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +175 -101
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +321 -9
- 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 +24 -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 +495 -100
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +172 -26
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +301 -62
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +169 -23
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IApplicationService.sol/IApplicationService.json} +221 -104
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +181 -52
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +32 -19
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +152 -32
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +32 -19
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +32 -19
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +481 -87
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +203 -25
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +301 -62
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +169 -23
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +301 -62
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +169 -15
- 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 +225 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +146 -94
- 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 +238 -235
- 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 +214 -156
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +181 -97
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +150 -29
- 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 +32 -19
- 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 +178 -19
- 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 +196 -37
- 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 +230 -0
- package/contracts/components/Distribution.sol +53 -60
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +5 -2
- package/contracts/components/IPoolComponent.sol +50 -29
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +135 -152
- package/contracts/components/Product.sol +103 -117
- package/contracts/instance/BundleManager.sol +7 -11
- package/contracts/instance/IInstance.sol +21 -9
- package/contracts/instance/IInstanceService.sol +23 -6
- package/contracts/instance/Instance.sol +37 -45
- package/contracts/instance/InstanceAccessManager.sol +31 -39
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +200 -78
- package/contracts/instance/InstanceServiceManager.sol +5 -8
- package/contracts/instance/ObjectManager.sol +7 -24
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/module/IAccess.sol +4 -5
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +52 -14
- package/contracts/instance/service/BundleServiceManager.sol +5 -8
- package/contracts/instance/service/DistributionService.sol +33 -46
- package/contracts/instance/service/DistributionServiceManager.sol +6 -9
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +12 -3
- package/contracts/instance/service/IPolicyService.sol +17 -16
- package/contracts/instance/service/PolicyService.sol +148 -132
- package/contracts/instance/service/PoolService.sol +27 -42
- package/contracts/instance/service/PoolServiceManager.sol +5 -8
- package/contracts/instance/service/ProductService.sol +100 -40
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +37 -19
- package/contracts/registry/IRegistryService.sol +28 -13
- package/contracts/registry/Registry.sol +231 -217
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +65 -162
- package/contracts/registry/RegistryServiceManager.sol +18 -36
- package/contracts/registry/ReleaseManager.sol +332 -0
- package/contracts/registry/TokenRegistry.sol +11 -9
- 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 -6
- package/contracts/shared/IRegistryLinked.sol +15 -0
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/IVersionable.sol +2 -2
- package/contracts/shared/NftOwnable.sol +113 -57
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +6 -5
- package/contracts/shared/Registerable.sol +15 -24
- package/contracts/shared/RegistryLinked.sol +64 -0
- package/contracts/shared/Service.sol +18 -13
- package/contracts/shared/Versionable.sol +3 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/ObjectType.sol +5 -1
- package/contracts/types/RoleId.sol +4 -7
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -145
- package/contracts/components/IBaseComponent.sol +0 -32
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -4,19 +4,23 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
5
|
|
6
6
|
import {Instance} from "./Instance.sol";
|
7
|
+
import {IInstance} from "./IInstance.sol";
|
7
8
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
8
9
|
import {IInstanceService} from "./IInstanceService.sol";
|
9
10
|
import {InstanceReader} from "./InstanceReader.sol";
|
10
11
|
import {BundleManager} from "./BundleManager.sol";
|
11
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
|
-
import {
|
13
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
13
14
|
import {ChainNft} from "../registry/ChainNft.sol";
|
14
15
|
import {Service} from "../../contracts/shared/Service.sol";
|
15
16
|
import {IService} from "../shared/IService.sol";
|
16
17
|
import {NftId} from "../../contracts/types/NftId.sol";
|
17
18
|
import {RoleId} from "../types/RoleId.sol";
|
18
|
-
import {
|
19
|
-
import {
|
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
|
+
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";
|
20
24
|
|
21
25
|
contract InstanceService is Service, IInstanceService {
|
22
26
|
|
@@ -27,11 +31,10 @@ contract InstanceService is Service, IInstanceService {
|
|
27
31
|
|
28
32
|
// TODO update to real hash when instance is stable
|
29
33
|
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
30
|
-
string public constant NAME = "InstanceService";
|
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);
|
@@ -39,6 +42,14 @@ contract InstanceService is Service, IInstanceService {
|
|
39
42
|
_;
|
40
43
|
}
|
41
44
|
|
45
|
+
modifier onlyRegisteredService() {
|
46
|
+
address caller = msg.sender;
|
47
|
+
if (! getRegistry().isRegisteredService(caller)) {
|
48
|
+
revert ErrorInstanceServiceRequestUnauhorized(caller);
|
49
|
+
}
|
50
|
+
_;
|
51
|
+
}
|
52
|
+
|
42
53
|
function createInstanceClone()
|
43
54
|
external
|
44
55
|
returns (
|
@@ -53,26 +64,24 @@ contract InstanceService is Service, IInstanceService {
|
|
53
64
|
IRegistry registry = getRegistry();
|
54
65
|
address registryAddress = address(registry);
|
55
66
|
NftId registryNftId = registry.getNftId(registryAddress);
|
56
|
-
address registryServiceAddress = registry.getServiceAddress(
|
57
|
-
|
67
|
+
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
|
68
|
+
IRegistryService registryService = IRegistryService(registryServiceAddress);
|
58
69
|
|
59
70
|
// initially set the authority of the access managar to this (being the instance service).
|
60
71
|
// This will allow the instance service to bootstrap the authorizations of the instance
|
61
72
|
// and then transfer the ownership of the access manager to the instance owner once everything is setup
|
62
73
|
clonedAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
|
63
|
-
clonedAccessManager.
|
74
|
+
clonedAccessManager.initialize(address(this));
|
64
75
|
|
65
76
|
clonedInstance = Instance(Clones.clone(_masterInstance));
|
66
77
|
clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
|
67
|
-
( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
|
68
|
-
clonedInstanceNftId = info.nftId;
|
69
78
|
|
70
79
|
clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
71
|
-
clonedInstanceReader.initialize(registryAddress,
|
80
|
+
clonedInstanceReader.initialize(registryAddress, address(clonedInstance));
|
72
81
|
clonedInstance.setInstanceReader(clonedInstanceReader);
|
73
82
|
|
74
83
|
clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
75
|
-
clonedBundleManager.initialize(address(clonedAccessManager), registryAddress,
|
84
|
+
clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, address(clonedInstance));
|
76
85
|
clonedInstance.setBundleManager(clonedBundleManager);
|
77
86
|
|
78
87
|
// TODO amend setters with instance specific , policy manager ...
|
@@ -81,14 +90,19 @@ contract InstanceService is Service, IInstanceService {
|
|
81
90
|
|
82
91
|
// to complete setup switch instance ownership to the instance owner
|
83
92
|
// TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
|
84
|
-
clonedAccessManager.grantRole(INSTANCE_OWNER_ROLE(), instanceOwner);
|
85
93
|
clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
|
86
94
|
clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
|
87
95
|
|
96
|
+
IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
|
97
|
+
clonedInstanceNftId = info.nftId;
|
98
|
+
// clonedInstance.linkToRegisteredNftId();
|
99
|
+
|
88
100
|
emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
|
89
101
|
}
|
90
102
|
|
91
103
|
function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
104
|
+
_createGifRoles(clonedAccessManager);
|
105
|
+
_createGifTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
|
92
106
|
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
93
107
|
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
94
108
|
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
@@ -97,36 +111,55 @@ contract InstanceService is Service, IInstanceService {
|
|
97
111
|
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
98
112
|
}
|
99
113
|
|
114
|
+
function _createGifRoles(InstanceAccessManager clonedAccessManager) internal {
|
115
|
+
clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole");
|
116
|
+
clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole");
|
117
|
+
clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole");
|
118
|
+
|
119
|
+
clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
120
|
+
clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
121
|
+
clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
122
|
+
clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
123
|
+
clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
124
|
+
clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
125
|
+
}
|
126
|
+
|
127
|
+
function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
128
|
+
clonedAccessManager.createGifTarget(address(clonedAccessManager), "InstanceAccessManager");
|
129
|
+
clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
|
130
|
+
clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
|
131
|
+
}
|
132
|
+
|
100
133
|
function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
101
134
|
// configure authorization for distribution service on instance
|
102
135
|
IRegistry registry = getRegistry();
|
103
|
-
address distributionServiceAddress =
|
104
|
-
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(),
|
136
|
+
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
137
|
+
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
105
138
|
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
|
106
139
|
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
107
140
|
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
108
141
|
clonedAccessManager.setTargetFunctionRole(
|
109
|
-
|
142
|
+
"Instance",
|
110
143
|
instanceDistributionServiceSelectors,
|
111
|
-
DISTRIBUTION_SERVICE_ROLE()
|
144
|
+
DISTRIBUTION_SERVICE_ROLE());
|
112
145
|
}
|
113
146
|
|
114
147
|
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
115
148
|
// configure authorization for pool service on instance
|
116
|
-
address poolServiceAddress =
|
149
|
+
address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
|
117
150
|
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
118
151
|
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
119
152
|
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
120
153
|
instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
|
121
154
|
clonedAccessManager.setTargetFunctionRole(
|
122
|
-
|
155
|
+
"Instance",
|
123
156
|
instancePoolServiceSelectors,
|
124
|
-
POOL_SERVICE_ROLE()
|
157
|
+
POOL_SERVICE_ROLE());
|
125
158
|
}
|
126
159
|
|
127
160
|
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
128
161
|
// configure authorization for product service on instance
|
129
|
-
address productServiceAddress =
|
162
|
+
address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
|
130
163
|
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
131
164
|
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
132
165
|
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
@@ -135,36 +168,36 @@ contract InstanceService is Service, IInstanceService {
|
|
135
168
|
instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
|
136
169
|
instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
|
137
170
|
clonedAccessManager.setTargetFunctionRole(
|
138
|
-
|
171
|
+
"Instance",
|
139
172
|
instanceProductServiceSelectors,
|
140
|
-
PRODUCT_SERVICE_ROLE()
|
173
|
+
PRODUCT_SERVICE_ROLE());
|
141
174
|
}
|
142
175
|
|
143
176
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
144
177
|
// configure authorization for policy service on instance
|
145
|
-
address policyServiceAddress =
|
178
|
+
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
|
146
179
|
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
|
147
180
|
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
|
148
181
|
instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
|
149
182
|
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
|
150
183
|
instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
|
151
184
|
clonedAccessManager.setTargetFunctionRole(
|
152
|
-
|
185
|
+
"Instance",
|
153
186
|
instancePolicyServiceSelectors,
|
154
|
-
POLICY_SERVICE_ROLE()
|
187
|
+
POLICY_SERVICE_ROLE());
|
155
188
|
}
|
156
189
|
|
157
190
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
158
191
|
// configure authorization for bundle service on instance
|
159
|
-
address bundleServiceAddress =
|
192
|
+
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
|
160
193
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
161
194
|
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
|
162
195
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
163
196
|
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
164
197
|
clonedAccessManager.setTargetFunctionRole(
|
165
|
-
|
198
|
+
"Instance",
|
166
199
|
instanceBundleServiceSelectors,
|
167
|
-
BUNDLE_SERVICE_ROLE()
|
200
|
+
BUNDLE_SERVICE_ROLE());
|
168
201
|
|
169
202
|
// configure authorization for bundle service on bundle manager
|
170
203
|
bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
|
@@ -174,58 +207,82 @@ contract InstanceService is Service, IInstanceService {
|
|
174
207
|
bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
|
175
208
|
bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
|
176
209
|
clonedAccessManager.setTargetFunctionRole(
|
177
|
-
|
210
|
+
"BundleManager",
|
178
211
|
bundleManagerBundleServiceSelectors,
|
179
|
-
BUNDLE_SERVICE_ROLE()
|
212
|
+
BUNDLE_SERVICE_ROLE());
|
180
213
|
}
|
181
214
|
|
182
215
|
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
183
216
|
// configure authorization for instance service on instance
|
184
|
-
address instanceServiceAddress =
|
217
|
+
address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
|
185
218
|
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
186
219
|
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
187
220
|
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
188
221
|
clonedAccessManager.setTargetFunctionRole(
|
189
|
-
|
222
|
+
"Instance",
|
190
223
|
instanceInstanceServiceSelectors,
|
191
|
-
INSTANCE_SERVICE_ROLE()
|
192
|
-
}
|
193
|
-
|
194
|
-
function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
|
195
|
-
require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
|
196
|
-
require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
|
197
|
-
require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
|
224
|
+
INSTANCE_SERVICE_ROLE());
|
198
225
|
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
BundleManager bundleManager = BundleManager(bundleManagerAddress);
|
226
|
+
bytes4[] memory instanceAccessManagerInstanceServiceSelectors = new bytes4[](1);
|
227
|
+
instanceAccessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
|
228
|
+
clonedAccessManager.setTargetFunctionRole(
|
229
|
+
"InstanceAccessManager",
|
230
|
+
instanceAccessManagerInstanceServiceSelectors,
|
231
|
+
INSTANCE_SERVICE_ROLE());
|
232
|
+
}
|
207
233
|
|
208
|
-
|
209
|
-
|
210
|
-
|
234
|
+
function setAndRegisterMasterInstance(address instanceAddress)
|
235
|
+
external
|
236
|
+
onlyOwner
|
237
|
+
returns(NftId masterInstanceNftId)
|
238
|
+
{
|
239
|
+
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
240
|
+
if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
|
241
|
+
if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
|
242
|
+
|
243
|
+
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
244
|
+
|
245
|
+
IInstance instance = IInstance(instanceAddress);
|
246
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
247
|
+
address accessManagerAddress = address(accessManager);
|
248
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
249
|
+
address instanceReaderAddress = address(instanceReader);
|
250
|
+
BundleManager bundleManager = instance.getBundleManager();
|
251
|
+
address bundleManagerAddress = address(bundleManager);
|
252
|
+
|
253
|
+
if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
|
254
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
255
|
+
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
|
256
|
+
|
257
|
+
if(instance.authority() != accessManagerAddress) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
258
|
+
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
259
|
+
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
211
260
|
|
212
261
|
_masterInstanceAccessManager = accessManagerAddress;
|
213
262
|
_masterInstance = instanceAddress;
|
214
263
|
_masterInstanceReader = instanceReaderAddress;
|
215
264
|
_masterInstanceBundleManager = bundleManagerAddress;
|
265
|
+
|
266
|
+
IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
|
267
|
+
IInstance masterInstance = IInstance(_masterInstance);
|
268
|
+
IRegistry.ObjectInfo memory info = registryService.registerInstance(masterInstance, getOwner());
|
269
|
+
masterInstanceNftId = info.nftId;
|
270
|
+
|
271
|
+
// masterInstance.linkToRegisteredNftId();
|
216
272
|
}
|
217
273
|
|
218
274
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
219
|
-
|
220
|
-
|
221
|
-
|
275
|
+
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
276
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
277
|
+
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
222
278
|
|
223
279
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
224
|
-
|
280
|
+
if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
|
225
281
|
|
226
282
|
_masterInstanceReader = instanceReaderAddress;
|
227
283
|
}
|
228
284
|
|
285
|
+
// TODO access restriction
|
229
286
|
function upgradeInstanceReader(NftId instanceNftId) external {
|
230
287
|
IRegistry registry = getRegistry();
|
231
288
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
@@ -237,7 +294,7 @@ contract InstanceService is Service, IInstanceService {
|
|
237
294
|
}
|
238
295
|
|
239
296
|
InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
240
|
-
upgradedInstanceReaderClone.initialize(address(registry),
|
297
|
+
upgradedInstanceReaderClone.initialize(address(registry), address(instance));
|
241
298
|
instance.setInstanceReader(upgradedInstanceReaderClone);
|
242
299
|
}
|
243
300
|
|
@@ -258,15 +315,11 @@ contract InstanceService is Service, IInstanceService {
|
|
258
315
|
}
|
259
316
|
|
260
317
|
// From IService
|
261
|
-
function
|
262
|
-
return
|
318
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
319
|
+
return INSTANCE();
|
263
320
|
}
|
264
321
|
|
265
322
|
/// @dev top level initializer
|
266
|
-
// 1) registry is non upgradeable -> don't need a proxy and uses constructor !
|
267
|
-
// 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
|
268
|
-
// 3) deploy registry -> pass registry service address as constructor argument
|
269
|
-
// registry is getting instantiated and locked to registry service address forever
|
270
323
|
function _initialize(
|
271
324
|
address owner,
|
272
325
|
bytes memory data
|
@@ -275,37 +328,106 @@ contract InstanceService is Service, IInstanceService {
|
|
275
328
|
initializer
|
276
329
|
virtual override
|
277
330
|
{
|
278
|
-
address initialOwner
|
279
|
-
address registryAddress
|
331
|
+
address initialOwner;
|
332
|
+
address registryAddress;
|
280
333
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
281
334
|
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
282
335
|
// owner is InstanceServiceManager deployer
|
283
|
-
|
284
|
-
|
285
|
-
_registerInterface(type(IService).interfaceId);
|
286
|
-
_registerInterface(type(IInstanceService).interfaceId);
|
336
|
+
initializeService(registryAddress, owner);
|
337
|
+
registerInterface(type(IInstanceService).interfaceId);
|
287
338
|
}
|
288
339
|
|
289
|
-
function
|
340
|
+
function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
|
341
|
+
Instance instance = Instance(instanceAddress);
|
342
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
343
|
+
return accessManager.hasRole(role, account);
|
344
|
+
}
|
345
|
+
|
346
|
+
function createGifTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
|
290
347
|
IRegistry registry = getRegistry();
|
291
348
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
292
349
|
Instance instance = Instance(instanceInfo.objectAddress);
|
293
|
-
InstanceAccessManager accessManager = instance.
|
294
|
-
accessManager.
|
350
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
351
|
+
accessManager.createGifTarget(targetAddress, targetName);
|
295
352
|
}
|
296
353
|
|
297
|
-
function
|
354
|
+
function grantDistributionDefaultPermissions(NftId instanceNftId, address distributionAddress, string memory distributionName) external onlyRegisteredService {
|
298
355
|
IRegistry registry = getRegistry();
|
356
|
+
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionAddress);
|
357
|
+
|
358
|
+
if (distributionInfo.objectType != DISTRIBUTION()) {
|
359
|
+
revert ErrorInstanceServiceInvalidComponentType(distributionAddress, DISTRIBUTION(), distributionInfo.objectType);
|
360
|
+
}
|
361
|
+
|
299
362
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
300
363
|
Instance instance = Instance(instanceInfo.objectAddress);
|
301
|
-
InstanceAccessManager
|
302
|
-
|
364
|
+
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
365
|
+
|
366
|
+
bytes4[] memory fctSelectors = new bytes4[](1);
|
367
|
+
fctSelectors[0] = IDistributionComponent.setFees.selector;
|
368
|
+
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors, DISTRIBUTION_OWNER_ROLE());
|
369
|
+
|
370
|
+
bytes4[] memory fctSelectors2 = new bytes4[](2);
|
371
|
+
fctSelectors2[0] = IDistributionComponent.processSale.selector;
|
372
|
+
fctSelectors2[1] = IDistributionComponent.processRenewal.selector;
|
373
|
+
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors2, PRODUCT_SERVICE_ROLE());
|
303
374
|
}
|
304
375
|
|
305
|
-
function
|
306
|
-
|
307
|
-
|
308
|
-
|
376
|
+
function grantPoolDefaultPermissions(NftId instanceNftId, address poolAddress, string memory poolName) external onlyRegisteredService {
|
377
|
+
IRegistry registry = getRegistry();
|
378
|
+
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(poolAddress);
|
379
|
+
|
380
|
+
if (poolInfo.objectType != POOL()) {
|
381
|
+
revert ErrorInstanceServiceInvalidComponentType(poolAddress, POOL(), poolInfo.objectType);
|
382
|
+
}
|
383
|
+
|
384
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
385
|
+
Instance instance = Instance(instanceInfo.objectAddress);
|
386
|
+
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
387
|
+
|
388
|
+
bytes4[] memory fctSelectors = new bytes4[](1);
|
389
|
+
fctSelectors[0] = IPoolComponent.setFees.selector;
|
390
|
+
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
|
391
|
+
|
392
|
+
bytes4[] memory fctSelectors2 = new bytes4[](1);
|
393
|
+
fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
|
394
|
+
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
|
395
|
+
}
|
396
|
+
|
397
|
+
function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
|
398
|
+
IRegistry registry = getRegistry();
|
399
|
+
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productAddress);
|
400
|
+
|
401
|
+
if (productInfo.objectType != PRODUCT()) {
|
402
|
+
revert ErrorInstanceServiceInvalidComponentType(productAddress, PRODUCT(), productInfo.objectType);
|
403
|
+
}
|
404
|
+
|
405
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
406
|
+
Instance instance = Instance(instanceInfo.objectAddress);
|
407
|
+
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
408
|
+
|
409
|
+
bytes4[] memory fctSelectors = new bytes4[](1);
|
410
|
+
fctSelectors[0] = IProductComponent.setFees.selector;
|
411
|
+
instanceAccessManager.setTargetFunctionRole(productName, fctSelectors, PRODUCT_OWNER_ROLE());
|
309
412
|
}
|
413
|
+
|
414
|
+
function setTargetLocked(string memory targetName, bool locked) external {
|
415
|
+
address componentAddress = msg.sender;
|
416
|
+
IRegistry registry = getRegistry();
|
417
|
+
IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
|
418
|
+
if (componentInfo.nftId.eqz()) {
|
419
|
+
revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
|
420
|
+
}
|
421
|
+
|
422
|
+
// TODO validate component type
|
423
|
+
|
424
|
+
|
425
|
+
address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
|
426
|
+
IInstance instance = IInstance(instanceAddress);
|
427
|
+
|
428
|
+
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
429
|
+
accessManager.setTargetClosed(targetName, locked);
|
430
|
+
}
|
431
|
+
|
310
432
|
}
|
311
433
|
|
@@ -7,7 +7,7 @@ import {ProxyManager} from "../shared/ProxyManager.sol";
|
|
7
7
|
import {InstanceService} from "./InstanceService.sol";
|
8
8
|
import {Registry} from "../registry/Registry.sol";
|
9
9
|
import {RegistryService} from "../registry/RegistryService.sol";
|
10
|
-
import {
|
10
|
+
import {REGISTRY} from "../types/ObjectType.sol";
|
11
11
|
|
12
12
|
contract InstanceServiceManager is ProxyManager {
|
13
13
|
|
@@ -28,10 +28,10 @@ contract InstanceServiceManager is ProxyManager {
|
|
28
28
|
|
29
29
|
_instanceService = InstanceService(address(versionable));
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
//
|
31
|
+
// TODO `this` must have a role or own nft to register service
|
32
|
+
//Registry registry = Registry(registryAddress);
|
33
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _instanceService.getMajorVersion());
|
34
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
35
35
|
//registryService.registerService(_instanceService);
|
36
36
|
// RegistryService registryService = _instanceService.getRegistryService();
|
37
37
|
|
@@ -40,9 +40,6 @@ contract InstanceServiceManager is ProxyManager {
|
|
40
40
|
//_linkToNftOwnable(
|
41
41
|
// address(registryAddress),
|
42
42
|
// address(_instanceService));
|
43
|
-
|
44
|
-
// implies that after this constructor call only upgrade functionality is available
|
45
|
-
_isDeployed = true;
|
46
43
|
}
|
47
44
|
|
48
45
|
//--- view functions ----------------------------------------------------//
|
@@ -14,49 +14,32 @@ contract ObjectManager is
|
|
14
14
|
Cloneable
|
15
15
|
{
|
16
16
|
|
17
|
-
event LogObjectManagerInitialized(
|
17
|
+
event LogObjectManagerInitialized(address instance);
|
18
18
|
|
19
19
|
error ErrorObjectManagerNftIdInvalid(NftId instanceNftId);
|
20
20
|
error ErrorObjectManagerAlreadyAdded(NftId componentNftId, NftId objectNftId);
|
21
21
|
|
22
22
|
mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
|
23
23
|
mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
|
24
|
-
|
25
|
-
InstanceReader internal _instanceReader;
|
26
|
-
|
27
|
-
constructor() Cloneable() {
|
28
|
-
_instanceReader = InstanceReader(address(0));
|
29
|
-
}
|
24
|
+
IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectManager initialization
|
30
25
|
|
31
26
|
/// @dev call to initialize MUST be made in the same transaction as cloning of the contract
|
32
27
|
function initialize(
|
33
28
|
address authority,
|
34
29
|
address registry,
|
35
|
-
|
30
|
+
address instance
|
36
31
|
)
|
37
32
|
external
|
38
33
|
{
|
39
34
|
initialize(authority, registry);
|
40
35
|
|
41
|
-
|
42
|
-
IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(instanceNftId);
|
43
|
-
if (instanceInfo.objectType != INSTANCE()) {
|
44
|
-
revert ErrorObjectManagerNftIdInvalid(instanceNftId);
|
45
|
-
}
|
46
|
-
|
47
|
-
IInstance instance = IInstance(instanceInfo.objectAddress);
|
48
|
-
_instanceReader = instance.getInstanceReader();
|
49
|
-
_instanceNftId = instanceNftId;
|
36
|
+
_instance = IInstance(instance);
|
50
37
|
|
51
|
-
emit LogObjectManagerInitialized(
|
52
|
-
}
|
53
|
-
|
54
|
-
function getInstanceReader() external view returns (InstanceReader) {
|
55
|
-
return _instanceReader;
|
38
|
+
emit LogObjectManagerInitialized(instance);
|
56
39
|
}
|
57
40
|
|
58
|
-
function
|
59
|
-
return
|
41
|
+
function getInstance() external view returns (IInstance) {
|
42
|
+
return _instance;
|
60
43
|
}
|
61
44
|
|
62
45
|
function _add(NftId componentNftId, NftId objectNftId) internal {
|