@etherisc/gif-next 0.0.2-f2b0fa2-473 → 0.0.2-f4f2d93-430
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 +75 -14
- 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 +948 -229
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +295 -132
- 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 +864 -49
- 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 +849 -247
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +637 -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 +2200 -184
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +368 -156
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1005 -1175
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +593 -180
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +242 -210
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +666 -190
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +392 -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/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +276 -150
- 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 +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1798 -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 +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/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +437 -154
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +90 -391
- 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 +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1237 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +840 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -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 +223 -229
- 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 +227 -330
- 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 +559 -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 +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 +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 +253 -0
- package/contracts/components/Distribution.sol +200 -86
- package/contracts/components/IComponent.sol +76 -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 +225 -181
- 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 +157 -265
- package/contracts/instance/InstanceAccessManager.sol +414 -175
- package/contracts/instance/InstanceReader.sol +40 -29
- package/contracts/instance/InstanceService.sol +447 -54
- package/contracts/instance/InstanceServiceManager.sol +11 -13
- package/contracts/instance/ObjectManager.sol +82 -0
- 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 -4
- 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 +9 -19
- 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 +435 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- 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 +79 -17
- package/contracts/instance/service/IProductService.sol +6 -73
- package/contracts/instance/service/PolicyService.sol +362 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +303 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +210 -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 +47 -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 +111 -268
- package/contracts/registry/RegistryServiceManager.sol +24 -26
- package/contracts/registry/ReleaseManager.sol +324 -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 +5 -4
- 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 +42 -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/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 { | 
| 7 | 
            -
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 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,156 +29,64 @@ 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 | 
            -
                AccessManagedUpgradeable,
         | 
| 39 34 | 
             
                Service,
         | 
| 40 35 | 
             
                IRegistryService
         | 
| 41 36 | 
             
            {
         | 
| 42 37 | 
             
                using NftIdLib for NftId;
         | 
| 43 38 |  | 
| 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 39 | 
             
                // TODO update to real hash when registry is stable
         | 
| 68 40 | 
             
                bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
         | 
| 69 41 |  | 
| 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);
         | 
| 42 | 
            +
                // From IService
         | 
| 43 | 
            +
                function getDomain() public pure override returns(ObjectType serviceDomain) {
         | 
| 44 | 
            +
                    return REGISTRY(); 
         | 
| 112 45 | 
             
                }
         | 
| 113 46 |  | 
| 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
         | 
| 47 | 
            +
                // from Versionable
         | 
| 124 48 |  | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
                     | 
| 49 | 
            +
                /// @dev top level initializer
         | 
| 50 | 
            +
                function _initialize(
         | 
| 51 | 
            +
                    address owner, 
         | 
| 52 | 
            +
                    bytes memory data
         | 
| 53 | 
            +
                )
         | 
| 54 | 
            +
                    internal
         | 
| 55 | 
            +
                    virtual override
         | 
| 56 | 
            +
                    initializer()
         | 
| 129 57 | 
             
                {
         | 
| 58 | 
            +
                    (
         | 
| 59 | 
            +
                        address registryAddress,
         | 
| 60 | 
            +
                        address initialAuthority
         | 
| 61 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 130 62 |  | 
| 131 | 
            -
                     | 
| 132 | 
            -
                    if(!service.supportsInterface(type(IService).interfaceId)) {
         | 
| 133 | 
            -
                        revert NotService();
         | 
| 134 | 
            -
                    }
         | 
| 63 | 
            +
                    initializeService(registryAddress, initialAuthority, owner);
         | 
| 135 64 |  | 
| 136 | 
            -
                    (
         | 
| 137 | 
            -
                        info, 
         | 
| 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 | 
            -
                    );
         | 
| 65 | 
            +
                    registerInterface(type(IRegistryService).interfaceId);
         | 
| 147 66 | 
             
                }
         | 
| 148 67 |  | 
| 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)
         | 
| 68 | 
            +
                function registerInstance(IRegisterable instance, address owner)
         | 
| 155 69 | 
             
                    external
         | 
| 70 | 
            +
                    restricted
         | 
| 156 71 | 
             
                    returns(
         | 
| 157 | 
            -
                        IRegistry.ObjectInfo memory info | 
| 158 | 
            -
                        bytes memory data
         | 
| 72 | 
            +
                        IRegistry.ObjectInfo memory info
         | 
| 159 73 | 
             
                    ) 
         | 
| 160 74 | 
             
                {
         | 
| 161 75 | 
             
                    if(!instance.supportsInterface(type(IInstance).interfaceId)) {
         | 
| 162 76 | 
             
                        revert NotInstance();
         | 
| 163 77 | 
             
                    }
         | 
| 164 78 |  | 
| 165 | 
            -
                    (
         | 
| 166 | 
            -
             | 
| 167 | 
            -
                        data
         | 
| 168 | 
            -
                    ) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
         | 
| 79 | 
            +
                    info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
         | 
| 80 | 
            +
                    info.nftId = getRegistry().register(info);
         | 
| 169 81 |  | 
| 170 | 
            -
                    info.nftId = _registry.register(info);
         | 
| 171 82 | 
             
                    instance.linkToRegisteredNftId(); // asume safe
         | 
| 172 | 
            -
                    
         | 
| 173 | 
            -
                    return (
         | 
| 174 | 
            -
                        info,
         | 
| 175 | 
            -
                        data            
         | 
| 176 | 
            -
                    );
         | 
| 177 83 | 
             
                }
         | 
| 178 84 |  | 
| 179 | 
            -
                function registerProduct( | 
| 85 | 
            +
                function registerProduct(IComponent product, address owner)
         | 
| 180 86 | 
             
                    external
         | 
| 181 87 | 
             
                    restricted
         | 
| 182 88 | 
             
                    returns(
         | 
| 183 | 
            -
                        IRegistry.ObjectInfo memory info | 
| 184 | 
            -
                        bytes memory data
         | 
| 89 | 
            +
                        IRegistry.ObjectInfo memory info
         | 
| 185 90 | 
             
                    ) 
         | 
| 186 91 | 
             
                {
         | 
| 187 92 | 
             
                    // CAN revert if no ERC165 support -> will revert with empty message 
         | 
| @@ -189,77 +94,47 @@ contract RegistryService is | |
| 189 94 | 
             
                        revert NotProduct();
         | 
| 190 95 | 
             
                    }
         | 
| 191 96 |  | 
| 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 | 
            -
                    );  
         | 
| 97 | 
            +
                    info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
         | 
| 98 | 
            +
                    info.nftId = getRegistry().register(info);
         | 
| 207 99 | 
             
                }
         | 
