@etherisc/gif-next 0.0.2-f2df3e2-873 → 0.0.2-f398177-971
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +37 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +44 -13
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +37 -6
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +44 -13
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +55 -24
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +52 -21
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +55 -24
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +52 -21
- 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 +252 -2210
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +346 -2685
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +67 -49
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +219 -53
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +59 -220
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -117
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- 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 +37 -13
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.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 +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +75 -217
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +33 -66
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +155 -133
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +35 -64
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +463 -119
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +109 -42
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +181 -399
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +81 -94
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +11 -145
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +79 -30
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +229 -88
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +23 -273
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -326
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +265 -32
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +5 -13
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +213 -443
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +74 -75
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +439 -54
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +84 -37
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +55 -31
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +22 -35
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -25
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +2 -2
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
- 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 +17 -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/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +100 -4
- 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/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +2 -2
- 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/Fee.sol/FeeLib.json +42 -18
- 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/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.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/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +21 -2
- package/contracts/components/Distribution.sol +5 -4
- package/contracts/components/IComponent.sol +16 -2
- package/contracts/components/IPoolComponent.sol +7 -6
- package/contracts/components/IProductComponent.sol +5 -4
- package/contracts/components/Pool.sol +8 -8
- package/contracts/components/Product.sol +21 -17
- package/contracts/instance/IInstance.sol +28 -53
- package/contracts/instance/IInstanceService.sol +15 -10
- package/contracts/instance/Instance.sol +90 -171
- package/contracts/instance/InstanceAccessManager.sol +35 -21
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +56 -5
- package/contracts/instance/InstanceService.sol +96 -266
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +1 -1
- package/contracts/instance/base/ComponentService.sol +47 -20
- package/contracts/instance/base/KeyValueStore.sol +0 -31
- package/contracts/instance/base/Lifecycle.sol +7 -4
- package/contracts/instance/module/IComponents.sol +3 -3
- package/contracts/instance/module/IDistribution.sol +3 -2
- package/contracts/instance/module/IPolicy.sol +5 -5
- package/contracts/instance/service/ApplicationService.sol +58 -227
- package/contracts/instance/service/BundleService.sol +65 -119
- package/contracts/instance/service/ClaimService.sol +232 -34
- package/contracts/instance/service/DistributionService.sol +51 -134
- package/contracts/instance/service/IApplicationService.sol +5 -21
- package/contracts/instance/service/IBundleService.sol +32 -10
- package/contracts/instance/service/IClaimService.sol +37 -39
- package/contracts/instance/service/IDistributionService.sol +10 -22
- package/contracts/instance/service/IPolicyService.sol +15 -72
- package/contracts/instance/service/IPoolService.sol +18 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +112 -277
- package/contracts/instance/service/PoolService.sol +121 -21
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +10 -10
- package/contracts/registry/IRegistryService.sol +0 -2
- package/contracts/registry/RegistryService.sol +14 -10
- package/contracts/shared/IPolicyHolder.sol +23 -9
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/NftOwnable.sol +0 -2
- package/contracts/shared/PolicyHolder.sol +30 -17
- package/contracts/shared/Registerable.sol +10 -9
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/types/Amount.sol +44 -0
- package/contracts/types/Fee.sol +7 -6
- package/contracts/types/ObjectType.sol +5 -1
- package/package.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
@@ -4,33 +4,47 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
5
|
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
6
6
|
|
7
|
+
import {NftId} from "../../contracts/types/NftId.sol";
|
8
|
+
import {RoleId} from "../types/RoleId.sol";
|
9
|
+
import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
|
10
|
+
import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
11
|
+
|
12
|
+
import {Service} from "../shared/Service.sol";
|
13
|
+
import {IService} from "../shared/IService.sol";
|
14
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
15
|
+
|
16
|
+
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
17
|
+
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
18
|
+
import {IProductComponent} from "../components/IProductComponent.sol";
|
19
|
+
|
20
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
21
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
22
|
+
import {ChainNft} from "../registry/ChainNft.sol";
|
23
|
+
|
7
24
|
import {Instance} from "./Instance.sol";
|
8
25
|
import {IInstance} from "./IInstance.sol";
|
9
26
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
10
27
|
import {IInstanceService} from "./IInstanceService.sol";
|
11
28
|
import {InstanceReader} from "./InstanceReader.sol";
|
12
29
|
import {BundleManager} from "./BundleManager.sol";
|
13
|
-
import {
|
14
|
-
import {
|
15
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
16
|
-
import {Service} from "../../contracts/shared/Service.sol";
|
17
|
-
import {NftId} from "../../contracts/types/NftId.sol";
|
18
|
-
import {RoleId} from "../types/RoleId.sol";
|
19
|
-
import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
|
20
|
-
import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
30
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
31
|
+
import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
|
21
32
|
|
22
33
|
contract InstanceService is
|
23
34
|
Service,
|
24
35
|
IInstanceService
|
25
36
|
{
|
37
|
+
|
38
|
+
// TODO update to real hash when instance is stable
|
39
|
+
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
40
|
+
|
41
|
+
IRegistryService internal _registryService;
|
26
42
|
address internal _masterOzAccessManager;
|
27
43
|
address internal _masterInstanceAccessManager;
|
28
44
|
address internal _masterInstance;
|
29
45
|
address internal _masterInstanceReader;
|
30
46
|
address internal _masterInstanceBundleManager;
|
31
|
-
|
32
|
-
// TODO update to real hash when instance is stable
|
33
|
-
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
47
|
+
address internal _masterInstanceStore;
|
34
48
|
|
35
49
|
modifier onlyInstanceOwner(NftId instanceNftId) {
|
36
50
|
if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
|
@@ -57,21 +71,12 @@ contract InstanceService is
|
|
57
71
|
function createInstanceClone()
|
58
72
|
external
|
59
73
|
returns (
|
60
|
-
AccessManagerUpgradeableInitializeable clonedOzAccessManager,
|
61
|
-
InstanceAccessManager clonedInstanceAccessManager,
|
62
74
|
Instance clonedInstance,
|
63
|
-
NftId clonedInstanceNftId
|
64
|
-
InstanceReader clonedInstanceReader,
|
65
|
-
BundleManager clonedBundleManager
|
75
|
+
NftId clonedInstanceNftId
|
66
76
|
)
|
67
77
|
{
|
68
78
|
address instanceOwner = msg.sender;
|
69
|
-
|
70
|
-
IRegistryService registryService = IRegistryService(
|
71
|
-
registry.getServiceAddress(
|
72
|
-
REGISTRY(), getVersion().toMajorPart()));
|
73
|
-
|
74
|
-
clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
|
79
|
+
AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
|
75
80
|
Clones.clone(_masterOzAccessManager));
|
76
81
|
|
77
82
|
// initially grants ADMIN_ROLE to this (being the instance service).
|
@@ -83,239 +88,54 @@ contract InstanceService is
|
|
83
88
|
clonedInstance = Instance(Clones.clone(_masterInstance));
|
84
89
|
clonedInstance.initialize(
|
85
90
|
address(clonedOzAccessManager),
|
86
|
-
address(
|
91
|
+
address(getRegistry()),
|
87
92
|
instanceOwner);
|
93
|
+
// initialize and set before instance reader
|
94
|
+
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
95
|
+
clonedInstanceStore.initialize(address(clonedInstance));
|
96
|
+
clonedInstance.setInstanceStore(clonedInstanceStore);
|
88
97
|
|
89
|
-
clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
98
|
+
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
90
99
|
clonedInstanceReader.initialize(address(clonedInstance));
|
91
100
|
clonedInstance.setInstanceReader(clonedInstanceReader);
|
92
101
|
|
93
|
-
clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
102
|
+
BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
94
103
|
clonedBundleManager.initialize(address(clonedInstance));
|
95
104
|
clonedInstance.setBundleManager(clonedBundleManager);
|
96
105
|
|
97
|
-
clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
|
106
|
+
InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
|
98
107
|
clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
|
99
108
|
clonedInstanceAccessManager.initialize(address(clonedInstance));
|
100
109
|
clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
|
101
110
|
|
102
111
|
// TODO amend setters with instance specific , policy manager ...
|
103
112
|
|
104
|
-
|
113
|
+
// TODO library does external calls -> but it is registry and access manager -> find out is it best practice
|
114
|
+
InstanceAuthorizationsLib.grantInitialAuthorizations(
|
115
|
+
clonedInstanceAccessManager,
|
116
|
+
clonedInstance,
|
117
|
+
clonedBundleManager,
|
118
|
+
clonedInstanceStore,
|
119
|
+
instanceOwner,
|
120
|
+
getRegistry(),
|
121
|
+
getVersion().toMajorPart());
|
105
122
|
|
106
123
|
clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
|
107
124
|
|
108
|
-
IRegistry.ObjectInfo memory info =
|
125
|
+
IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
|
109
126
|
clonedInstanceNftId = info.nftId;
|
110
127
|
|
111
128
|
emit LogInstanceCloned(
|
112
129
|
address(clonedOzAccessManager),
|
113
130
|
address(clonedInstanceAccessManager),
|
114
|
-
address(clonedInstance),
|
131
|
+
address(clonedInstance),
|
132
|
+
address(clonedInstanceStore),
|
115
133
|
address(clonedBundleManager),
|
116
134
|
address(clonedInstanceReader),
|
117
135
|
clonedInstanceNftId);
|
118
136
|
}
|
119
137
|
|
120
|
-
function
|
121
|
-
InstanceAccessManager clonedAccessManager,
|
122
|
-
Instance clonedInstance,
|
123
|
-
BundleManager clonedBundleManager,
|
124
|
-
address instanceOwner)
|
125
|
-
internal
|
126
|
-
{
|
127
|
-
_createCoreAndGifRoles(clonedAccessManager);
|
128
|
-
_createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
|
129
|
-
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
130
|
-
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
131
|
-
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
132
|
-
_grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
|
133
|
-
_grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
|
134
|
-
_grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
|
135
|
-
_grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
|
136
|
-
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
137
|
-
_grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
|
138
|
-
}
|
139
|
-
|
140
|
-
function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
|
141
|
-
// default roles controlled by ADMIN_ROLE -> core roles
|
142
|
-
// all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
|
143
|
-
clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
144
|
-
clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
145
|
-
clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
146
|
-
clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
|
147
|
-
clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
148
|
-
clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
|
149
|
-
clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
150
|
-
clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
151
|
-
// default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
|
152
|
-
clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
|
153
|
-
clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
|
154
|
-
clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
|
155
|
-
}
|
156
|
-
|
157
|
-
function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
158
|
-
clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");
|
159
|
-
clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");
|
160
|
-
clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
|
161
|
-
}
|
162
|
-
|
163
|
-
function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
164
|
-
// configure authorization for distribution service on instance
|
165
|
-
address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart());
|
166
|
-
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
167
|
-
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
|
168
|
-
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
169
|
-
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
170
|
-
instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
|
171
|
-
instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
|
172
|
-
instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
|
173
|
-
instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
|
174
|
-
instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
|
175
|
-
instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
|
176
|
-
instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
|
177
|
-
instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
|
178
|
-
instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
|
179
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
180
|
-
"Instance",
|
181
|
-
instanceDistributionServiceSelectors,
|
182
|
-
DISTRIBUTION_SERVICE_ROLE());
|
183
|
-
}
|
184
|
-
|
185
|
-
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
186
|
-
// configure authorization for pool service on instance
|
187
|
-
address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart());
|
188
|
-
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
189
|
-
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
190
|
-
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
191
|
-
instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
|
192
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
193
|
-
"Instance",
|
194
|
-
instancePoolServiceSelectors,
|
195
|
-
POOL_SERVICE_ROLE());
|
196
|
-
}
|
197
|
-
|
198
|
-
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
199
|
-
// configure authorization for product service on instance
|
200
|
-
address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getVersion().toMajorPart());
|
201
|
-
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
202
|
-
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
203
|
-
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
204
|
-
instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
|
205
|
-
instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
|
206
|
-
instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
|
207
|
-
instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
|
208
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
209
|
-
"Instance",
|
210
|
-
instanceProductServiceSelectors,
|
211
|
-
PRODUCT_SERVICE_ROLE());
|
212
|
-
}
|
213
|
-
|
214
|
-
function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
215
|
-
// configure authorization for application services on instance
|
216
|
-
address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getVersion().toMajorPart());
|
217
|
-
clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
|
218
|
-
bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
|
219
|
-
instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
|
220
|
-
instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
|
221
|
-
instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
|
222
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
223
|
-
"Instance",
|
224
|
-
instanceApplicationServiceSelectors,
|
225
|
-
APPLICATION_SERVICE_ROLE());
|
226
|
-
}
|
227
|
-
|
228
|
-
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
229
|
-
// configure authorization for policy services on instance
|
230
|
-
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart());
|
231
|
-
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
|
232
|
-
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
|
233
|
-
instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
|
234
|
-
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
|
235
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
236
|
-
"Instance",
|
237
|
-
instancePolicyServiceSelectors,
|
238
|
-
POLICY_SERVICE_ROLE());
|
239
|
-
}
|
240
|
-
|
241
|
-
function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
242
|
-
// configure authorization for claim/payout services on instance
|
243
|
-
address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getVersion().toMajorPart());
|
244
|
-
clonedAccessManager.grantRole(CLAIM_SERVICE_ROLE(), claimServiceAddress);
|
245
|
-
bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
|
246
|
-
instanceClaimServiceSelectors[0] = clonedInstance.createClaim.selector;
|
247
|
-
instanceClaimServiceSelectors[1] = clonedInstance.updateClaim.selector;
|
248
|
-
instanceClaimServiceSelectors[2] = clonedInstance.createPayout.selector;
|
249
|
-
instanceClaimServiceSelectors[3] = clonedInstance.updatePayout.selector;
|
250
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
251
|
-
"Instance",
|
252
|
-
instanceClaimServiceSelectors,
|
253
|
-
CLAIM_SERVICE_ROLE());
|
254
|
-
}
|
255
|
-
|
256
|
-
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
257
|
-
// configure authorization for bundle service on instance
|
258
|
-
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart());
|
259
|
-
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
260
|
-
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
|
261
|
-
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
262
|
-
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
263
|
-
instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
|
264
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
265
|
-
"Instance",
|
266
|
-
instanceBundleServiceSelectors,
|
267
|
-
BUNDLE_SERVICE_ROLE());
|
268
|
-
|
269
|
-
// configure authorization for bundle service on bundle manager
|
270
|
-
bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
|
271
|
-
bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
|
272
|
-
bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
|
273
|
-
bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
|
274
|
-
bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
|
275
|
-
bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
|
276
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
277
|
-
"BundleManager",
|
278
|
-
bundleManagerBundleServiceSelectors,
|
279
|
-
BUNDLE_SERVICE_ROLE());
|
280
|
-
}
|
281
|
-
|
282
|
-
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
283
|
-
// configure authorization for instance service on instance
|
284
|
-
address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getVersion().toMajorPart());
|
285
|
-
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
286
|
-
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
287
|
-
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
288
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
289
|
-
"Instance",
|
290
|
-
instanceInstanceServiceSelectors,
|
291
|
-
INSTANCE_SERVICE_ROLE());
|
292
|
-
|
293
|
-
// configure authorizations for instance service on instance access manager
|
294
|
-
bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
|
295
|
-
accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
|
296
|
-
accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLocked.selector;
|
297
|
-
accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setCoreTargetFunctionRole.selector;
|
298
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
299
|
-
"InstanceAccessManager",
|
300
|
-
accessManagerInstanceServiceSelectors,
|
301
|
-
INSTANCE_SERVICE_ROLE());
|
302
|
-
}
|
303
|
-
|
304
|
-
function _grantInstanceOwnerAuthorizations(InstanceAccessManager clonedAccessManager, address instanceOwner) internal {
|
305
|
-
// configure authorization for instance owner on instance access manager
|
306
|
-
// instance owner role is granted/revoked ONLY by INSTANCE_ROLE
|
307
|
-
bytes4[] memory accessManagerInstanceOwnerSelectors = new bytes4[](3);
|
308
|
-
accessManagerInstanceOwnerSelectors[0] = clonedAccessManager.createRole.selector;
|
309
|
-
accessManagerInstanceOwnerSelectors[1] = clonedAccessManager.createTarget.selector;
|
310
|
-
accessManagerInstanceOwnerSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
|
311
|
-
clonedAccessManager.setCoreTargetFunctionRole(
|
312
|
-
"InstanceAccessManager",
|
313
|
-
accessManagerInstanceOwnerSelectors,
|
314
|
-
INSTANCE_OWNER_ROLE());
|
315
|
-
}
|
316
|
-
|
317
|
-
|
318
|
-
function setAndRegisterMasterInstance(address instanceAddress)
|
138
|
+
function setAndRegisterMasterInstance(address instanceAddress)
|
319
139
|
external
|
320
140
|
onlyOwner
|
321
141
|
returns(NftId masterInstanceNftId)
|
@@ -328,37 +148,36 @@ contract InstanceService is
|
|
328
148
|
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
329
149
|
|
330
150
|
IInstance instance = IInstance(instanceAddress);
|
331
|
-
AccessManagerUpgradeableInitializeable ozAccessManager = AccessManagerUpgradeableInitializeable(instance.authority());
|
332
|
-
address ozAccessManagerAddress = address(ozAccessManager);
|
333
151
|
InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
|
334
152
|
address instanceAccessManagerAddress = address(instanceAccessManager);
|
335
153
|
InstanceReader instanceReader = instance.getInstanceReader();
|
336
154
|
address instanceReaderAddress = address(instanceReader);
|
337
155
|
BundleManager bundleManager = instance.getBundleManager();
|
338
156
|
address bundleManagerAddress = address(bundleManager);
|
157
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
158
|
+
address instanceStoreAddress = address(instanceStore);
|
339
159
|
|
340
|
-
if(ozAccessManagerAddress == address(0)) { revert ErrorInstanceServiceOzAccessManagerZero();}
|
341
160
|
if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
|
342
161
|
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
343
162
|
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
|
163
|
+
if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
|
344
164
|
|
345
165
|
if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
346
166
|
if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
|
347
|
-
if(
|
167
|
+
if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
|
348
168
|
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
169
|
+
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
349
170
|
|
350
|
-
_masterOzAccessManager =
|
171
|
+
_masterOzAccessManager = instance.authority();
|
351
172
|
_masterInstanceAccessManager = instanceAccessManagerAddress;
|
352
173
|
_masterInstance = instanceAddress;
|
353
174
|
_masterInstanceReader = instanceReaderAddress;
|
354
175
|
_masterInstanceBundleManager = bundleManagerAddress;
|
176
|
+
_masterInstanceStore = instanceStoreAddress;
|
355
177
|
|
356
|
-
IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getVersion().toMajorPart()));
|
357
178
|
IInstance masterInstance = IInstance(_masterInstance);
|
358
|
-
IRegistry.ObjectInfo memory info =
|
179
|
+
IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
|
359
180
|
masterInstanceNftId = info.nftId;
|
360
|
-
|
361
|
-
// masterInstance.linkToRegisteredNftId();
|
362
181
|
}
|
363
182
|
|
364
183
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
@@ -385,32 +204,6 @@ contract InstanceService is
|
|
385
204
|
instance.setInstanceReader(upgradedInstanceReaderClone);
|
386
205
|
}
|
387
206
|
|
388
|
-
function getMasterInstanceReader() external view returns (address) {
|
389
|
-
return _masterInstanceReader;
|
390
|
-
}
|
391
|
-
|
392
|
-
// From IService
|
393
|
-
function getDomain() public pure override returns(ObjectType) {
|
394
|
-
return INSTANCE();
|
395
|
-
}
|
396
|
-
|
397
|
-
/// @dev top level initializer
|
398
|
-
function _initialize(
|
399
|
-
address owner,
|
400
|
-
bytes memory data
|
401
|
-
)
|
402
|
-
internal
|
403
|
-
initializer
|
404
|
-
virtual override
|
405
|
-
{
|
406
|
-
address initialOwner;
|
407
|
-
address registryAddress;
|
408
|
-
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
409
|
-
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
410
|
-
// owner is InstanceServiceManager deployer
|
411
|
-
initializeService(registryAddress, address(0), owner);
|
412
|
-
registerInterface(type(IInstanceService).interfaceId);
|
413
|
-
}
|
414
207
|
|
415
208
|
// all gif targets MUST be childs of instanceNftId
|
416
209
|
function createGifTarget(
|
@@ -425,13 +218,13 @@ contract InstanceService is
|
|
425
218
|
{
|
426
219
|
(
|
427
220
|
IInstance instance, // or instanceInfo
|
428
|
-
|
221
|
+
// or targetInfo
|
429
222
|
) = _validateInstanceAndComponent(instanceNftId, targetAddress);
|
430
223
|
|
431
224
|
InstanceAccessManager accessManager = instance.getInstanceAccessManager();
|
432
225
|
accessManager.createGifTarget(targetAddress, targetName);
|
433
226
|
// set proposed target config
|
434
|
-
// TODO restriction:
|
227
|
+
// TODO restriction: gif targets are set only once and only here?
|
435
228
|
// assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
|
436
229
|
for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
|
437
230
|
{
|
@@ -439,6 +232,7 @@ contract InstanceService is
|
|
439
232
|
}
|
440
233
|
}
|
441
234
|
|
235
|
+
|
442
236
|
// TODO called by component, but target can be component helper...so needs target name
|
443
237
|
// TODO check that targetName associated with component...how???
|
444
238
|
function setComponentLocked(bool locked) onlyComponent external {
|
@@ -451,11 +245,47 @@ contract InstanceService is
|
|
451
245
|
registry.getObjectInfo(
|
452
246
|
instanceNftId).objectAddress);
|
453
247
|
|
454
|
-
instance.getInstanceAccessManager().
|
248
|
+
instance.getInstanceAccessManager().setTargetLockedByService(
|
455
249
|
componentAddress,
|
456
250
|
locked);
|
457
251
|
}
|
458
252
|
|
253
|
+
|
254
|
+
function getMasterInstanceReader() external view returns (address) {
|
255
|
+
return _masterInstanceReader;
|
256
|
+
}
|
257
|
+
|
258
|
+
// From IService
|
259
|
+
function getDomain() public pure override returns(ObjectType) {
|
260
|
+
return INSTANCE();
|
261
|
+
}
|
262
|
+
|
263
|
+
/// @dev top level initializer
|
264
|
+
function _initialize(
|
265
|
+
address owner,
|
266
|
+
bytes memory data
|
267
|
+
)
|
268
|
+
internal
|
269
|
+
initializer
|
270
|
+
virtual override
|
271
|
+
{
|
272
|
+
(
|
273
|
+
address registryAddress,
|
274
|
+
address initialOwner
|
275
|
+
) = abi.decode(data, (address, address));
|
276
|
+
|
277
|
+
_registryService = IRegistryService(
|
278
|
+
IRegistry(registryAddress).getServiceAddress(
|
279
|
+
REGISTRY(),
|
280
|
+
getVersion().toMajorPart()));
|
281
|
+
|
282
|
+
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
283
|
+
// owner is InstanceServiceManager deployer
|
284
|
+
initializeService(registryAddress, address(0), owner);
|
285
|
+
registerInterface(type(IInstanceService).interfaceId);
|
286
|
+
}
|
287
|
+
|
288
|
+
|
459
289
|
function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
|
460
290
|
internal
|
461
291
|
view
|