@etherisc/gif-next 0.0.2-a6f9f86-582 → 0.0.2-a7954cc-097
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 +171 -2
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/BaseComponent.sol/BaseComponent.json} +262 -237
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +675 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +156 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +275 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +157 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/components/Pool.sol/Pool.json +842 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/components/Product.sol/Product.json +775 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- 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/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1737 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +570 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +465 -950
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +244 -114
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +871 -25
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +532 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -77
- 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 +10 -244
- 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/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +945 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +432 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +814 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +693 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +420 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +499 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +536 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +993 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +727 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +420 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +777 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +150 -70
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +259 -28
- 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 +125 -212
- 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 +271 -89
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +57 -82
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +546 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +14 -14
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +15 -15
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -6
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +111 -5
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +31 -31
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +159 -0
- package/contracts/components/Distribution.sol +163 -0
- package/contracts/components/IBaseComponent.sol +17 -2
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +66 -0
- package/contracts/components/IProductComponent.sol +35 -0
- package/contracts/components/Pool.sol +271 -0
- package/contracts/components/Product.sol +292 -0
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +62 -0
- package/contracts/instance/IInstanceBase.sol +26 -0
- package/contracts/instance/IInstanceService.sol +40 -0
- package/contracts/instance/Instance.sol +89 -203
- package/contracts/instance/InstanceAccessManager.sol +96 -81
- package/contracts/instance/InstanceBase.sol +41 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +327 -22
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +82 -0
- package/contracts/instance/base/IInstanceBase.sol +23 -0
- package/contracts/instance/base/IKeyValueStore.sol +5 -4
- package/contracts/instance/base/KeyValueStore.sol +4 -20
- package/contracts/instance/module/IAccess.sol +29 -19
- package/contracts/instance/module/IBundle.sol +1 -0
- package/contracts/instance/module/ISetup.sol +6 -1
- package/contracts/instance/module/ITreasury.sol +1 -1
- package/contracts/instance/service/BundleService.sol +260 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ComponentOwnerService.sol +315 -0
- package/contracts/instance/service/DistributionService.sol +113 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +45 -0
- package/contracts/instance/service/IComponentOwnerService.sol +20 -0
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPolicyService.sol +87 -0
- package/contracts/instance/service/IPoolService.sol +20 -0
- package/contracts/instance/service/IProductService.sol +40 -0
- package/contracts/instance/service/PolicyService.sol +503 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +124 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +170 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +41 -26
- package/contracts/registry/IRegistry.sol +43 -25
- package/contracts/registry/IRegistryService.sol +53 -24
- package/contracts/registry/Registry.sol +212 -307
- package/contracts/registry/RegistryAccessManager.sol +210 -0
- package/contracts/registry/RegistryService.sol +158 -204
- package/contracts/registry/RegistryServiceManager.sol +28 -9
- package/contracts/registry/ReleaseManager.sol +348 -0
- package/contracts/registry/TokenRegistry.sol +110 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/IRegisterable.sol +1 -1
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/NftOwnable.sol +2 -4
- package/contracts/shared/ProxyManager.sol +4 -4
- package/contracts/shared/Registerable.sol +3 -2
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +58 -0
- package/contracts/shared/TokenHandler.sol +2 -2
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +6 -6
- package/contracts/test/TestService.sol +6 -7
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/RoleId.sol +19 -4
- package/contracts/types/StateId.sol +4 -0
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +4 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
- 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/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/instance/AccessManagedSimple.sol +0 -114
- package/contracts/instance/AccessManagerSimple.sol +0 -682
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/ServiceBase.sol +0 -44
- package/contracts/registry/IChainNft.sol +0 -22
@@ -1,284 +1,233 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
6
|
|
6
|
-
import {IRegistry} from "
|
7
|
-
|
7
|
+
import {IRegistry} from "./IRegistry.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
9
|
|
9
10
|
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
10
|
-
// import {IComponent, IComponentModule} from "../../contracts/instance/module/component/IComponent.sol";
|
11
|
-
// import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
|
12
11
|
import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
13
|
+
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
14
|
+
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
16
15
|
|
17
16
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
18
17
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
19
18
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
19
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
20
20
|
|
21
|
-
import {RoleId} from "../../contracts/types/RoleId.sol";
|
22
|
-
import {ObjectType, REGISTRY,
|
21
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
22
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
23
23
|
import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
|
24
24
|
import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
|
25
25
|
import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
|
26
26
|
import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
|
27
27
|
|
28
|
-
import {
|
29
|
-
import {IService} from "
|
28
|
+
import {Service} from "../shared/Service.sol";
|
29
|
+
import {IService} from "../shared/IService.sol";
|
30
30
|
import {IRegistryService} from "./IRegistryService.sol";
|
31
|
-
import {Registry} from "
|
31
|
+
import {Registry} from "./Registry.sol";
|
32
32
|
|
33
33
|
contract RegistryService is
|
34
|
-
|
34
|
+
AccessManagedUpgradeable,
|
35
|
+
Service,
|
35
36
|
IRegistryService
|
36
37
|
{
|
37
38
|
using NftIdLib for NftId;
|
38
39
|
|
39
|
-
error NotRegistryOwner();
|
40
|
-
error MissingAllowance();
|
41
|
-
|
42
|
-
error NotToken();
|
43
|
-
error NotService();
|
44
|
-
error NotComponent();
|
45
|
-
error NotInstance();
|
46
|
-
|
47
|
-
error InvalidAddress(address registerableAddress);
|
48
|
-
error InvalidInitialOwner(address initialOwner);
|
49
|
-
error SelfRegistration();
|
50
|
-
error InvalidType(ObjectType objectType);
|
51
|
-
|
52
|
-
string public constant NAME = "RegistryService";
|
53
|
-
|
54
40
|
// TODO update to real hash when registry is stable
|
55
41
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
56
42
|
|
57
|
-
address constant
|
58
|
-
|
59
|
-
/// @dev
|
60
|
-
// msg.sender - ONLY registry owner
|
61
|
-
// CAN register ANY non IRegisterable address
|
62
|
-
// CAN register ONLY valid object-parent types combinations for TOKEN
|
63
|
-
// CAN NOT register itself
|
64
|
-
// IMPORTANT: MUST NOT call untrusted contract inbetween calls to registry/instance (trusted contracts)
|
65
|
-
// motivation: registry/instance state may change during external call
|
66
|
-
// TODO it may be usefull to have transferable token nft in order to delist token, make it invalid for new beginings
|
67
|
-
// TODO: MUST prohibit registration of precompiles addresses
|
68
|
-
function registerToken(address tokenAddress)
|
69
|
-
external
|
70
|
-
returns(NftId nftId)
|
71
|
-
{
|
72
|
-
IRegisterable registerable = IRegisterable(tokenAddress);
|
73
|
-
bool isRegisterable;
|
74
|
-
|
75
|
-
// registryOwner can not register IRegisterable as TOKEN
|
76
|
-
try registerable.supportsInterface(type(IRegisterable).interfaceId) returns(bool result) {
|
77
|
-
isRegisterable = result;
|
78
|
-
} catch {
|
79
|
-
isRegisterable = false;
|
80
|
-
}
|
43
|
+
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
81
44
|
|
82
|
-
if(isRegisterable) {
|
83
|
-
revert NotToken();
|
84
|
-
}
|
85
45
|
|
86
|
-
|
87
|
-
|
88
|
-
|
46
|
+
function registerInstance(IRegisterable instance)
|
47
|
+
external
|
48
|
+
returns(
|
49
|
+
IRegistry.ObjectInfo memory info,
|
50
|
+
bytes memory data
|
51
|
+
)
|
52
|
+
{
|
53
|
+
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
54
|
+
revert NotInstance();
|
89
55
|
}
|
90
56
|
|
91
|
-
|
92
|
-
zeroNftId(), // any value
|
93
|
-
registryNftId, // parent nft id
|
94
|
-
TOKEN(),
|
95
|
-
false, // isInterceptor
|
96
|
-
tokenAddress,
|
97
|
-
NFT_LOCK_ADDRESS,
|
98
|
-
"" // any value
|
99
|
-
);
|
57
|
+
(info, data) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
|
100
58
|
|
101
|
-
nftId = _registry.register(info);
|
59
|
+
info.nftId = _registry.register(info);
|
60
|
+
instance.linkToRegisteredNftId(); // asume safe
|
61
|
+
|
62
|
+
return (info, data);
|
102
63
|
}
|
103
64
|
|
104
|
-
|
105
|
-
// msg.sender - ONLY registry owner
|
106
|
-
// CAN register ONLY valid object-parent types combinations for SERVICE
|
107
|
-
// CAN register ONLY IRegisterable address he owns
|
108
|
-
// CAN NOT register itself
|
109
|
-
// IMPORTANT: MUST NOT check owner before calling external contract
|
110
|
-
function registerService(IService service)
|
65
|
+
function registerProduct(IBaseComponent product, address owner)
|
111
66
|
external
|
67
|
+
restricted
|
112
68
|
returns(
|
113
69
|
IRegistry.ObjectInfo memory info,
|
114
70
|
bytes memory data
|
115
71
|
)
|
116
72
|
{
|
117
|
-
if
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
(
|
122
|
-
info,
|
123
|
-
data
|
124
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
125
|
-
|
126
|
-
NftId registryNftId = _registry.getNftId(address(_registry));
|
127
|
-
if(msg.sender != _registry.ownerOf(registryNftId)) {
|
128
|
-
revert NotRegistryOwner();
|
73
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
74
|
+
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
75
|
+
revert NotProduct();
|
129
76
|
}
|
130
77
|
|
131
|
-
info
|
78
|
+
(info, data) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
79
|
+
|
132
80
|
info.nftId = _registry.register(info);
|
133
|
-
|
81
|
+
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
82
|
+
product.linkToRegisteredNftId();
|
134
83
|
|
135
|
-
return (
|
136
|
-
info,
|
137
|
-
data
|
138
|
-
);
|
84
|
+
return (info, data);
|
139
85
|
}
|
140
86
|
|
141
|
-
|
142
|
-
//function registerComponent(IBaseComponent component, ObjectType componentType)
|
143
|
-
function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
|
87
|
+
function registerPool(IBaseComponent pool, address owner)
|
144
88
|
external
|
89
|
+
restricted
|
145
90
|
returns(
|
146
91
|
IRegistry.ObjectInfo memory info,
|
147
92
|
bytes memory data
|
148
93
|
)
|
149
94
|
{
|
150
|
-
if(!
|
151
|
-
revert
|
95
|
+
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
96
|
+
revert NotPool();
|
152
97
|
}
|
153
98
|
|
154
|
-
(
|
155
|
-
info,
|
156
|
-
data
|
157
|
-
) = _getAndVerifyContractInfo(component, componentType, owner);
|
158
|
-
|
159
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
160
|
-
|
161
|
-
if(!_registry.allowance(serviceNftId, componentType)) {
|
162
|
-
revert MissingAllowance();
|
163
|
-
}
|
99
|
+
(info, data) = _getAndVerifyContractInfo(pool, POOL(), owner);
|
164
100
|
|
165
101
|
info.nftId = _registry.register(info);
|
166
|
-
|
102
|
+
pool.linkToRegisteredNftId();
|
167
103
|
|
168
|
-
return (
|
169
|
-
info,
|
170
|
-
data
|
171
|
-
);
|
104
|
+
return (info, data);
|
172
105
|
}
|
173
106
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
external
|
107
|
+
function registerDistribution(IBaseComponent distribution, address owner)
|
108
|
+
external
|
109
|
+
restricted
|
178
110
|
returns(
|
179
111
|
IRegistry.ObjectInfo memory info,
|
180
112
|
bytes memory data
|
181
113
|
)
|
182
114
|
{
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
// info.nftId = _registry.register(info);
|
194
|
-
// instance.linkToRegisteredNftId();
|
195
|
-
|
196
|
-
// return (
|
197
|
-
// info,
|
198
|
-
// data
|
199
|
-
// );
|
115
|
+
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
116
|
+
revert NotDistribution();
|
117
|
+
}
|
118
|
+
|
119
|
+
(info, data) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
120
|
+
|
121
|
+
info.nftId = _registry.register(info);
|
122
|
+
distribution.linkToRegisteredNftId();
|
123
|
+
|
124
|
+
return (info, data);
|
200
125
|
}
|
201
126
|
|
202
127
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
203
|
-
external
|
128
|
+
external
|
129
|
+
restricted
|
204
130
|
returns(NftId nftId)
|
205
131
|
{
|
206
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
207
|
-
|
208
|
-
if(_registry.allowance(senderNftId, POLICY()) == false) {
|
209
|
-
revert MissingAllowance();
|
210
|
-
}
|
211
|
-
|
212
132
|
_verifyObjectInfo(info, POLICY());
|
213
133
|
|
214
134
|
nftId = _registry.register(info);
|
215
135
|
}
|
216
136
|
|
217
137
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
218
|
-
external
|
138
|
+
external
|
139
|
+
restricted
|
219
140
|
returns(NftId nftId)
|
220
141
|
{
|
221
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
222
|
-
|
223
|
-
if(_registry.allowance(senderNftId, BUNDLE()) == false) {
|
224
|
-
revert MissingAllowance();
|
225
|
-
}
|
226
|
-
|
227
142
|
_verifyObjectInfo(info, BUNDLE());
|
228
143
|
|
229
144
|
nftId = _registry.register(info);
|
230
145
|
}
|
231
146
|
|
147
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
148
|
+
external
|
149
|
+
restricted
|
150
|
+
returns(NftId nftId)
|
151
|
+
{
|
152
|
+
_verifyObjectInfo(info, STAKE());
|
232
153
|
|
233
|
-
|
234
|
-
function getName() public pure override(IService, ServiceBase) returns(string memory) {
|
235
|
-
return NAME;
|
154
|
+
nftId = _registry.register(info);
|
236
155
|
}
|
237
156
|
|
157
|
+
// From IService
|
158
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
159
|
+
return REGISTRY();
|
160
|
+
}
|
238
161
|
|
239
162
|
// from Versionable
|
240
163
|
|
241
164
|
/// @dev top level initializer
|
242
|
-
// 1) registry is non upgradeable -> don't need a proxy and uses constructor !
|
243
|
-
// 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
|
244
|
-
// 3) deploy registry -> pass registry service address as constructor argument
|
245
|
-
// registry is getting instantiated and locked to registry service address forever
|
246
165
|
function _initialize(
|
247
166
|
address owner,
|
248
|
-
bytes memory
|
167
|
+
bytes memory data
|
249
168
|
)
|
250
169
|
internal
|
251
170
|
initializer
|
252
171
|
virtual override
|
253
172
|
{
|
254
|
-
|
255
|
-
|
256
|
-
|
173
|
+
(
|
174
|
+
address initialAuthority,
|
175
|
+
address registry
|
176
|
+
) = abi.decode(data, (address, address));
|
177
|
+
|
178
|
+
__AccessManaged_init(initialAuthority);
|
179
|
+
|
180
|
+
_initializeService(address(registry), owner);
|
257
181
|
|
258
|
-
|
259
|
-
|
260
|
-
encodedConstructorArguments);
|
182
|
+
_registerInterface(type(IRegistryService).interfaceId);
|
183
|
+
}
|
261
184
|
|
262
|
-
|
263
|
-
registryCreationCode,
|
264
|
-
REGISTRY_CREATION_CODE_HASH);
|
185
|
+
// from IRegisterable
|
265
186
|
|
266
|
-
|
267
|
-
|
187
|
+
function getInitialInfo()
|
188
|
+
public
|
189
|
+
view
|
190
|
+
override(IRegisterable, Registerable)
|
191
|
+
returns (IRegistry.ObjectInfo memory info, bytes memory data)
|
192
|
+
{
|
193
|
+
(info , data) = super.getInitialInfo();
|
268
194
|
|
269
|
-
|
270
|
-
linkToRegisteredNftId();
|
195
|
+
FunctionConfig[] memory config = new FunctionConfig[](6);
|
271
196
|
|
272
|
-
|
197
|
+
// registerInstance() have no restriction
|
198
|
+
config[0].serviceDomain = INSTANCE();
|
199
|
+
config[0].selector = RegistryService.registerInstance.selector;
|
200
|
+
|
201
|
+
config[1].serviceDomain = POOL();
|
202
|
+
config[1].selector = RegistryService.registerPool.selector;
|
203
|
+
|
204
|
+
config[2].serviceDomain = DISTRIBUTION();
|
205
|
+
config[2].selector = RegistryService.registerDistribution.selector;
|
206
|
+
|
207
|
+
config[3].serviceDomain = PRODUCT();
|
208
|
+
config[3].selector = RegistryService.registerProduct.selector;
|
209
|
+
|
210
|
+
config[4].serviceDomain = POLICY();
|
211
|
+
config[4].selector = RegistryService.registerPolicy.selector;
|
212
|
+
|
213
|
+
config[5].serviceDomain = BUNDLE();
|
214
|
+
config[5].selector = RegistryService.registerBundle.selector;
|
215
|
+
|
216
|
+
/*config[6].serviceDomain = STAKE();
|
217
|
+
config[6].selector = RegistryService.registerStake.selector;*/
|
218
|
+
|
219
|
+
data = abi.encode(config);
|
273
220
|
}
|
274
221
|
|
275
|
-
//
|
222
|
+
// Internal
|
223
|
+
|
276
224
|
function _getAndVerifyContractInfo(
|
277
225
|
IRegisterable registerable,
|
278
|
-
ObjectType
|
279
|
-
address
|
226
|
+
ObjectType expectedType, // assume can be valid only
|
227
|
+
address expectedOwner // assume can be 0 when given by other service
|
280
228
|
)
|
281
229
|
internal
|
230
|
+
view
|
282
231
|
returns(
|
283
232
|
IRegistry.ObjectInfo memory info,
|
284
233
|
bytes memory data
|
@@ -288,23 +237,33 @@ contract RegistryService is
|
|
288
237
|
info,
|
289
238
|
data
|
290
239
|
) = registerable.getInitialInfo();
|
240
|
+
info.objectAddress = address(registerable);
|
291
241
|
|
292
|
-
if(info.
|
293
|
-
revert
|
242
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
243
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
294
244
|
}
|
295
245
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
246
|
+
address owner = info.initialOwner;
|
247
|
+
|
248
|
+
// solhint-disable-next-line
|
249
|
+
if(expectedType == INSTANCE()) {
|
250
|
+
// any address may create a new instance via instance service
|
251
|
+
} else {
|
252
|
+
if(owner != expectedOwner) { // registerable owner protection
|
253
|
+
revert NotRegisterableOwner(expectedOwner);
|
254
|
+
}
|
300
255
|
}
|
301
256
|
|
302
|
-
if(
|
257
|
+
if(owner == address(registerable)) {
|
303
258
|
revert SelfRegistration();
|
304
259
|
}
|
260
|
+
|
261
|
+
if(owner == address(0)) {
|
262
|
+
revert RegisterableOwnerIsZero();
|
263
|
+
}
|
305
264
|
|
306
|
-
if(
|
307
|
-
revert
|
265
|
+
if(getRegistry().isRegistered(owner)) {
|
266
|
+
revert RegisterableOwnerIsRegistered();
|
308
267
|
}
|
309
268
|
|
310
269
|
/*NftId parentNftId = info.parentNftId;
|
@@ -314,31 +273,31 @@ contract RegistryService is
|
|
314
273
|
revert InvalidParent(parentNftId);
|
315
274
|
}*/
|
316
275
|
|
317
|
-
return(
|
318
|
-
info,
|
319
|
-
data
|
320
|
-
);
|
276
|
+
return(info, data);
|
321
277
|
}
|
322
278
|
|
323
|
-
// parent checks done in registry because of approve()
|
324
279
|
function _verifyObjectInfo(
|
325
280
|
IRegistry.ObjectInfo memory info,
|
326
|
-
ObjectType
|
281
|
+
ObjectType expectedType
|
327
282
|
)
|
328
283
|
internal
|
329
284
|
view
|
330
285
|
{
|
331
|
-
|
332
|
-
|
286
|
+
// enforce instead of check
|
287
|
+
info.objectAddress = address(0);
|
288
|
+
|
289
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
290
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
291
|
+
}
|
292
|
+
|
293
|
+
address owner = info.initialOwner;
|
294
|
+
|
295
|
+
if(owner == address(0)) {
|
296
|
+
revert RegisterableOwnerIsZero();
|
333
297
|
}
|
334
298
|
|
335
|
-
if(
|
336
|
-
|
337
|
-
info.initialOwner == address(0)) {
|
338
|
-
// TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
|
339
|
-
// what are motivations to do so?
|
340
|
-
// at least registered contract can not register objects by itself, SERVICE,
|
341
|
-
revert InvalidInitialOwner(info.initialOwner);
|
299
|
+
if(getRegistry().isRegistered(owner)) {
|
300
|
+
revert RegisterableOwnerIsRegistered();
|
342
301
|
}
|
343
302
|
|
344
303
|
// can catch all 3 if check that initialOwner is not registered
|
@@ -354,11 +313,6 @@ contract RegistryService is
|
|
354
313
|
revert InitialOwnerIsRegistry();
|
355
314
|
}*/
|
356
315
|
|
357
|
-
|
358
|
-
if(info.objectType != objectType) {
|
359
|
-
revert InvalidType(info.objectType);
|
360
|
-
}
|
361
|
-
|
362
316
|
/*NftId parentNftId = info.parentNftId;
|
363
317
|
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
364
318
|
|
@@ -366,4 +320,4 @@ contract RegistryService is
|
|
366
320
|
revert InvalidParent(parentNftId);
|
367
321
|
}*/
|
368
322
|
}
|
369
|
-
}
|
323
|
+
}
|
@@ -1,38 +1,57 @@
|
|
1
1
|
// SPDX-License-Identifier: UNLICENSED
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
|
+
|
6
|
+
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
7
|
+
|
4
8
|
import {Registry} from "./Registry.sol";
|
5
9
|
import {IVersionable} from "../shared/IVersionable.sol";
|
6
10
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
7
11
|
import {RegistryService} from "./RegistryService.sol";
|
12
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
8
13
|
|
9
14
|
|
10
15
|
contract RegistryServiceManager is
|
11
16
|
ProxyManager
|
12
17
|
{
|
13
|
-
|
18
|
+
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
19
|
+
|
20
|
+
RegistryService private immutable _registryService;
|
14
21
|
|
15
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
16
23
|
constructor(
|
17
|
-
|
24
|
+
address initialAuthority, // used by implementation
|
25
|
+
address registry) // used by implementation
|
18
26
|
ProxyManager()
|
19
27
|
{
|
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);
|
35
|
+
|
20
36
|
IVersionable versionable = deploy(
|
21
37
|
address(new RegistryService()),
|
22
|
-
|
38
|
+
initializationData);
|
23
39
|
|
24
40
|
_registryService = RegistryService(address(versionable));
|
41
|
+
}
|
25
42
|
|
26
|
-
|
27
|
-
_linkToNftOwnable(
|
28
|
-
address(_registryService.getRegistry()),
|
29
|
-
address(_registryService));
|
43
|
+
// from IRegisterable
|
30
44
|
|
31
|
-
|
32
|
-
|
45
|
+
// IMPORTANT: registry here and in constructor MUST be the same
|
46
|
+
function linkToNftOwnable(address registry)
|
47
|
+
public
|
48
|
+
onlyOwner
|
49
|
+
{
|
50
|
+
_linkToNftOwnable(registry, address(_registryService));
|
33
51
|
}
|
34
52
|
|
35
53
|
//--- view functions ----------------------------------------------------//
|
54
|
+
|
36
55
|
function getRegistryService()
|
37
56
|
external
|
38
57
|
view
|