| 208 100 |  | 
| 209 | 
            -
                function registerPool( | 
| 101 | 
            +
                function registerPool(IComponent pool, address owner)
         | 
| 210 102 | 
             
                    external
         | 
| 211 103 | 
             
                    restricted
         | 
| 212 104 | 
             
                    returns(
         | 
| 213 | 
            -
                        IRegistry.ObjectInfo memory info | 
| 214 | 
            -
                        bytes memory data
         | 
| 105 | 
            +
                        IRegistry.ObjectInfo memory info
         | 
| 215 106 | 
             
                    ) 
         | 
| 216 107 | 
             
                {
         | 
| 217 108 | 
             
                    if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
         | 
| 218 109 | 
             
                        revert NotPool();
         | 
| 219 110 | 
             
                    }
         | 
| 220 111 |  | 
| 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 | 
            -
                    );  
         | 
| 112 | 
            +
                    info = _getAndVerifyContractInfo(pool, POOL(), owner);
         | 
| 113 | 
            +
                    info.nftId = getRegistry().register(info);
         | 
| 235 114 | 
             
                }
         | 
| 236 115 |  | 
| 237 | 
            -
                function registerDistribution( | 
| 116 | 
            +
                function registerDistribution(IComponent distribution, address owner)
         | 
| 238 117 | 
             
                    external
         | 
| 239 118 | 
             
                    restricted
         | 
| 240 119 | 
             
                    returns(
         | 
| 241 | 
            -
                        IRegistry.ObjectInfo memory info | 
| 242 | 
            -
                        bytes memory data
         | 
| 120 | 
            +
                        IRegistry.ObjectInfo memory info
         | 
| 243 121 | 
             
                    ) 
         | 
| 244 122 | 
             
                {
         | 
| 245 123 | 
             
                    if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
         | 
| 246 124 | 
             
                        revert NotDistribution();
         | 
| 247 125 | 
             
                    }
         | 
| 248 126 |  | 
| 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();
         | 
| 127 | 
            +
                    info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
         | 
| 128 | 
            +
                    info.nftId = getRegistry().register(info);
         | 
| 129 | 
            +
                }
         | 
| 258 130 |  | 
| 259 | 
            -
             | 
| 260 | 
            -
             | 
| 261 | 
            -
             | 
| 262 | 
            -
                    ) | 
| 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);
         | 
| 263 138 | 
             
                }
         | 
| 264 139 |  | 
| 265 140 | 
             
                function registerPolicy(IRegistry.ObjectInfo memory info)
         | 
| @@ -267,11 +142,9 @@ contract RegistryService is | |
| 267 142 | 
             
                    restricted 
         | 
| 268 143 | 
             
                    returns(NftId nftId) 
         | 
