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