@etherisc/gif-next 0.0.2-f2b0fa2-473 → 0.0.2-f4f484a-692
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 +140 -2
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +832 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +938 -229
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → components/IComponent.sol/IComponent.json} +192 -168
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +743 -26
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +755 -50
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +582 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +818 -236
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +627 -224
- 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 +778 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +91 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +2185 -189
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +299 -153
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +993 -1183
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +571 -177
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +232 -210
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +520 -190
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +352 -75
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
- 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} +236 -126
- 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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +69 -43
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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 +968 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -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 +1732 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +150 -207
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +727 -160
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +540 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +84 -217
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +47 -414
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +824 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +657 -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 +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +373 -61
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +234 -216
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +333 -188
- 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 +229 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +304 -138
- 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 +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +31 -183
- 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 +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +127 -170
- 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 +2 -2
- 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 +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +148 -227
- 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/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/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +2 -2
- 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 +17 -4
- 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 +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- 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/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- 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 +251 -0
- package/contracts/components/Distribution.sol +200 -86
- package/contracts/components/IComponent.sol +74 -0
- package/contracts/components/IDistributionComponent.sol +44 -16
- package/contracts/components/IPoolComponent.sol +88 -37
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -177
- package/contracts/components/Product.sol +130 -134
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +127 -0
- package/contracts/instance/Cloneable.sol +51 -0
- package/contracts/instance/IInstance.sol +81 -11
- package/contracts/instance/IInstanceService.sol +56 -1
- package/contracts/instance/Instance.sol +156 -265
- package/contracts/instance/InstanceAccessManager.sol +410 -176
- package/contracts/instance/InstanceReader.sol +39 -29
- package/contracts/instance/InstanceService.sol +448 -55
- package/contracts/instance/InstanceServiceManager.sol +11 -13
- package/contracts/instance/ObjectManager.sol +82 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +36 -20
- package/contracts/instance/module/IBundle.sol +2 -0
- package/contracts/instance/module/IComponents.sol +35 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +9 -19
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +336 -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 +467 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +62 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +86 -0
- package/contracts/instance/service/IPolicyService.sol +72 -0
- package/contracts/instance/service/IPoolService.sol +21 -23
- package/contracts/instance/service/IProductService.sol +6 -73
- package/contracts/instance/service/PolicyService.sol +403 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +220 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +241 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +52 -8
- package/contracts/registry/IRegistryService.sol +46 -14
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +270 -226
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +110 -266
- package/contracts/registry/RegistryServiceManager.sol +24 -26
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +116 -0
- package/contracts/shared/ERC165.sol +14 -8
- 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 +4 -1
- 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 +100 -25
- package/contracts/shared/Registerable.sol +16 -31
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +26 -22
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +1 -0
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +26 -11
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +5 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +5 -1
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- 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/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- 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/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 -86
- package/contracts/components/IBaseComponent.sol +0 -24
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- 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/ComponentServiceBase.sol +0 -49
- 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
@@ -1,18 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
4
|
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
6
|
-
import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
|
7
5
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
8
6
|
|
9
7
|
import {IRegistry} from "./IRegistry.sol";
|
10
8
|
import {IInstance} from "../instance/IInstance.sol";
|
11
9
|
|
12
10
|
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
13
|
-
|
14
|
-
// import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
|
15
|
-
import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
|
11
|
+
import {IComponent} from "../../contracts/components/IComponent.sol";
|
16
12
|
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
17
13
|
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
18
14
|
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
@@ -20,9 +16,10 @@ import {IDistributionComponent} from "../../contracts/components/IDistributionCo
|
|
20
16
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
21
17
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
22
18
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
19
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
23
20
|
|
24
21
|
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
25
|
-
import {ObjectType, REGISTRY,
|
22
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
26
23
|
import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
|
27
24
|
import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
|
28
25
|
import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
|
@@ -32,7 +29,6 @@ import {Service} from "../shared/Service.sol";
|
|
32
29
|
import {IService} from "../shared/IService.sol";
|
33
30
|
import {IRegistryService} from "./IRegistryService.sol";
|
34
31
|
import {Registry} from "./Registry.sol";
|
35
|
-
import {ChainNft} from "./ChainNft.sol";
|
36
32
|
|
37
33
|
contract RegistryService is
|
38
34
|
AccessManagedUpgradeable,
|
@@ -41,147 +37,58 @@ contract RegistryService is
|
|
41
37
|
{
|
42
38
|
using NftIdLib for NftId;
|
43
39
|
|
44
|
-
error SelfRegistration();
|
45
|
-
error NotRegistryOwner();
|
46
|
-
|
47
|
-
error NotToken();
|
48
|
-
error NotService();
|
49
|
-
error NotInstance();
|
50
|
-
error NotProduct();
|
51
|
-
error NotPool();
|
52
|
-
error NotDistribution();
|
53
|
-
|
54
|
-
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
55
|
-
error NotRegisterableOwner(address expectedOwner);
|
56
|
-
error RegisterableOwnerIsZero();
|
57
|
-
error RegisterableOwnerIsRegistered();
|
58
|
-
error InvalidInitialOwner(address initialOwner);
|
59
|
-
error InvalidAddress(address registerableAddress);
|
60
|
-
|
61
|
-
|
62
|
-
// Initial value for constant variable has to be compile-time constant
|
63
|
-
// TODO define types as constants?
|
64
|
-
//ObjectType public constant SERVICE_TYPE = REGISTRY();
|
65
|
-
string public constant NAME = "RegistryService";
|
66
|
-
|
67
40
|
// TODO update to real hash when registry is stable
|
68
41
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
69
42
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
// msg.sender - ONLY registry owner
|
74
|
-
// CAN NOT register itself
|
75
|
-
// CAN NOT register IRegisterable address
|
76
|
-
// CAN register ONLY valid object-parent types combinations for TOKEN
|
77
|
-
// IMPORTANT: MUST NOT call untrusted contract inbetween calls to registry/instance (trusted contracts)
|
78
|
-
// motivation: registry/instance state may change during external call
|
79
|
-
// TODO it may be usefull to have transferable token nft in order to delist token, make it invalid for new beginings
|
80
|
-
// TODO: MUST prohibit registration of precompiles addresses
|
81
|
-
function registerToken(address tokenAddress)
|
82
|
-
external
|
83
|
-
returns(NftId nftId)
|
84
|
-
{
|
85
|
-
if(msg.sender == tokenAddress) {
|
86
|
-
revert SelfRegistration();
|
87
|
-
}
|
88
|
-
|
89
|
-
// MUST not revert if no ERC165 support
|
90
|
-
if(tokenAddress.code.length == 0 ||
|
91
|
-
ERC165Checker.supportsInterface(tokenAddress, type(IRegisterable).interfaceId)) {
|
92
|
-
revert NotToken();
|
93
|
-
}
|
94
|
-
|
95
|
-
NftId registryNftId = _registry.getNftId(address(_registry));
|
96
|
-
|
97
|
-
if(msg.sender != _registry.ownerOf(registryNftId)) {
|
98
|
-
revert NotRegistryOwner();
|
99
|
-
}
|
100
|
-
|
101
|
-
IRegistry.ObjectInfo memory info = IRegistry.ObjectInfo(
|
102
|
-
zeroNftId(), // any value
|
103
|
-
registryNftId, // parent nft id
|
104
|
-
TOKEN(),
|
105
|
-
false, // isInterceptor
|
106
|
-
tokenAddress,
|
107
|
-
NFT_LOCK_ADDRESS,
|
108
|
-
"" // any value
|
109
|
-
);
|
110
|
-
|
111
|
-
nftId = _registry.register(info);
|
43
|
+
// From IService
|
44
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
45
|
+
return REGISTRY();
|
112
46
|
}
|
113
47
|
|
114
|
-
|
115
|
-
// msg.sender - ONLY registry owner
|
116
|
-
// CAN NOT register itself
|
117
|
-
// CAN register ONLY valid object-parent types combinations for SERVICE
|
118
|
-
// CAN register ONLY IRegisterable address he owns
|
119
|
-
// IMPORTANT: MUST NOT check owner before calling external contract
|
120
|
-
function registerService(IService service)
|
121
|
-
external
|
122
|
-
// TODO restrict access - registryService.registerService must use accessmanager for checking permissions as
|
123
|
-
// services are not always owned by registry owner - actually only registry service is owned by registry owner
|
48
|
+
// from Versionable
|
124
49
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
50
|
+
/// @dev top level initializer
|
51
|
+
function _initialize(
|
52
|
+
address owner,
|
53
|
+
bytes memory data
|
54
|
+
)
|
55
|
+
internal
|
56
|
+
virtual override
|
57
|
+
initializer()
|
129
58
|
{
|
59
|
+
(
|
60
|
+
address registryAddress,
|
61
|
+
address initialAuthority
|
62
|
+
) = abi.decode(data, (address, address));
|
130
63
|
|
131
|
-
|
132
|
-
if(!service.supportsInterface(type(IService).interfaceId)) {
|
133
|
-
revert NotService();
|
134
|
-
}
|
64
|
+
__AccessManaged_init(initialAuthority);
|
135
65
|
|
136
|
-
(
|
137
|
-
|
138
|
-
data
|
139
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
140
|
-
|
141
|
-
info.nftId = _registry.register(info);
|
142
|
-
service.linkToRegisteredNftId();
|
143
|
-
return (
|
144
|
-
info,
|
145
|
-
data
|
146
|
-
);
|
66
|
+
initializeService(registryAddress, owner);
|
67
|
+
registerInterface(type(IRegistryService).interfaceId);
|
147
68
|
}
|
148
69
|
|
149
|
-
|
150
|
-
// 1) add owner arg (service MUST pass it's msg.sender as owner)
|
151
|
-
// 2) check service allowance
|
152
|
-
// 3) comment self registrstion check
|
153
|
-
//function registerInstance(IRegisterable instance, address owner)
|
154
|
-
function registerInstance(IRegisterable instance)
|
70
|
+
function registerInstance(IRegisterable instance, address owner)
|
155
71
|
external
|
72
|
+
restricted
|
156
73
|
returns(
|
157
|
-
IRegistry.ObjectInfo memory info
|
158
|
-
bytes memory data
|
74
|
+
IRegistry.ObjectInfo memory info
|
159
75
|
)
|
160
76
|
{
|
161
77
|
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
162
78
|
revert NotInstance();
|
163
79
|
}
|
164
80
|
|
165
|
-
(
|
166
|
-
|
167
|
-
data
|
168
|
-
) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
|
81
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
82
|
+
info.nftId = getRegistry().register(info);
|
169
83
|
|
170
|
-
info.nftId = _registry.register(info);
|
171
84
|
instance.linkToRegisteredNftId(); // asume safe
|
172
|
-
|
173
|
-
return (
|
174
|
-
info,
|
175
|
-
data
|
176
|
-
);
|
177
85
|
}
|
178
86
|
|
179
|
-
function registerProduct(
|
87
|
+
function registerProduct(IComponent product, address owner)
|
180
88
|
external
|
181
89
|
restricted
|
182
90
|
returns(
|
183
|
-
IRegistry.ObjectInfo memory info
|
184
|
-
bytes memory data
|
91
|
+
IRegistry.ObjectInfo memory info
|
185
92
|
)
|
186
93
|
{
|
187
94
|
// CAN revert if no ERC165 support -> will revert with empty message
|
@@ -189,77 +96,47 @@ contract RegistryService is
|
|
189
96
|
revert NotProduct();
|
190
97
|
}
|
191
98
|
|
192
|
-
(
|
193
|
-
|
194
|
-
data
|
195
|
-
) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
196
|
-
|
197
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
198
|
-
|
199
|
-
info.nftId = _registry.register(info);
|
200
|
-
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
201
|
-
product.linkToRegisteredNftId();
|
202
|
-
|
203
|
-
return (
|
204
|
-
info,
|
205
|
-
data
|
206
|
-
);
|
99
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
100
|
+
info.nftId = getRegistry().register(info);
|
207
101
|
}
|
208
102
|
|
209
|
-
function registerPool(
|
103
|
+
function registerPool(IComponent pool, address owner)
|
210
104
|
external
|
211
105
|
restricted
|
212
106
|
returns(
|
213
|
-
IRegistry.ObjectInfo memory info
|
214
|
-
bytes memory data
|
107
|
+
IRegistry.ObjectInfo memory info
|
215
108
|
)
|
216
109
|
{
|
217
110
|
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
218
111
|
revert NotPool();
|
219
112
|
}
|
220
113
|
|
221
|
-
(
|
222
|
-
|
223
|
-
data
|
224
|
-
) = _getAndVerifyContractInfo(pool, POOL(), owner);
|
225
|
-
|
226
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
227
|
-
|
228
|
-
info.nftId = _registry.register(info);
|
229
|
-
pool.linkToRegisteredNftId();
|
230
|
-
|
231
|
-
return (
|
232
|
-
info,
|
233
|
-
data
|
234
|
-
);
|
114
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
115
|
+
info.nftId = getRegistry().register(info);
|
235
116
|
}
|
236
117
|
|
237
|
-
function registerDistribution(
|
118
|
+
function registerDistribution(IComponent distribution, address owner)
|
238
119
|
external
|
239
120
|
restricted
|
240
121
|
returns(
|
241
|
-
IRegistry.ObjectInfo memory info
|
242
|
-
bytes memory data
|
122
|
+
IRegistry.ObjectInfo memory info
|
243
123
|
)
|
244
124
|
{
|
245
125
|
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
246
126
|
revert NotDistribution();
|
247
127
|
}
|
248
128
|
|
249
|
-
(
|
250
|
-
|
251
|
-
|
252
|
-
) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
253
|
-
|
254
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
255
|
-
|
256
|
-
info.nftId = _registry.register(info);
|
257
|
-
distribution.linkToRegisteredNftId();
|
129
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
130
|
+
info.nftId = getRegistry().register(info);
|
131
|
+
}
|
258
132
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
)
|
133
|
+
function registerDistributor(IRegistry.ObjectInfo memory info)
|
134
|
+
external
|
135
|
+
restricted
|
136
|
+
returns(NftId nftId)
|
137
|
+
{
|
138
|
+
_verifyObjectInfo(info, DISTRIBUTOR());
|
139
|
+
nftId = getRegistry().register(info);
|
263
140
|
}
|
264
141
|
|
265
142
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
@@ -267,11 +144,9 @@ contract RegistryService is
|
|
267
144
|
restricted
|
268
145
|
returns(NftId nftId)
|
269
146
|
{
|
270
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
271
|
-
|
272
147
|
_verifyObjectInfo(info, POLICY());
|
273
148
|
|
274
|
-
nftId =
|
149
|
+
nftId = getRegistry().register(info);
|
275
150
|
}
|
276
151
|
|
277
152
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
@@ -279,85 +154,83 @@ contract RegistryService is
|
|
279
154
|
restricted
|
280
155
|
returns(NftId nftId)
|
281
156
|
{
|
282
|
-
|
283
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
284
|
-
|
285
157
|
_verifyObjectInfo(info, BUNDLE());
|
286
158
|
|
287
|
-
nftId =
|
159
|
+
nftId = getRegistry().register(info);
|
288
160
|
}
|
289
161
|
|
162
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
163
|
+
external
|
164
|
+
restricted
|
165
|
+
returns(NftId nftId)
|
166
|
+
{
|
167
|
+
_verifyObjectInfo(info, STAKE());
|
290
168
|
|
291
|
-
|
292
|
-
function getName() public pure override(IService, Service) returns(string memory) {
|
293
|
-
return NAME;
|
169
|
+
nftId = getRegistry().register(info);
|
294
170
|
}
|
295
|
-
//function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
|
296
|
-
// return SERVICE_TYPE;
|
297
|
-
//}
|
298
171
|
|
172
|
+
// from IRegisterable
|
299
173
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
// registry is getting instantiated and locked to registry service address forever
|
307
|
-
function _initialize(
|
308
|
-
address owner,
|
309
|
-
bytes memory data
|
310
|
-
)
|
311
|
-
internal
|
312
|
-
initializer
|
313
|
-
virtual override
|
174
|
+
function getFunctionConfigs()
|
175
|
+
external
|
176
|
+
pure
|
177
|
+
returns(
|
178
|
+
FunctionConfig[] memory config
|
179
|
+
)
|
314
180
|
{
|
315
|
-
(
|
316
|
-
address initialAuthority,
|
317
|
-
bytes memory registryByteCodeWithInitCode
|
318
|
-
) = abi.decode(data, (address, bytes));
|
181
|
+
config = new FunctionConfig[](8);
|
319
182
|
|
320
|
-
|
183
|
+
// order of service registrations MUST be reverse to this array
|
184
|
+
/*config[-1].serviceDomain = STAKE();
|
185
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
321
186
|
|
322
|
-
|
323
|
-
|
324
|
-
getMajorVersion());
|
187
|
+
config[0].serviceDomain = POLICY();
|
188
|
+
config[0].selectors = new bytes4[](0);
|
325
189
|
|
326
|
-
|
327
|
-
|
328
|
-
|
190
|
+
config[1].serviceDomain = APPLICATION();
|
191
|
+
config[1].selectors = new bytes4[](1);
|
192
|
+
config[1].selectors[0] = RegistryService.registerPolicy.selector;
|
329
193
|
|
330
|
-
|
331
|
-
|
332
|
-
REGISTRY_CREATION_CODE_HASH));
|
194
|
+
config[2].serviceDomain = CLAIM();
|
195
|
+
config[2].selectors = new bytes4[](0);
|
333
196
|
|
334
|
-
|
197
|
+
config[3].serviceDomain = BUNDLE();
|
198
|
+
config[3].selectors = new bytes4[](1);
|
199
|
+
config[3].selectors[0] = RegistryService.registerBundle.selector;
|
335
200
|
|
336
|
-
|
201
|
+
config[4].serviceDomain = PRODUCT();
|
202
|
+
config[4].selectors = new bytes4[](1);
|
203
|
+
config[4].selectors[0] = RegistryService.registerProduct.selector;
|
337
204
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
205
|
+
config[5].serviceDomain = POOL();
|
206
|
+
config[5].selectors = new bytes4[](1);
|
207
|
+
config[5].selectors[0] = RegistryService.registerPool.selector;
|
208
|
+
|
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;
|
342
218
|
}
|
343
219
|
|
344
|
-
//
|
220
|
+
// Internal
|
221
|
+
|
345
222
|
function _getAndVerifyContractInfo(
|
346
223
|
IRegisterable registerable,
|
347
224
|
ObjectType expectedType, // assume can be valid only
|
348
|
-
address expectedOwner // assume can be 0
|
225
|
+
address expectedOwner // assume can be 0 when given by other service
|
349
226
|
)
|
350
227
|
internal
|
351
|
-
view
|
228
|
+
// view
|
352
229
|
returns(
|
353
|
-
IRegistry.ObjectInfo memory info
|
354
|
-
bytes memory data
|
230
|
+
IRegistry.ObjectInfo memory info
|
355
231
|
)
|
356
232
|
{
|
357
|
-
(
|
358
|
-
info,
|
359
|
-
data
|
360
|
-
) = registerable.getInitialInfo();
|
233
|
+
info = registerable.getInitialInfo();
|
361
234
|
info.objectAddress = address(registerable);
|
362
235
|
|
363
236
|
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
@@ -381,59 +254,30 @@ contract RegistryService is
|
|
381
254
|
if(getRegistry().isRegistered(owner)) {
|
382
255
|
revert RegisterableOwnerIsRegistered();
|
383
256
|
}
|
384
|
-
|
385
|
-
/*NftId parentNftId = info.parentNftId;
|
386
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
387
|
-
|
388
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
389
|
-
revert InvalidParent(parentNftId);
|
390
|
-
}*/
|
391
|
-
|
392
|
-
return(
|
393
|
-
info,
|
394
|
-
data
|
395
|
-
);
|
396
257
|
}
|
397
258
|
|
398
|
-
// parent checks done in registry because of approve()
|
399
259
|
function _verifyObjectInfo(
|
400
260
|
IRegistry.ObjectInfo memory info,
|
401
|
-
ObjectType
|
261
|
+
ObjectType expectedType
|
402
262
|
)
|
403
263
|
internal
|
404
264
|
view
|
405
265
|
{
|
406
|
-
|
407
|
-
|
408
|
-
}
|
266
|
+
// enforce instead of check
|
267
|
+
info.objectAddress = address(0);
|
409
268
|
|
410
|
-
if(
|
411
|
-
|
412
|
-
info.initialOwner == address(0)) {
|
413
|
-
// TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
|
414
|
-
// what are motivations to do so?
|
415
|
-
// at least registered contract can not register objects by itself, SERVICE,
|
416
|
-
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);
|
417
271
|
}
|
418
272
|
|
419
|
-
|
420
|
-
/*if(info.initialOwner == msg.sender) {
|
421
|
-
revert InitialOwnerIsParent();
|
422
|
-
}
|
273
|
+
address owner = info.initialOwner;
|
423
274
|
|
424
|
-
if(
|
425
|
-
revert
|
275
|
+
if(owner == address(0)) {
|
276
|
+
revert RegisterableOwnerIsZero();
|
426
277
|
}
|
427
278
|
|
428
|
-
if(
|
429
|
-
revert
|
430
|
-
}
|
431
|
-
|
432
|
-
/*NftId parentNftId = info.parentNftId;
|
433
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
434
|
-
|
435
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
436
|
-
revert InvalidParent(parentNftId);
|
437
|
-
}*/
|
279
|
+
if(getRegistry().isRegistered(owner)) {
|
280
|
+
revert RegisterableOwnerIsRegistered();
|
281
|
+
}
|
438
282
|
}
|
439
283
|
}
|
@@ -9,6 +9,7 @@ import {Registry} from "./Registry.sol";
|
|
9
9
|
import {IVersionable} from "../shared/IVersionable.sol";
|
10
10
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
11
11
|
import {RegistryService} from "./RegistryService.sol";
|
12
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
12
13
|
|
13
14
|
|
14
15
|
contract RegistryServiceManager is
|
@@ -16,36 +17,41 @@ contract RegistryServiceManager is
|
|
16
17
|
{
|
17
18
|
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
18
19
|
|
19
|
-
RegistryService private _registryService;
|
20
|
-
|
21
|
-
AccessManager private _accessManager;
|
20
|
+
RegistryService private immutable _registryService;
|
22
21
|
|
23
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
24
23
|
constructor(
|
25
|
-
address
|
26
|
-
|
27
|
-
ProxyManager()
|
24
|
+
address initialAuthority, // used by implementation
|
25
|
+
address registryAddress) // used by implementation
|
26
|
+
ProxyManager(registryAddress)
|
28
27
|
{
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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);
|
33
34
|
IVersionable versionable = deploy(
|
34
|
-
address(
|
35
|
-
|
35
|
+
address(srv),
|
36
|
+
data);
|
36
37
|
|
37
38
|
_registryService = RegistryService(address(versionable));
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
// _linkToNftOwnable(address(_registryService));
|
41
|
+
}
|
42
|
+
|
43
|
+
// // from IRegisterable
|
43
44
|
|
44
|
-
|
45
|
-
|
45
|
+
// // IMPORTANT: registry here and in constructor MUST be the same
|
46
|
+
function linkOwnershipToServiceNft()
|
47
|
+
public
|
48
|
+
onlyOwner
|
49
|
+
{
|
50
|
+
_linkToNftOwnable(address(_registryService));
|
46
51
|
}
|
47
52
|
|
48
53
|
//--- view functions ----------------------------------------------------//
|
54
|
+
|
49
55
|
function getRegistryService()
|
50
56
|
external
|
51
57
|
view
|
@@ -53,12 +59,4 @@ contract RegistryServiceManager is
|
|
53
59
|
{
|
54
60
|
return _registryService;
|
55
61
|
}
|
56
|
-
|
57
|
-
function getAccessManager()
|
58
|
-
external
|
59
|
-
view
|
60
|
-
returns (AccessManager)
|
61
|
-
{
|
62
|
-
return _accessManager;
|
63
|
-
}
|
64
62
|
}
|