@etherisc/gif-next 0.0.2-ce8407f-016 → 0.0.2-ce87da3-250
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 +243 -2
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +853 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +1346 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +195 -150
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +900 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +887 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +806 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/components/Pool.sol/Pool.json +1322 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/components/Product.sol/Product.json +1246 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -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 +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +2475 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +509 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1051 -1183
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +562 -54
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +958 -29
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +552 -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/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +869 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1096 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1254 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +753 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +473 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +633 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +639 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +583 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +347 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +384 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1120 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -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 +649 -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 +649 -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 +236 -63
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +323 -178
- 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 +210 -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 +432 -268
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -129
- 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 +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- 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 +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +67 -39
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +155 -151
- 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/shared/Versionable.sol/Versionable.json +2 -152
- 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 +129 -51
- 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 +147 -226
- 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 +8 -190
- 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/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- 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 +4 -4
- 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 +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/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- 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/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/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
- 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/Component.sol +241 -0
- package/contracts/components/Distribution.sol +287 -0
- package/contracts/components/IComponent.sol +54 -0
- package/contracts/components/IDistributionComponent.sol +92 -0
- package/contracts/components/IPoolComponent.sol +87 -0
- package/contracts/components/IProductComponent.sol +39 -0
- package/contracts/components/Pool.sol +254 -0
- package/contracts/components/Product.sol +285 -0
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +87 -1
- package/contracts/instance/IInstanceService.sol +59 -0
- package/contracts/instance/Instance.sol +137 -238
- package/contracts/instance/InstanceAccessManager.sol +90 -81
- package/contracts/instance/InstanceReader.sol +86 -28
- package/contracts/instance/InstanceService.sol +453 -22
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/IKeyValueStore.sol +5 -4
- package/contracts/instance/base/KeyValueStore.sol +4 -20
- package/contracts/instance/module/IAccess.sol +28 -19
- package/contracts/instance/module/IBundle.sol +1 -0
- package/contracts/instance/module/IDistribution.sol +1 -0
- package/contracts/instance/module/IPolicy.sol +4 -2
- package/contracts/instance/module/ISetup.sol +10 -3
- package/contracts/instance/module/ITreasury.sol +1 -1
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +298 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +366 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +54 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +81 -0
- package/contracts/instance/service/IPolicyService.sol +89 -0
- package/contracts/instance/service/IPoolService.sol +20 -0
- package/contracts/instance/service/IProductService.sol +40 -0
- package/contracts/instance/service/PolicyService.sol +476 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +109 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +233 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +41 -26
- package/contracts/registry/IRegistry.sol +51 -25
- package/contracts/registry/IRegistryService.sol +54 -16
- package/contracts/registry/Registry.sol +279 -306
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +170 -256
- package/contracts/registry/RegistryServiceManager.sol +30 -11
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +116 -0
- package/contracts/shared/ERC165.sol +15 -9
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +18 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +67 -83
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +101 -26
- package/contracts/shared/Registerable.sol +15 -30
- package/contracts/shared/RegistryLinked.sol +48 -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 +5 -93
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestRoleId.sol +6 -6
- package/contracts/test/TestService.sol +6 -7
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +54 -0
- 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 +6 -5
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- 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/registry/IChainNft.sol/IChainNft.json +0 -457
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/components/IBaseComponent.sol +0 -19
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- 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,369 +1,283 @@
|
|
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
|
-
|
11
|
-
|
12
|
-
import {
|
13
|
-
|
14
|
-
// import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
15
|
-
// import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
11
|
+
import {IComponent} from "../../contracts/components/IComponent.sol";
|
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, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, 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
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
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
|
+
// From IService
|
44
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
45
|
+
return REGISTRY();
|
46
|
+
}
|
81
47
|
|
82
|
-
|
83
|
-
revert NotToken();
|
84
|
-
}
|
48
|
+
// from Versionable
|
85
49
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
50
|
+
/// @dev top level initializer
|
51
|
+
function _initialize(
|
52
|
+
address owner,
|
53
|
+
bytes memory data
|
54
|
+
)
|
55
|
+
internal
|
56
|
+
virtual override
|
57
|
+
initializer()
|
58
|
+
{
|
59
|
+
(
|
60
|
+
address registryAddress,
|
61
|
+
address initialAuthority
|
62
|
+
) = abi.decode(data, (address, address));
|
90
63
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
false, // isInterceptor
|
96
|
-
tokenAddress,
|
97
|
-
NFT_LOCK_ADDRESS,
|
98
|
-
"" // any value
|
99
|
-
);
|
100
|
-
|
101
|
-
nftId = _registry.register(info);
|
64
|
+
__AccessManaged_init(initialAuthority);
|
65
|
+
|
66
|
+
initializeService(registryAddress, owner);
|
67
|
+
registerInterface(type(IRegistryService).interfaceId);
|
102
68
|
}
|
103
69
|
|
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)
|
70
|
+
function registerInstance(IRegisterable instance, address owner)
|
111
71
|
external
|
72
|
+
restricted
|
112
73
|
returns(
|
113
|
-
IRegistry.ObjectInfo memory info
|
114
|
-
bytes memory data
|
74
|
+
IRegistry.ObjectInfo memory info
|
115
75
|
)
|
116
76
|
{
|
117
|
-
if(
|
118
|
-
revert
|
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();
|
77
|
+
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
78
|
+
revert NotInstance();
|
129
79
|
}
|
130
80
|
|
131
|
-
info
|
132
|
-
info.nftId =
|
133
|
-
service.linkToRegisteredNftId();
|
81
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
82
|
+
info.nftId = getRegistry().register(info);
|
134
83
|
|
135
|
-
|
136
|
-
info,
|
137
|
-
data
|
138
|
-
);
|
84
|
+
instance.linkToRegisteredNftId(); // asume safe
|
139
85
|
}
|
140
86
|
|
141
|
-
|
142
|
-
//function registerComponent(IBaseComponent component, ObjectType componentType)
|
143
|
-
function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
|
87
|
+
function registerProduct(IComponent product, address owner)
|
144
88
|
external
|
89
|
+
restricted
|
145
90
|
returns(
|
146
|
-
IRegistry.ObjectInfo memory info
|
147
|
-
bytes memory data
|
91
|
+
IRegistry.ObjectInfo memory info
|
148
92
|
)
|
149
93
|
{
|
150
|
-
if
|
151
|
-
|
94
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
95
|
+
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
96
|
+
revert NotProduct();
|
152
97
|
}
|
153
98
|
|
154
|
-
(
|
155
|
-
|
156
|
-
|
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 = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
100
|
+
info.nftId = getRegistry().register(info);
|
101
|
+
}
|
164
102
|
|
165
|
-
|
166
|
-
|
103
|
+
function registerPool(IComponent pool, address owner)
|
104
|
+
external
|
105
|
+
restricted
|
106
|
+
returns(
|
107
|
+
IRegistry.ObjectInfo memory info
|
108
|
+
)
|
109
|
+
{
|
110
|
+
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
111
|
+
revert NotPool();
|
112
|
+
}
|
167
113
|
|
168
|
-
|
169
|
-
|
170
|
-
data
|
171
|
-
);
|
114
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
115
|
+
info.nftId = getRegistry().register(info);
|
172
116
|
}
|
173
117
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
external
|
118
|
+
function registerDistribution(IComponent distribution, address owner)
|
119
|
+
external
|
120
|
+
restricted
|
178
121
|
returns(
|
179
|
-
IRegistry.ObjectInfo memory info
|
180
|
-
bytes memory data
|
122
|
+
IRegistry.ObjectInfo memory info
|
181
123
|
)
|
182
124
|
{
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
// info,
|
190
|
-
// data
|
191
|
-
// ) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);// owner);
|
192
|
-
|
193
|
-
// info.nftId = _registry.register(info);
|
194
|
-
// instance.linkToRegisteredNftId();
|
195
|
-
|
196
|
-
// return (
|
197
|
-
// info,
|
198
|
-
// data
|
199
|
-
// );
|
125
|
+
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
126
|
+
revert NotDistribution();
|
127
|
+
}
|
128
|
+
|
129
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
130
|
+
info.nftId = getRegistry().register(info);
|
200
131
|
}
|
201
132
|
|
202
|
-
function
|
203
|
-
external
|
133
|
+
function registerDistributor(IRegistry.ObjectInfo memory info)
|
134
|
+
external
|
135
|
+
restricted
|
204
136
|
returns(NftId nftId)
|
205
137
|
{
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
revert MissingAllowance();
|
210
|
-
}
|
138
|
+
_verifyObjectInfo(info, DISTRIBUTOR());
|
139
|
+
nftId = getRegistry().register(info);
|
140
|
+
}
|
211
141
|
|
142
|
+
function registerPolicy(IRegistry.ObjectInfo memory info)
|
143
|
+
external
|
144
|
+
restricted
|
145
|
+
returns(NftId nftId)
|
146
|
+
{
|
212
147
|
_verifyObjectInfo(info, POLICY());
|
213
148
|
|
214
|
-
nftId =
|
149
|
+
nftId = getRegistry().register(info);
|
215
150
|
}
|
216
151
|
|
217
152
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
218
|
-
external
|
153
|
+
external
|
154
|
+
restricted
|
219
155
|
returns(NftId nftId)
|
220
156
|
{
|
221
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
222
|
-
|
223
|
-
if(_registry.allowance(senderNftId, BUNDLE()) == false) {
|
224
|
-
revert MissingAllowance();
|
225
|
-
}
|
226
|
-
|
227
157
|
_verifyObjectInfo(info, BUNDLE());
|
228
158
|
|
229
|
-
nftId =
|
159
|
+
nftId = getRegistry().register(info);
|
230
160
|
}
|
231
161
|
|
162
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
163
|
+
external
|
164
|
+
restricted
|
165
|
+
returns(NftId nftId)
|
166
|
+
{
|
167
|
+
_verifyObjectInfo(info, STAKE());
|
232
168
|
|
233
|
-
|
234
|
-
function getName() public pure override(IService, ServiceBase) returns(string memory) {
|
235
|
-
return NAME;
|
169
|
+
nftId = getRegistry().register(info);
|
236
170
|
}
|
237
171
|
|
172
|
+
// from IRegisterable
|
238
173
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
// registry is getting instantiated and locked to registry service address forever
|
246
|
-
function _initialize(
|
247
|
-
address owner,
|
248
|
-
bytes memory registryByteCodeWithInitCode
|
249
|
-
)
|
250
|
-
internal
|
251
|
-
initializer
|
252
|
-
virtual override
|
174
|
+
function getFunctionConfigs()
|
175
|
+
external
|
176
|
+
pure
|
177
|
+
returns(
|
178
|
+
FunctionConfig[] memory config
|
179
|
+
)
|
253
180
|
{
|
254
|
-
|
255
|
-
|
256
|
-
|
181
|
+
config = new FunctionConfig[](8);
|
182
|
+
|
183
|
+
// order of service registrations MUST be reverse to this array
|
184
|
+
/*config[-1].serviceDomain = STAKE();
|
185
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
186
|
+
|
187
|
+
config[0].serviceDomain = APPLICATION();
|
188
|
+
config[0].selectors = new bytes4[](1);
|
189
|
+
config[0].selectors[0] = RegistryService.registerPolicy.selector;
|
190
|
+
|
191
|
+
config[1].serviceDomain = POLICY();
|
192
|
+
config[1].selectors = new bytes4[](0);
|
257
193
|
|
258
|
-
|
259
|
-
|
260
|
-
encodedConstructorArguments);
|
194
|
+
config[2].serviceDomain = CLAIM();
|
195
|
+
config[2].selectors = new bytes4[](0);
|
261
196
|
|
262
|
-
|
263
|
-
|
264
|
-
|
197
|
+
config[3].serviceDomain = BUNDLE();
|
198
|
+
config[3].selectors = new bytes4[](1);
|
199
|
+
config[3].selectors[0] = RegistryService.registerBundle.selector;
|
265
200
|
|
266
|
-
|
267
|
-
|
201
|
+
config[4].serviceDomain = PRODUCT();
|
202
|
+
config[4].selectors = new bytes4[](1);
|
203
|
+
config[4].selectors[0] = RegistryService.registerProduct.selector;
|
268
204
|
|
269
|
-
|
270
|
-
|
205
|
+
config[5].serviceDomain = POOL();
|
206
|
+
config[5].selectors = new bytes4[](1);
|
207
|
+
config[5].selectors[0] = RegistryService.registerPool.selector;
|
271
208
|
|
272
|
-
|
209
|
+
config[6].serviceDomain = DISTRIBUTION();
|
210
|
+
config[6].selectors = new bytes4[](2);
|
211
|
+
config[6].selectors[0] = RegistryService.registerDistribution.selector;
|
212
|
+
config[6].selectors[1] = RegistryService.registerDistributor.selector;
|
213
|
+
|
214
|
+
// registerInstance() have no restriction
|
215
|
+
config[7].serviceDomain = INSTANCE();
|
216
|
+
config[7].selectors = new bytes4[](1);
|
217
|
+
config[7].selectors[0] = RegistryService.registerInstance.selector;
|
273
218
|
}
|
274
219
|
|
275
|
-
//
|
220
|
+
// Internal
|
221
|
+
|
276
222
|
function _getAndVerifyContractInfo(
|
277
223
|
IRegisterable registerable,
|
278
|
-
ObjectType
|
279
|
-
address
|
224
|
+
ObjectType expectedType, // assume can be valid only
|
225
|
+
address expectedOwner // assume can be 0 when given by other service
|
280
226
|
)
|
281
227
|
internal
|
228
|
+
// view
|
282
229
|
returns(
|
283
|
-
IRegistry.ObjectInfo memory info
|
284
|
-
bytes memory data
|
230
|
+
IRegistry.ObjectInfo memory info
|
285
231
|
)
|
286
232
|
{
|
287
|
-
(
|
288
|
-
|
289
|
-
data
|
290
|
-
) = registerable.getInitialInfo();
|
233
|
+
info = registerable.getInitialInfo();
|
234
|
+
info.objectAddress = address(registerable);
|
291
235
|
|
292
|
-
if(info.
|
293
|
-
revert
|
236
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
237
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
294
238
|
}
|
295
239
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
revert
|
240
|
+
address owner = info.initialOwner;
|
241
|
+
|
242
|
+
if(owner != expectedOwner) { // registerable owner protection
|
243
|
+
revert NotRegisterableOwner(expectedOwner);
|
300
244
|
}
|
301
245
|
|
302
|
-
if(
|
246
|
+
if(owner == address(registerable)) {
|
303
247
|
revert SelfRegistration();
|
304
248
|
}
|
249
|
+
|
250
|
+
if(owner == address(0)) {
|
251
|
+
revert RegisterableOwnerIsZero();
|
252
|
+
}
|
305
253
|
|
306
|
-
if(
|
307
|
-
revert
|
254
|
+
if(getRegistry().isRegistered(owner)) {
|
255
|
+
revert RegisterableOwnerIsRegistered();
|
308
256
|
}
|
309
|
-
|
310
|
-
/*NftId parentNftId = info.parentNftId;
|
311
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
312
|
-
|
313
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
314
|
-
revert InvalidParent(parentNftId);
|
315
|
-
}*/
|
316
|
-
|
317
|
-
return(
|
318
|
-
info,
|
319
|
-
data
|
320
|
-
);
|
321
257
|
}
|
322
258
|
|
323
|
-
// parent checks done in registry because of approve()
|
324
259
|
function _verifyObjectInfo(
|
325
260
|
IRegistry.ObjectInfo memory info,
|
326
|
-
ObjectType
|
261
|
+
ObjectType expectedType
|
327
262
|
)
|
328
263
|
internal
|
329
264
|
view
|
330
265
|
{
|
331
|
-
|
332
|
-
|
333
|
-
}
|
266
|
+
// enforce instead of check
|
267
|
+
info.objectAddress = address(0);
|
334
268
|
|
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);
|
269
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
270
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
342
271
|
}
|
343
272
|
|
344
|
-
|
345
|
-
/*if(info.initialOwner == msg.sender) {
|
346
|
-
revert InitialOwnerIsParent();
|
347
|
-
}
|
273
|
+
address owner = info.initialOwner;
|
348
274
|
|
349
|
-
if(
|
350
|
-
revert
|
275
|
+
if(owner == address(0)) {
|
276
|
+
revert RegisterableOwnerIsZero();
|
351
277
|
}
|
352
278
|
|
353
|
-
if(
|
354
|
-
revert
|
355
|
-
}*/
|
356
|
-
|
357
|
-
|
358
|
-
if(info.objectType != objectType) {
|
359
|
-
revert InvalidType(info.objectType);
|
279
|
+
if(getRegistry().isRegistered(owner)) {
|
280
|
+
revert RegisterableOwnerIsRegistered();
|
360
281
|
}
|
361
|
-
|
362
|
-
/*NftId parentNftId = info.parentNftId;
|
363
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
364
|
-
|
365
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
366
|
-
revert InvalidParent(parentNftId);
|
367
|
-
}*/
|
368
282
|
}
|
369
|
-
}
|
283
|
+
}
|
@@ -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
|
-
|
18
|
-
|
24
|
+
address initialAuthority, // used by implementation
|
25
|
+
address registryAddress) // used by implementation
|
26
|
+
ProxyManager(registryAddress)
|
19
27
|
{
|
28
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
29
|
+
require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
|
30
|
+
|
31
|
+
// implementation's initializer func `data` argument
|
32
|
+
RegistryService srv = new RegistryService();
|
33
|
+
bytes memory data = abi.encode(registryAddress, initialAuthority);
|
20
34
|
IVersionable versionable = deploy(
|
21
|
-
address(
|
22
|
-
|
35
|
+
address(srv),
|
36
|
+
data);
|
23
37
|
|
24
38
|
_registryService = RegistryService(address(versionable));
|
25
39
|
|
26
|
-
|
27
|
-
|
28
|
-
address(_registryService.getRegistry()),
|
29
|
-
address(_registryService));
|
40
|
+
// _linkToNftOwnable(address(_registryService));
|
41
|
+
}
|
30
42
|
|
31
|
-
|
32
|
-
|
43
|
+
// // from IRegisterable
|
44
|
+
|
45
|
+
// // IMPORTANT: registry here and in constructor MUST be the same
|
46
|
+
function linkOwnershipToServiceNft()
|
47
|
+
public
|
48
|
+
onlyOwner
|
49
|
+
{
|
50
|
+
_linkToNftOwnable(address(_registryService));
|
33
51
|
}
|
34
52
|
|
35
53
|
//--- view functions ----------------------------------------------------//
|
54
|
+
|
36
55
|
function getRegistryService()
|
37
56
|
external
|
38
57
|
view
|