| 269 144 | 
             
                {
         | 
| 270 | 
            -
                    NftId senderNftId = _registry.getNftId(msg.sender);
         | 
| 271 | 
            -
             | 
| 272 145 | 
             
                    _verifyObjectInfo(info, POLICY());
         | 
| 273 146 |  | 
| 274 | 
            -
                    nftId =  | 
| 147 | 
            +
                    nftId = getRegistry().register(info);
         | 
| 275 148 | 
             
                }
         | 
| 276 149 |  | 
| 277 150 | 
             
                function registerBundle(IRegistry.ObjectInfo memory info)
         | 
| @@ -279,85 +152,84 @@ contract RegistryService is | |
| 279 152 | 
             
                    restricted 
         | 
| 280 153 | 
             
                    returns(NftId nftId) 
         | 
| 281 154 | 
             
                {
         | 
| 282 | 
            -
             | 
| 283 | 
            -
                    NftId senderNftId = _registry.getNftId(msg.sender);
         | 
| 284 | 
            -
             | 
| 285 155 | 
             
                    _verifyObjectInfo(info, BUNDLE());
         | 
| 286 156 |  | 
| 287 | 
            -
                    nftId =  | 
| 157 | 
            +
                    nftId = getRegistry().register(info);
         | 
| 288 158 | 
             
                }
         | 
| 289 159 |  | 
| 160 | 
            +
                function registerStake(IRegistry.ObjectInfo memory info)
         | 
| 161 | 
            +
                    external
         | 
| 162 | 
            +
                    restricted 
         | 
| 163 | 
            +
                    returns(NftId nftId) 
         | 
