@etherisc/gif-next 0.0.2-bf75dbb-287 → 0.0.2-bfb44e0-483
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 +897 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +907 -218
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +151 -84
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +798 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +662 -43
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +661 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +620 -193
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +550 -115
- 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 +725 -36
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -710
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +188 -144
- 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 +501 -264
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +178 -100
- 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 +59 -16
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/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 +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1318 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +586 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +544 -84
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +191 -33
- 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} +207 -109
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +798 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +229 -19
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IPolicyService.sol/IPolicyService.json} +369 -51
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +28 -244
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +33 -244
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1378 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +642 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +259 -351
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +166 -56
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +270 -410
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +166 -80
- 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 +236 -0
- package/contracts/components/Distribution.sol +199 -64
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +59 -3
- package/contracts/components/IPoolComponent.sol +50 -29
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +136 -149
- package/contracts/components/Product.sol +104 -115
- package/contracts/instance/BundleManager.sol +7 -11
- package/contracts/instance/IInstance.sol +39 -9
- package/contracts/instance/IInstanceService.sol +29 -4
- package/contracts/instance/Instance.sol +78 -251
- package/contracts/instance/InstanceAccessManager.sol +87 -78
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +306 -137
- 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 +27 -18
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +298 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +212 -26
- package/contracts/instance/service/DistributionServiceManager.sol +6 -9
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +54 -0
- package/contracts/instance/service/IDistributionService.sol +53 -0
- package/contracts/instance/service/IPolicyService.sol +88 -0
- package/contracts/instance/service/IPoolService.sol +2 -33
- package/contracts/instance/service/IProductService.sol +2 -72
- package/contracts/instance/service/PolicyService.sol +524 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +34 -212
- package/contracts/instance/service/PoolServiceManager.sol +5 -8
- package/contracts/instance/service/ProductService.sol +123 -460
- 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/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +6 -2
- package/contracts/types/RoleId.sol +10 -10
- 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 -368
- 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/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- 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/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -132
- package/contracts/components/IBaseComponent.sol +0 -31
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -134
- 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
@@ -0,0 +1,216 @@
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
|
+
|
7
|
+
import {RoleId, RoleIdLib,
|
8
|
+
GIF_MANAGER_ROLE,
|
9
|
+
GIF_ADMIN_ROLE,
|
10
|
+
RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
|
11
|
+
|
12
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
13
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
14
|
+
|
15
|
+
/*
|
16
|
+
4 types of roles:
|
17
|
+
1) RELEASE_MANAGER_ROLE
|
18
|
+
- has only ReleaseManager as member
|
19
|
+
- responsible for setting and granting of REGISTRAR roles
|
20
|
+
1) REGISTRAR roles
|
21
|
+
- set and granted by RELEASE_MANAGER_ROLE
|
22
|
+
- each has 1 unique member (regular service ver.X) (subject to change)
|
23
|
+
- each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
|
24
|
+
2) GIF_MANAGER_ROLE
|
25
|
+
- can have arbitrary number of members
|
26
|
+
- responsible for services registrations
|
27
|
+
- responsible for token registration and activation
|
28
|
+
3) GIF_ADMIN_ROLE
|
29
|
+
- admin of GIF_MANAGER_ROLE
|
30
|
+
- MUST have 1 member at any time
|
31
|
+
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
32
|
+
- responsible for creation and activation of releases
|
33
|
+
|
34
|
+
*/
|
35
|
+
|
36
|
+
contract RegistryAccessManager is AccessManaged
|
37
|
+
{
|
38
|
+
error NotInitialized();
|
39
|
+
error AlreadyInitialized();
|
40
|
+
|
41
|
+
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
42
|
+
|
43
|
+
AccessManager private immutable _accessManager;
|
44
|
+
address private _releaseManager;
|
45
|
+
address private _tokenRegistry;
|
46
|
+
|
47
|
+
uint64 private _idNext; // role id
|
48
|
+
bool private _isInitialized;
|
49
|
+
|
50
|
+
modifier onlyOnce() {
|
51
|
+
if(_isInitialized) {
|
52
|
+
revert AlreadyInitialized();
|
53
|
+
}
|
54
|
+
_;
|
55
|
+
_isInitialized = true;
|
56
|
+
}
|
57
|
+
|
58
|
+
modifier onlyInitialized() {
|
59
|
+
if(!_isInitialized) {
|
60
|
+
revert NotInitialized();
|
61
|
+
}
|
62
|
+
_;
|
63
|
+
}
|
64
|
+
|
65
|
+
constructor(address manager)
|
66
|
+
AccessManaged(msg.sender)
|
67
|
+
{
|
68
|
+
_accessManager = new AccessManager(address(this));
|
69
|
+
setAuthority(address(_accessManager));
|
70
|
+
|
71
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
72
|
+
|
73
|
+
_configureAdminRoleInitial();
|
74
|
+
|
75
|
+
address admin = msg.sender;
|
76
|
+
_grantRole(GIF_ADMIN_ROLE(), admin, 0);
|
77
|
+
_grantRole(GIF_MANAGER_ROLE(), manager, 0);
|
78
|
+
}
|
79
|
+
|
80
|
+
function initialize(address releaseManager, address tokenRegistry)
|
81
|
+
external
|
82
|
+
restricted // GIF_ADMIN_ROLE
|
83
|
+
onlyOnce
|
84
|
+
{
|
85
|
+
require(
|
86
|
+
ReleaseManager(releaseManager).authority() == address(_accessManager),
|
87
|
+
"RegistryAccessManager: release manager authority is invalid");
|
88
|
+
require(tokenRegistry > address(0), "RegistryAccessManager: token registry is 0");
|
89
|
+
//require(tokenRegistry.authority() == address(_accessManager));
|
90
|
+
|
91
|
+
_releaseManager = releaseManager;
|
92
|
+
_tokenRegistry = tokenRegistry;
|
93
|
+
|
94
|
+
_configureAdminRole();
|
95
|
+
_configureManagerRole();
|
96
|
+
_configureReleaseManagerRole();
|
97
|
+
|
98
|
+
_grantRole(RELEASE_MANAGER_ROLE(), releaseManager, 0);
|
99
|
+
}
|
100
|
+
|
101
|
+
// set unique role for target, role forever have 1 member and never revoked
|
102
|
+
function setAndGrantUniqueRole(
|
103
|
+
address account,
|
104
|
+
address target,
|
105
|
+
bytes4[] memory selector
|
106
|
+
)
|
107
|
+
external
|
108
|
+
restricted // RELEASE_MANAGER_ROLE
|
109
|
+
onlyInitialized
|
110
|
+
returns(RoleId)
|
111
|
+
{
|
112
|
+
// TODO questionable check...
|
113
|
+
// target is not part of `runtime`
|
114
|
+
//if(
|
115
|
+
// target == address(this) ||
|
116
|
+
// target == address(_accessManager) ||
|
117
|
+
// target == _releaseManager ||
|
118
|
+
// target == _tokenRegistry)
|
119
|
+
//{ return TargetInvalid(); }
|
120
|
+
|
121
|
+
RoleId roleId = _getNextRoleId();
|
122
|
+
|
123
|
+
_setTargetFunctionRole(target, selector, roleId);
|
124
|
+
_grantRole(roleId, account, 0);
|
125
|
+
}
|
126
|
+
|
127
|
+
/*function transferAdmin(address to)
|
128
|
+
external
|
129
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
130
|
+
{
|
131
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
132
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
133
|
+
}*/
|
134
|
+
|
135
|
+
//--- view functions ----------------------------------------------------//
|
136
|
+
|
137
|
+
function getAccessManager()
|
138
|
+
external
|
139
|
+
view
|
140
|
+
returns (AccessManager)
|
141
|
+
{
|
142
|
+
return _accessManager;
|
143
|
+
}
|
144
|
+
|
145
|
+
//--- private functions -------------------------------------------------//
|
146
|
+
|
147
|
+
function _configureAdminRoleInitial() private
|
148
|
+
{
|
149
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
150
|
+
|
151
|
+
functionSelector[0] = RegistryAccessManager.initialize.selector;
|
152
|
+
_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
|
153
|
+
}
|
154
|
+
|
155
|
+
function _configureAdminRole() private
|
156
|
+
{
|
157
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
158
|
+
|
159
|
+
// for RegistryServiceProxyManager
|
160
|
+
// TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
|
161
|
+
//functionSelector[0] = RegistryServiceManager.upgrade.selector;
|
162
|
+
//_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
|
163
|
+
|
164
|
+
// for TokenRegistry
|
165
|
+
|
166
|
+
// for ReleaseManager
|
167
|
+
functionSelector[0] = ReleaseManager.createNextRelease.selector;
|
168
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
169
|
+
|
170
|
+
functionSelector[0] = ReleaseManager.activateNextRelease.selector;
|
171
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
172
|
+
}
|
173
|
+
|
174
|
+
function _configureManagerRole() private
|
175
|
+
{
|
176
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
177
|
+
|
178
|
+
// for TokenRegistry
|
179
|
+
functionSelector[0] = TokenRegistry.setActive.selector;
|
180
|
+
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
|
181
|
+
|
182
|
+
// for ReleaseManager
|
183
|
+
functionSelector[0] = ReleaseManager.registerService.selector;
|
184
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
185
|
+
|
186
|
+
functionSelector[0] = ReleaseManager.registerRegistryService.selector;
|
187
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
188
|
+
|
189
|
+
// set admin
|
190
|
+
_setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
|
191
|
+
}
|
192
|
+
|
193
|
+
function _configureReleaseManagerRole() private
|
194
|
+
{
|
195
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
196
|
+
|
197
|
+
functionSelector[0] = RegistryAccessManager.setAndGrantUniqueRole.selector;
|
198
|
+
_setTargetFunctionRole(address(this), functionSelector, RELEASE_MANAGER_ROLE());
|
199
|
+
}
|
200
|
+
|
201
|
+
function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) private {
|
202
|
+
_accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
|
203
|
+
}
|
204
|
+
|
205
|
+
function _setRoleAdmin(RoleId roleId, RoleId adminRoleId) private {
|
206
|
+
_accessManager.setRoleAdmin(roleId.toInt(), adminRoleId.toInt());
|
207
|
+
}
|
208
|
+
|
209
|
+
function _grantRole(RoleId roleId, address account, uint32 executionDelay) private {
|
210
|
+
_accessManager.grantRole(roleId.toInt(), account, executionDelay);
|
211
|
+
}
|
212
|
+
|
213
|
+
function _getNextRoleId() private returns(RoleId roleId) {
|
214
|
+
roleId = RoleIdLib.toRoleId(_idNext++);
|
215
|
+
}
|
216
|
+
}
|
@@ -8,7 +8,7 @@ import {IRegistry} from "./IRegistry.sol";
|
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
|
10
10
|
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
11
|
-
import {
|
11
|
+
import {IComponent} from "../../contracts/components/IComponent.sol";
|
12
12
|
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
13
13
|
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
14
14
|
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
@@ -16,6 +16,7 @@ import {IDistributionComponent} from "../../contracts/components/IDistributionCo
|
|
16
16
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
17
17
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
18
18
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
19
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
19
20
|
|
20
21
|
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
21
22
|
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
@@ -36,75 +37,31 @@ contract RegistryService is
|
|
36
37
|
{
|
37
38
|
using NftIdLib for NftId;
|
38
39
|
|
39
|
-
|
40
|
-
// Initial value for constant variable has to be compile-time constant
|
41
|
-
// TODO define types as constants?
|
42
|
-
//ObjectType public constant SERVICE_TYPE = REGISTRY();
|
43
|
-
string public constant NAME = "RegistryService";
|
44
|
-
|
45
40
|
// TODO update to real hash when registry is stable
|
46
41
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
47
42
|
|
48
|
-
|
49
|
-
|
50
|
-
/// @dev
|
51
|
-
// msg.sender - ONLY registry owner
|
52
|
-
// CAN NOT register itself
|
53
|
-
// CAN register ONLY valid object-parent types combinations for SERVICE
|
54
|
-
// CAN register ONLY IRegisterable address he owns
|
55
|
-
// IMPORTANT: MUST NOT check owner before calling external contract
|
56
|
-
function registerService(IService service)
|
43
|
+
function registerInstance(IRegisterable instance, address owner)
|
57
44
|
external
|
58
45
|
restricted
|
59
46
|
returns(
|
60
|
-
IRegistry.ObjectInfo memory info
|
61
|
-
bytes memory data
|
62
|
-
)
|
63
|
-
{
|
64
|
-
|
65
|
-
// CAN revert if no ERC165 support -> will revert with empty message
|
66
|
-
if(!service.supportsInterface(type(IService).interfaceId)) {
|
67
|
-
revert NotService();
|
68
|
-
}
|
69
|
-
|
70
|
-
(
|
71
|
-
info,
|
72
|
-
data
|
73
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
74
|
-
|
75
|
-
info.nftId = _registry.register(info);
|
76
|
-
service.linkToRegisteredNftId();
|
77
|
-
return (info, data);
|
78
|
-
}
|
79
|
-
|
80
|
-
function registerInstance(IRegisterable instance)
|
81
|
-
external
|
82
|
-
returns(
|
83
|
-
IRegistry.ObjectInfo memory info,
|
84
|
-
bytes memory data
|
47
|
+
IRegistry.ObjectInfo memory info
|
85
48
|
)
|
86
49
|
{
|
87
50
|
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
88
51
|
revert NotInstance();
|
89
52
|
}
|
90
53
|
|
91
|
-
(
|
92
|
-
|
93
|
-
data
|
94
|
-
) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
|
54
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
55
|
+
info.nftId = getRegistry().register(info);
|
95
56
|
|
96
|
-
info.nftId = _registry.register(info);
|
97
57
|
instance.linkToRegisteredNftId(); // asume safe
|
98
|
-
|
99
|
-
return (info, data);
|
100
58
|
}
|
101
59
|
|
102
|
-
function registerProduct(
|
60
|
+
function registerProduct(IComponent product, address owner)
|
103
61
|
external
|
104
62
|
restricted
|
105
63
|
returns(
|
106
|
-
IRegistry.ObjectInfo memory info
|
107
|
-
bytes memory data
|
64
|
+
IRegistry.ObjectInfo memory info
|
108
65
|
)
|
109
66
|
{
|
110
67
|
// CAN revert if no ERC165 support -> will revert with empty message
|
@@ -112,62 +69,38 @@ contract RegistryService is
|
|
112
69
|
revert NotProduct();
|
113
70
|
}
|
114
71
|
|
115
|
-
(
|
116
|
-
|
117
|
-
data
|
118
|
-
) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
119
|
-
|
120
|
-
info.nftId = _registry.register(info);
|
121
|
-
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
122
|
-
product.linkToRegisteredNftId();
|
123
|
-
|
124
|
-
return (info, data);
|
72
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
73
|
+
info.nftId = getRegistry().register(info);
|
125
74
|
}
|
126
75
|
|
127
|
-
function registerPool(
|
76
|
+
function registerPool(IComponent pool, address owner)
|
128
77
|
external
|
129
78
|
restricted
|
130
79
|
returns(
|
131
|
-
IRegistry.ObjectInfo memory info
|
132
|
-
bytes memory data
|
80
|
+
IRegistry.ObjectInfo memory info
|
133
81
|
)
|
134
82
|
{
|
135
83
|
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
136
84
|
revert NotPool();
|
137
85
|
}
|
138
86
|
|
139
|
-
(
|
140
|
-
|
141
|
-
data
|
142
|
-
) = _getAndVerifyContractInfo(pool, POOL(), owner);
|
143
|
-
|
144
|
-
info.nftId = _registry.register(info);
|
145
|
-
pool.linkToRegisteredNftId();
|
146
|
-
|
147
|
-
return (info, data);
|
87
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
88
|
+
info.nftId = getRegistry().register(info);
|
148
89
|
}
|
149
90
|
|
150
|
-
function registerDistribution(
|
91
|
+
function registerDistribution(IComponent distribution, address owner)
|
151
92
|
external
|
152
93
|
restricted
|
153
94
|
returns(
|
154
|
-
IRegistry.ObjectInfo memory info
|
155
|
-
bytes memory data
|
95
|
+
IRegistry.ObjectInfo memory info
|
156
96
|
)
|
157
97
|
{
|
158
98
|
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
159
99
|
revert NotDistribution();
|
160
100
|
}
|
161
101
|
|
162
|
-
(
|
163
|
-
|
164
|
-
data
|
165
|
-
) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
166
|
-
|
167
|
-
info.nftId = _registry.register(info);
|
168
|
-
distribution.linkToRegisteredNftId();
|
169
|
-
|
170
|
-
return (info, data);
|
102
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
103
|
+
info.nftId = getRegistry().register(info);
|
171
104
|
}
|
172
105
|
|
173
106
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
@@ -177,7 +110,7 @@ contract RegistryService is
|
|
177
110
|
{
|
178
111
|
_verifyObjectInfo(info, POLICY());
|
179
112
|
|
180
|
-
nftId =
|
113
|
+
nftId = getRegistry().register(info);
|
181
114
|
}
|
182
115
|
|
183
116
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
@@ -187,7 +120,7 @@ contract RegistryService is
|
|
187
120
|
{
|
188
121
|
_verifyObjectInfo(info, BUNDLE());
|
189
122
|
|
190
|
-
nftId =
|
123
|
+
nftId = getRegistry().register(info);
|
191
124
|
}
|
192
125
|
|
193
126
|
function registerStake(IRegistry.ObjectInfo memory info)
|
@@ -197,25 +130,17 @@ contract RegistryService is
|
|
197
130
|
{
|
198
131
|
_verifyObjectInfo(info, STAKE());
|
199
132
|
|
200
|
-
nftId =
|
133
|
+
nftId = getRegistry().register(info);
|
201
134
|
}
|
202
135
|
|
203
136
|
// From IService
|
204
|
-
function
|
205
|
-
return
|
137
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
138
|
+
return REGISTRY();
|
206
139
|
}
|
207
|
-
//function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
|
208
|
-
// return SERVICE_TYPE;
|
209
|
-
//}
|
210
|
-
|
211
140
|
|
212
141
|
// from Versionable
|
213
142
|
|
214
143
|
/// @dev top level initializer
|
215
|
-
// 1) registry is non upgradeable -> don't need a proxy and uses constructor !
|
216
|
-
// 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
|
217
|
-
// 3) deploy registry -> pass registry service address as constructor argument
|
218
|
-
// registry is getting instantiated and locked to registry service address forever
|
219
144
|
function _initialize(
|
220
145
|
address owner,
|
221
146
|
bytes memory data
|
@@ -226,49 +151,64 @@ contract RegistryService is
|
|
226
151
|
{
|
227
152
|
(
|
228
153
|
address initialAuthority,
|
229
|
-
|
230
|
-
) = abi.decode(data, (address,
|
154
|
+
address registry
|
155
|
+
) = abi.decode(data, (address, address));
|
231
156
|
|
232
157
|
__AccessManaged_init(initialAuthority);
|
233
158
|
|
234
|
-
|
235
|
-
|
236
|
-
|
159
|
+
initializeService(address(registry), owner);
|
160
|
+
registerInterface(type(IRegistryService).interfaceId);
|
161
|
+
}
|
162
|
+
|
163
|
+
// from IRegisterable
|
164
|
+
|
165
|
+
function getFunctionConfigs()
|
166
|
+
external
|
167
|
+
pure
|
168
|
+
returns(
|
169
|
+
FunctionConfig[] memory config
|
170
|
+
)
|
171
|
+
{
|
172
|
+
config = new FunctionConfig[](6);
|
173
|
+
|
174
|
+
// order of service registrations MUST be reverse to this array
|
175
|
+
/*config[-1].serviceDomain = STAKE();
|
176
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
177
|
+
|
178
|
+
config[0].serviceDomain = POLICY();
|
179
|
+
config[0].selector = RegistryService.registerPolicy.selector;
|
237
180
|
|
238
|
-
|
239
|
-
|
240
|
-
encodedConstructorArguments);
|
181
|
+
config[1].serviceDomain = BUNDLE();
|
182
|
+
config[1].selector = RegistryService.registerBundle.selector;
|
241
183
|
|
242
|
-
|
243
|
-
|
244
|
-
REGISTRY_CREATION_CODE_HASH));
|
184
|
+
config[2].serviceDomain = PRODUCT();
|
185
|
+
config[2].selector = RegistryService.registerProduct.selector;
|
245
186
|
|
246
|
-
|
187
|
+
config[3].serviceDomain = POOL();
|
188
|
+
config[3].selector = RegistryService.registerPool.selector;
|
247
189
|
|
248
|
-
|
190
|
+
config[4].serviceDomain = DISTRIBUTION();
|
191
|
+
config[4].selector = RegistryService.registerDistribution.selector;
|
249
192
|
|
250
|
-
//
|
251
|
-
|
252
|
-
|
253
|
-
_registerInterface(type(IRegistryService).interfaceId);
|
193
|
+
// registerInstance() have no restriction
|
194
|
+
config[5].serviceDomain = INSTANCE();
|
195
|
+
config[5].selector = RegistryService.registerInstance.selector;
|
254
196
|
}
|
255
197
|
|
198
|
+
// Internal
|
199
|
+
|
256
200
|
function _getAndVerifyContractInfo(
|
257
201
|
IRegisterable registerable,
|
258
202
|
ObjectType expectedType, // assume can be valid only
|
259
|
-
address expectedOwner // assume can be 0
|
203
|
+
address expectedOwner // assume can be 0 when given by other service
|
260
204
|
)
|
261
205
|
internal
|
262
|
-
view
|
206
|
+
// view
|
263
207
|
returns(
|
264
|
-
IRegistry.ObjectInfo memory info
|
265
|
-
bytes memory data
|
208
|
+
IRegistry.ObjectInfo memory info
|
266
209
|
)
|
267
210
|
{
|
268
|
-
(
|
269
|
-
info,
|
270
|
-
data
|
271
|
-
) = registerable.getInitialInfo();
|
211
|
+
info = registerable.getInitialInfo();
|
272
212
|
info.objectAddress = address(registerable);
|
273
213
|
|
274
214
|
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
@@ -277,13 +217,8 @@ contract RegistryService is
|
|
277
217
|
|
278
218
|
address owner = info.initialOwner;
|
279
219
|
|
280
|
-
//
|
281
|
-
|
282
|
-
// any address may create a new instance via instance service
|
283
|
-
} else {
|
284
|
-
if(owner != expectedOwner) { // registerable owner protection
|
285
|
-
revert NotRegisterableOwner(expectedOwner);
|
286
|
-
}
|
220
|
+
if(owner != expectedOwner) { // registerable owner protection
|
221
|
+
revert NotRegisterableOwner(expectedOwner);
|
287
222
|
}
|
288
223
|
|
289
224
|
if(owner == address(registerable)) {
|
@@ -297,18 +232,6 @@ contract RegistryService is
|
|
297
232
|
if(getRegistry().isRegistered(owner)) {
|
298
233
|
revert RegisterableOwnerIsRegistered();
|
299
234
|
}
|
300
|
-
|
301
|
-
/*NftId parentNftId = info.parentNftId;
|
302
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
303
|
-
|
304
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
305
|
-
revert InvalidParent(parentNftId);
|
306
|
-
}*/
|
307
|
-
|
308
|
-
return(
|
309
|
-
info,
|
310
|
-
data
|
311
|
-
);
|
312
235
|
}
|
313
236
|
|
314
237
|
function _verifyObjectInfo(
|
@@ -334,25 +257,5 @@ contract RegistryService is
|
|
334
257
|
if(getRegistry().isRegistered(owner)) {
|
335
258
|
revert RegisterableOwnerIsRegistered();
|
336
259
|
}
|
337
|
-
|
338
|
-
// can catch all 3 if check that initialOwner is not registered
|
339
|
-
/*if(info.initialOwner == msg.sender) {
|
340
|
-
revert InitialOwnerIsParent();
|
341
|
-
}
|
342
|
-
|
343
|
-
if(info.initialOwner == address(this)) {
|
344
|
-
revert InitialOwnerIsService();
|
345
|
-
}
|
346
|
-
|
347
|
-
if(info.initialOwner == address(getRegistry())) {
|
348
|
-
revert InitialOwnerIsRegistry();
|
349
|
-
}*/
|
350
|
-
|
351
|
-
/*NftId parentNftId = info.parentNftId;
|
352
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
353
|
-
|
354
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
355
|
-
revert InvalidParent(parentNftId);
|
356
|
-
}*/
|
357
260
|
}
|
358
261
|
}
|
@@ -17,51 +17,41 @@ contract RegistryServiceManager is
|
|
17
17
|
{
|
18
18
|
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
19
19
|
|
20
|
-
|
21
|
-
RegistryService private _registryService;
|
22
|
-
TokenRegistry private _tokenRegistry;
|
20
|
+
RegistryService private immutable _registryService;
|
23
21
|
|
24
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
25
23
|
constructor(
|
26
|
-
address
|
27
|
-
|
24
|
+
address initialAuthority, // used by implementation
|
25
|
+
address registry) // used by implementation
|
28
26
|
ProxyManager()
|
29
27
|
{
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
29
|
+
require(registry > address(0), "RegistryServiceManager: registry is 0");
|
30
|
+
|
31
|
+
// implementation's initializer func `data` argument
|
32
|
+
bytes memory initializationData = abi.encode(
|
33
|
+
initialAuthority,
|
34
|
+
registry);
|
33
35
|
|
34
36
|
IVersionable versionable = deploy(
|
35
37
|
address(new RegistryService()),
|
36
38
|
initializationData);
|
37
39
|
|
38
40
|
_registryService = RegistryService(address(versionable));
|
39
|
-
|
40
|
-
// link ownership of registry service manager ot nft owner of registry service
|
41
|
-
_linkToNftOwnable(
|
42
|
-
address(_registryService.getRegistry()),
|
43
|
-
address(_registryService));
|
44
|
-
|
45
|
-
// deploy token registry
|
46
|
-
|
47
|
-
// _tokenRegistry = new TokenRegistry(
|
48
|
-
// address(_registryService.getRegistry()),
|
49
|
-
// address(_registryService));
|
50
|
-
|
51
|
-
// implies that after this constructor call only upgrade functionality is available
|
52
|
-
_isDeployed = true;
|
53
41
|
}
|
54
42
|
|
55
|
-
|
43
|
+
// from IRegisterable
|
56
44
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
45
|
+
// IMPORTANT: registry here and in constructor MUST be the same
|
46
|
+
function linkToNftOwnable(address registry)
|
47
|
+
public
|
48
|
+
onlyOwner
|
61
49
|
{
|
62
|
-
|
50
|
+
_linkToNftOwnable(registry, address(_registryService));
|
63
51
|
}
|
64
52
|
|
53
|
+
//--- view functions ----------------------------------------------------//
|
54
|
+
|
65
55
|
function getRegistryService()
|
66
56
|
external
|
67
57
|
view
|
@@ -69,12 +59,4 @@ contract RegistryServiceManager is
|
|
69
59
|
{
|
70
60
|
return _registryService;
|
71
61
|
}
|
72
|
-
|
73
|
-
function getTokenRegistry()
|
74
|
-
external
|
75
|
-
view
|
76
|
-
returns (TokenRegistry)
|
77
|
-
{
|
78
|
-
return _tokenRegistry;
|
79
|
-
}
|
80
62
|
}
|