| 164 | 
            +
                {
         | 
| 165 | 
            +
                    _verifyObjectInfo(info, STAKE());
         | 
| 290 166 |  | 
| 291 | 
            -
             | 
| 292 | 
            -
                function getName() public pure override(IService, Service) returns(string memory) {
         | 
| 293 | 
            -
                    return NAME;
         | 
| 167 | 
            +
                    nftId = getRegistry().register(info);
         | 
| 294 168 | 
             
                }
         | 
| 295 | 
            -
                //function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
         | 
| 296 | 
            -
                //    return SERVICE_TYPE;
         | 
| 297 | 
            -
                //}
         | 
| 298 169 |  | 
| 170 | 
            +
                // from IRegisterable
         | 
| 299 171 |  | 
| 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
         | 
| 172 | 
            +
                function getFunctionConfigs()
         | 
| 173 | 
            +
                    external
         | 
| 174 | 
            +
                    pure
         | 
| 175 | 
            +
                    returns(
         | 
| 176 | 
            +
                        FunctionConfig[] memory config
         | 
| 177 | 
            +
                    )
         | 
| 314 178 | 
             
                {
         | 
| 315 | 
            -
                    (
         | 
| 316 | 
            -
             | 
| 317 | 
            -
             | 
| 318 | 
            -
                     | 
| 179 | 
            +
                    config = new FunctionConfig[](8);
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                    // order of service registrations MUST be reverse to this array 
         | 
| 182 | 
            +
                    /*config[-1].serviceDomain = STAKE();
         | 
| 183 | 
            +
                    config[-1].selector = RegistryService.registerStake.selector;*/
         | 
| 319 184 |  | 
| 320 | 
            -
                     | 
| 185 | 
            +
                    config[0].serviceDomain = POLICY();
         | 
| 186 | 
            +
                    config[0].selectors = new bytes4[](0);
         | 
| 321 187 |  | 
| 322 | 
            -
                     | 
| 323 | 
            -
             | 
| 324 | 
            -
             | 
| 188 | 
            +
                    config[1].serviceDomain = APPLICATION();
         | 
| 189 | 
            +
                    config[1].selectors = new bytes4[](1);
         | 
| 190 | 
            +
                    config[1].selectors[0] = RegistryService.registerPolicy.selector;
         | 
| 325 191 |  | 
| 326 | 
            -
                     | 
| 327 | 
            -
             | 
| 328 | 
            -
                        encodedConstructorArguments);
         | 
| 192 | 
            +
                    config[2].serviceDomain = CLAIM();
         | 
| 193 | 
            +
                    config[2].selectors = new bytes4[](0);
         | 
| 329 194 |  | 
| 330 | 
            -
                     | 
| 331 | 
            -
             | 
| 332 | 
            -
             | 
| 195 | 
            +
                    config[3].serviceDomain = PRODUCT();
         | 
| 196 | 
            +
                    config[3].selectors = new bytes4[](1);
         | 
| 197 | 
            +
                    config[3].selectors[0] = RegistryService.registerProduct.selector;
         | 
| 333 198 |  | 
| 334 | 
            -
                     | 
| 199 | 
            +
                    config[4].serviceDomain = POOL();
         | 
| 200 | 
            +
                    config[4].selectors = new bytes4[](1);
         | 
| 201 | 
            +
                    config[4].selectors[0] = RegistryService.registerPool.selector;
         | 
| 335 202 |  | 
| 336 | 
            -
                     | 
| 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;
         | 
| 337 207 |  | 
| 338 | 
            -
                     | 
| 339 | 
            -
                     | 
| 340 | 
            -
                     | 
| 341 | 
            -
                     | 
| 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;
         | 
| 212 | 
            +
             | 
| 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;
         | 
| 342 217 | 
             
                }
         | 
| 343 218 |  | 
| 344 | 
            -
                //  | 
| 219 | 
            +
                // Internal
         | 
| 220 | 
            +
             | 
| 345 221 | 
             
                function _getAndVerifyContractInfo(
         | 
| 346 222 | 
             
                    IRegisterable registerable,
         | 
| 347 223 | 
             
                    ObjectType expectedType, // assume can be valid only
         | 
| 348 | 
            -
                    address expectedOwner // assume can be 0
         | 
| 224 | 
            +
                    address expectedOwner // assume can be 0 when given by other service
         | 
| 349 225 | 
             
                )
         | 
| 350 226 | 
             
                    internal
         | 
| 351 | 
            -
                    view
         | 
| 227 | 
            +
                    // view
         | 
| 352 228 | 
             
                    returns(
         | 
| 353 | 
            -
                        IRegistry.ObjectInfo memory info | 
| 354 | 
            -
                        bytes memory data
         | 
| 229 | 
            +
                        IRegistry.ObjectInfo memory info 
         | 
| 355 230 | 
             
                    )
         | 
| 356 231 | 
             
                {
         | 
| 357 | 
            -
                    (
         | 
| 358 | 
            -
                        info, 
         | 
| 359 | 
            -
                        data
         | 
| 360 | 
            -
                    ) = registerable.getInitialInfo();
         | 
| 232 | 
            +
                    info = registerable.getInitialInfo();
         | 
| 361 233 | 
             
                    info.objectAddress = address(registerable);
         | 
| 362 234 |  | 
| 363 235 | 
             
                    if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
         | 
| @@ -381,59 +253,30 @@ contract RegistryService is | |
| 381 253 | 
             
                    if(getRegistry().isRegistered(owner)) { 
         | 
| 382 254 | 
             
                        revert RegisterableOwnerIsRegistered();
         | 
| 383 255 | 
             
                    }
         | 
| 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 256 | 
             
                }
         | 
| 397 257 |  | 
| 398 | 
            -
                // parent checks done in registry because of approve()
         | 
| 399 258 | 
             
                function _verifyObjectInfo(
         | 
| 400 259 | 
             
                    IRegistry.ObjectInfo memory info,
         | 
| 401 | 
            -
                    ObjectType  | 
| 260 | 
            +
                    ObjectType expectedType
         | 
| 402 261 | 
             
                )
         | 
| 403 262 | 
             
                    internal
         | 
| 404 263 | 
             
                    view
         | 
| 405 264 | 
             
                {
         | 
| 406 | 
            -
                     | 
| 407 | 
            -
             | 
| 408 | 
            -
                    }
         | 
| 265 | 
            +
                    // enforce instead of check
         | 
| 266 | 
            +
                    info.objectAddress = address(0);
         | 
| 409 267 |  | 
| 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); 
         | 
| 268 | 
            +
                    if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
         | 
| 269 | 
            +
                        revert UnexpectedRegisterableType(expectedType, info.objectType);
         | 
| 417 270 | 
             
                    }
         | 
| 418 271 |  | 
| 419 | 
            -
                     | 
| 420 | 
            -
                    /*if(info.initialOwner == msg.sender) {
         | 
| 421 | 
            -
                        revert InitialOwnerIsParent();
         | 
| 422 | 
            -
                    }
         | 
| 272 | 
            +
                    address owner = info.initialOwner;
         | 
| 423 273 |  | 
| 424 | 
            -
                    if( | 
| 425 | 
            -
                        revert  | 
| 274 | 
            +
                    if(owner == address(0)) {
         | 
| 275 | 
            +
                        revert RegisterableOwnerIsZero();
         | 
| 426 276 | 
             
                    }
         | 
| 427 277 |  | 
| 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 | 
            -
                    }*/        
         | 
| 278 | 
            +
                    if(getRegistry().isRegistered(owner)) { 
         | 
| 279 | 
            +
                        revert RegisterableOwnerIsRegistered();
         | 
| 280 | 
            +
                    }
         | 
| 438 281 | 
             
                }
         | 
| 439 282 | 
             
            }
         | 
| @@ -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 | 
             
            }
         |