@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7eda15-119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -2
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +656 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +396 -104
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +152 -165
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +480 -9
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +526 -65
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +571 -30
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +455 -201
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +474 -139
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1085 -1354
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/{service/IComponentOwnerService.sol/IComponentOwnerService.json → IInstanceService.sol/IInstanceService.json} +176 -56
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1731 -1355
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1024 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +473 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +134 -75
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- 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 +37 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +194 -52
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +715 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -18
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -82
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +25 -245
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +181 -128
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +174 -386
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +223 -63
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +285 -49
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +196 -211
- 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 +314 -111
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +72 -76
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -5
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +14 -19
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +19 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -11
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +28 -33
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +19 -11
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +58 -34
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- 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/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- 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 +134 -8
- 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 +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/Component.sol +216 -0
- package/contracts/components/Distribution.sol +48 -53
- package/contracts/components/IComponent.sol +43 -0
- package/contracts/components/IDistributionComponent.sol +6 -5
- package/contracts/components/IPoolComponent.sol +11 -15
- package/contracts/components/IProductComponent.sol +9 -7
- package/contracts/components/Pool.sol +77 -96
- package/contracts/components/Product.sol +83 -117
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +64 -46
- package/contracts/instance/IInstanceService.sol +41 -0
- package/contracts/instance/Instance.sol +251 -69
- package/contracts/instance/InstanceAccessManager.sol +298 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +435 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +48 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/BundleService.sol +293 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +72 -20
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +7 -24
- package/contracts/instance/service/IProductService.sol +9 -76
- package/contracts/instance/service/PolicyService.sol +538 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +77 -116
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +157 -433
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +41 -26
- package/contracts/registry/IRegistry.sol +50 -25
- package/contracts/registry/IRegistryService.sol +52 -16
- package/contracts/registry/Registry.sol +266 -305
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +130 -236
- package/contracts/registry/RegistryServiceManager.sol +28 -9
- package/contracts/registry/ReleaseManager.sol +332 -0
- package/contracts/registry/TokenRegistry.sol +112 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/IRegisterable.sol +2 -4
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/NftOwnable.sol +7 -4
- package/contracts/shared/ProxyManager.sol +4 -4
- package/contracts/shared/Registerable.sol +12 -15
- package/contracts/shared/Service.sol +60 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +3 -3
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +6 -7
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +35 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +61 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +4 -1
- package/package.json +4 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -254
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- 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/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -79
- package/contracts/components/IBaseComponent.sol +0 -19
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/ComponentServiceBase.sol +0 -49
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -44
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -71
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/ComponentOwnerService.sol +0 -275
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
- package/contracts/types/ReferralId.sol +0 -48
@@ -1,15 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
6
|
|
6
|
-
import {IRegistry} from "
|
7
|
+
import {IRegistry} from "./IRegistry.sol";
|
7
8
|
import {IInstance} from "../instance/IInstance.sol";
|
8
9
|
|
9
10
|
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
10
|
-
import {IComponent
|
11
|
-
import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
|
12
|
-
import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
|
11
|
+
import {IComponent} from "../../contracts/components/IComponent.sol";
|
13
12
|
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
14
13
|
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
15
14
|
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
@@ -17,352 +16,247 @@ import {IDistributionComponent} from "../../contracts/components/IDistributionCo
|
|
17
16
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
18
17
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
19
18
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
19
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
20
20
|
|
21
21
|
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
22
|
-
import {ObjectType, REGISTRY,
|
22
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
23
23
|
import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
|
24
24
|
import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
|
25
25
|
import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
|
26
26
|
import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
|
27
27
|
|
28
|
-
import {
|
29
|
-
import {IService} from "
|
28
|
+
import {Service} from "../shared/Service.sol";
|
29
|
+
import {IService} from "../shared/IService.sol";
|
30
30
|
import {IRegistryService} from "./IRegistryService.sol";
|
31
|
-
import {Registry} from "
|
31
|
+
import {Registry} from "./Registry.sol";
|
32
32
|
|
33
33
|
contract RegistryService is
|
34
|
-
|
34
|
+
AccessManagedUpgradeable,
|
35
|
+
Service,
|
35
36
|
IRegistryService
|
36
37
|
{
|
37
38
|
using NftIdLib for NftId;
|
38
39
|
|
39
|
-
error NotRegistryOwner();
|
40
|
-
error MissingAllowance();
|
41
|
-
|
42
|
-
error NotToken();
|
43
|
-
error NotService();
|
44
|
-
error NotComponent();
|
45
|
-
error NotInstance();
|
46
|
-
|
47
|
-
error InvalidAddress(address registerableAddress);
|
48
|
-
error InvalidInitialOwner(address initialOwner);
|
49
|
-
error SelfRegistration();
|
50
|
-
error InvalidType(ObjectType objectType);
|
51
|
-
|
52
|
-
string public constant NAME = "RegistryService";
|
53
|
-
|
54
40
|
// TODO update to real hash when registry is stable
|
55
41
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
56
42
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
// CAN NOT register itself
|
64
|
-
// IMPORTANT: MUST NOT call untrusted contract inbetween calls to registry/instance (trusted contracts)
|
65
|
-
// motivation: registry/instance state may change during external call
|
66
|
-
// TODO it may be usefull to have transferable token nft in order to delist token, make it invalid for new beginings
|
67
|
-
// TODO: MUST prohibit registration of precompiles addresses
|
68
|
-
function registerToken(address tokenAddress)
|
69
|
-
external
|
70
|
-
returns(NftId nftId)
|
43
|
+
function registerInstance(IRegisterable instance, address owner)
|
44
|
+
external
|
45
|
+
restricted
|
46
|
+
returns(
|
47
|
+
IRegistry.ObjectInfo memory info
|
48
|
+
)
|
71
49
|
{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
// registryOwner can not register IRegisterable as TOKEN
|
76
|
-
try registerable.supportsInterface(type(IRegisterable).interfaceId) returns(bool result) {
|
77
|
-
isRegisterable = result;
|
78
|
-
} catch {
|
79
|
-
isRegisterable = false;
|
80
|
-
}
|
81
|
-
|
82
|
-
if(isRegisterable) {
|
83
|
-
revert NotToken();
|
84
|
-
}
|
85
|
-
|
86
|
-
NftId registryNftId = _registry.getNftId(address(_registry));
|
87
|
-
if(msg.sender != _registry.ownerOf(registryNftId)) {
|
88
|
-
revert NotRegistryOwner();
|
50
|
+
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
51
|
+
revert NotInstance();
|
89
52
|
}
|
90
53
|
|
91
|
-
|
92
|
-
|
93
|
-
registryNftId, // parent nft id
|
94
|
-
TOKEN(),
|
95
|
-
false, // isInterceptor
|
96
|
-
tokenAddress,
|
97
|
-
NFT_LOCK_ADDRESS,
|
98
|
-
"" // any value
|
99
|
-
);
|
54
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
55
|
+
info.nftId = _registry.register(info);
|
100
56
|
|
101
|
-
|
57
|
+
instance.linkToRegisteredNftId(); // asume safe
|
102
58
|
}
|
103
59
|
|
104
|
-
|
105
|
-
// msg.sender - ONLY registry owner
|
106
|
-
// CAN register ONLY valid object-parent types combinations for SERVICE
|
107
|
-
// CAN register ONLY IRegisterable address he owns
|
108
|
-
// CAN NOT register itself
|
109
|
-
// IMPORTANT: MUST NOT check owner before calling external contract
|
110
|
-
function registerService(IService service)
|
60
|
+
function registerProduct(IComponent product, address owner)
|
111
61
|
external
|
62
|
+
restricted
|
112
63
|
returns(
|
113
|
-
IRegistry.ObjectInfo memory info
|
114
|
-
bytes memory data
|
64
|
+
IRegistry.ObjectInfo memory info
|
115
65
|
)
|
116
66
|
{
|
117
|
-
if
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
(
|
122
|
-
info,
|
123
|
-
data
|
124
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
125
|
-
|
126
|
-
NftId registryNftId = _registry.getNftId(address(_registry));
|
127
|
-
if(msg.sender != _registry.ownerOf(registryNftId)) {
|
128
|
-
revert NotRegistryOwner();
|
67
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
68
|
+
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
69
|
+
revert NotProduct();
|
129
70
|
}
|
130
71
|
|
131
|
-
info
|
72
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
132
73
|
info.nftId = _registry.register(info);
|
133
|
-
service.linkToRegisteredNftId();
|
134
|
-
|
135
|
-
return (
|
136
|
-
info,
|
137
|
-
data
|
138
|
-
);
|
139
74
|
}
|
140
75
|
|
141
|
-
|
142
|
-
//function registerComponent(IBaseComponent component, ObjectType componentType)
|
143
|
-
function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
|
76
|
+
function registerPool(IComponent pool, address owner)
|
144
77
|
external
|
78
|
+
restricted
|
145
79
|
returns(
|
146
|
-
IRegistry.ObjectInfo memory info
|
147
|
-
bytes memory data
|
80
|
+
IRegistry.ObjectInfo memory info
|
148
81
|
)
|
149
82
|
{
|
150
|
-
if(!
|
151
|
-
revert
|
83
|
+
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
84
|
+
revert NotPool();
|
152
85
|
}
|
153
86
|
|
154
|
-
(
|
155
|
-
info,
|
156
|
-
data
|
157
|
-
) = _getAndVerifyContractInfo(component, componentType, owner);
|
158
|
-
|
159
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
160
|
-
|
161
|
-
if(!_registry.allowance(serviceNftId, componentType)) {
|
162
|
-
revert MissingAllowance();
|
163
|
-
}
|
164
|
-
|
87
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
165
88
|
info.nftId = _registry.register(info);
|
166
|
-
component.linkToRegisteredNftId();
|
167
|
-
|
168
|
-
return (
|
169
|
-
info,
|
170
|
-
data
|
171
|
-
);
|
172
89
|
}
|
173
90
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
external
|
91
|
+
function registerDistribution(IComponent distribution, address owner)
|
92
|
+
external
|
93
|
+
restricted
|
178
94
|
returns(
|
179
|
-
IRegistry.ObjectInfo memory info
|
180
|
-
bytes memory data
|
95
|
+
IRegistry.ObjectInfo memory info
|
181
96
|
)
|
182
97
|
{
|
183
|
-
if(
|
184
|
-
revert
|
98
|
+
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
99
|
+
revert NotDistribution();
|
185
100
|
}
|
186
101
|
|
187
|
-
(
|
188
|
-
info,
|
189
|
-
data
|
190
|
-
) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);// owner);
|
191
|
-
|
102
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
192
103
|
info.nftId = _registry.register(info);
|
193
|
-
instance.linkToRegisteredNftId();
|
194
|
-
|
195
|
-
return (
|
196
|
-
info,
|
197
|
-
data
|
198
|
-
);
|
199
104
|
}
|
200
105
|
|
201
106
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
202
|
-
external
|
107
|
+
external
|
108
|
+
restricted
|
203
109
|
returns(NftId nftId)
|
204
110
|
{
|
205
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
206
|
-
|
207
|
-
if(_registry.allowance(senderNftId, POLICY()) == false) {
|
208
|
-
revert MissingAllowance();
|
209
|
-
}
|
210
|
-
|
211
111
|
_verifyObjectInfo(info, POLICY());
|
212
112
|
|
213
113
|
nftId = _registry.register(info);
|
214
114
|
}
|
215
115
|
|
216
116
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
217
|
-
external
|
117
|
+
external
|
118
|
+
restricted
|
218
119
|
returns(NftId nftId)
|
219
120
|
{
|
220
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
221
|
-
|
222
|
-
if(_registry.allowance(senderNftId, BUNDLE()) == false) {
|
223
|
-
revert MissingAllowance();
|
224
|
-
}
|
225
|
-
|
226
121
|
_verifyObjectInfo(info, BUNDLE());
|
227
122
|
|
228
123
|
nftId = _registry.register(info);
|
229
124
|
}
|
230
125
|
|
126
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
127
|
+
external
|
128
|
+
restricted
|
129
|
+
returns(NftId nftId)
|
130
|
+
{
|
131
|
+
_verifyObjectInfo(info, STAKE());
|
231
132
|
|
232
|
-
|
233
|
-
function getName() public pure override(IService, ServiceBase) returns(string memory) {
|
234
|
-
return NAME;
|
133
|
+
nftId = _registry.register(info);
|
235
134
|
}
|
236
135
|
|
136
|
+
// From IService
|
137
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
138
|
+
return REGISTRY();
|
139
|
+
}
|
237
140
|
|
238
141
|
// from Versionable
|
239
142
|
|
240
143
|
/// @dev top level initializer
|
241
|
-
// 1) registry is non upgradeable -> don't need a proxy and uses constructor !
|
242
|
-
// 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
|
243
|
-
// 3) deploy registry -> pass registry service address as constructor argument
|
244
|
-
// registry is getting instantiated and locked to registry service address forever
|
245
144
|
function _initialize(
|
246
145
|
address owner,
|
247
|
-
bytes memory
|
146
|
+
bytes memory data
|
248
147
|
)
|
249
148
|
internal
|
250
149
|
initializer
|
251
150
|
virtual override
|
252
151
|
{
|
253
|
-
|
254
|
-
|
255
|
-
|
152
|
+
(
|
153
|
+
address initialAuthority,
|
154
|
+
address registry
|
155
|
+
) = abi.decode(data, (address, address));
|
156
|
+
|
157
|
+
__AccessManaged_init(initialAuthority);
|
256
158
|
|
257
|
-
|
258
|
-
registryByteCodeWithInitCode,
|
259
|
-
encodedConstructorArguments);
|
159
|
+
_initializeService(address(registry), owner);
|
260
160
|
|
261
|
-
|
262
|
-
|
263
|
-
REGISTRY_CREATION_CODE_HASH);
|
161
|
+
_registerInterface(type(IRegistryService).interfaceId);
|
162
|
+
}
|
264
163
|
|
265
|
-
|
266
|
-
NftId registryNftId = registry.getNftId(registryAddress);
|
164
|
+
// from IRegisterable
|
267
165
|
|
268
|
-
|
269
|
-
|
166
|
+
function getFunctionConfigs()
|
167
|
+
external
|
168
|
+
pure
|
169
|
+
returns(
|
170
|
+
FunctionConfig[] memory config
|
171
|
+
)
|
172
|
+
{
|
173
|
+
config = new FunctionConfig[](6);
|
270
174
|
|
271
|
-
|
175
|
+
// order of service registrations MUST be reverse to this array
|
176
|
+
/*config[-1].serviceDomain = STAKE();
|
177
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
178
|
+
|
179
|
+
config[0].serviceDomain = POLICY();
|
180
|
+
config[0].selector = RegistryService.registerPolicy.selector;
|
181
|
+
|
182
|
+
config[1].serviceDomain = BUNDLE();
|
183
|
+
config[1].selector = RegistryService.registerBundle.selector;
|
184
|
+
|
185
|
+
config[2].serviceDomain = PRODUCT();
|
186
|
+
config[2].selector = RegistryService.registerProduct.selector;
|
187
|
+
|
188
|
+
config[3].serviceDomain = POOL();
|
189
|
+
config[3].selector = RegistryService.registerPool.selector;
|
190
|
+
|
191
|
+
config[4].serviceDomain = DISTRIBUTION();
|
192
|
+
config[4].selector = RegistryService.registerDistribution.selector;
|
193
|
+
|
194
|
+
// registerInstance() have no restriction
|
195
|
+
config[5].serviceDomain = INSTANCE();
|
196
|
+
config[5].selector = RegistryService.registerInstance.selector;
|
272
197
|
}
|
273
198
|
|
274
|
-
//
|
199
|
+
// Internal
|
200
|
+
|
275
201
|
function _getAndVerifyContractInfo(
|
276
202
|
IRegisterable registerable,
|
277
|
-
ObjectType
|
278
|
-
address
|
203
|
+
ObjectType expectedType, // assume can be valid only
|
204
|
+
address expectedOwner // assume can be 0 when given by other service
|
279
205
|
)
|
280
206
|
internal
|
207
|
+
// view
|
281
208
|
returns(
|
282
|
-
IRegistry.ObjectInfo memory info
|
283
|
-
bytes memory data
|
209
|
+
IRegistry.ObjectInfo memory info
|
284
210
|
)
|
285
211
|
{
|
286
|
-
(
|
287
|
-
|
288
|
-
data
|
289
|
-
) = registerable.getInitialInfo();
|
212
|
+
info = registerable.getInitialInfo();
|
213
|
+
info.objectAddress = address(registerable);
|
290
214
|
|
291
|
-
if(info.
|
292
|
-
revert
|
215
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
216
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
293
217
|
}
|
294
218
|
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
revert
|
219
|
+
address owner = info.initialOwner;
|
220
|
+
|
221
|
+
if(owner != expectedOwner) { // registerable owner protection
|
222
|
+
revert NotRegisterableOwner(expectedOwner);
|
299
223
|
}
|
300
224
|
|
301
|
-
if(
|
225
|
+
if(owner == address(registerable)) {
|
302
226
|
revert SelfRegistration();
|
303
227
|
}
|
228
|
+
|
229
|
+
if(owner == address(0)) {
|
230
|
+
revert RegisterableOwnerIsZero();
|
231
|
+
}
|
304
232
|
|
305
|
-
if(
|
306
|
-
revert
|
233
|
+
if(getRegistry().isRegistered(owner)) {
|
234
|
+
revert RegisterableOwnerIsRegistered();
|
307
235
|
}
|
308
|
-
|
309
|
-
/*NftId parentNftId = info.parentNftId;
|
310
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
311
|
-
|
312
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
313
|
-
revert InvalidParent(parentNftId);
|
314
|
-
}*/
|
315
|
-
|
316
|
-
return(
|
317
|
-
info,
|
318
|
-
data
|
319
|
-
);
|
320
236
|
}
|
321
237
|
|
322
|
-
// parent checks done in registry because of approve()
|
323
238
|
function _verifyObjectInfo(
|
324
239
|
IRegistry.ObjectInfo memory info,
|
325
|
-
ObjectType
|
240
|
+
ObjectType expectedType
|
326
241
|
)
|
327
242
|
internal
|
328
243
|
view
|
329
244
|
{
|
330
|
-
|
331
|
-
|
332
|
-
}
|
245
|
+
// enforce instead of check
|
246
|
+
info.objectAddress = address(0);
|
333
247
|
|
334
|
-
if(
|
335
|
-
|
336
|
-
info.initialOwner == address(0)) {
|
337
|
-
// TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
|
338
|
-
// what are motivations to do so?
|
339
|
-
// at least registered contract can not register objects by itself, SERVICE,
|
340
|
-
revert InvalidInitialOwner(info.initialOwner);
|
248
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
249
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
341
250
|
}
|
342
251
|
|
343
|
-
|
344
|
-
/*if(info.initialOwner == msg.sender) {
|
345
|
-
revert InitialOwnerIsParent();
|
346
|
-
}
|
252
|
+
address owner = info.initialOwner;
|
347
253
|
|
348
|
-
if(
|
349
|
-
revert
|
254
|
+
if(owner == address(0)) {
|
255
|
+
revert RegisterableOwnerIsZero();
|
350
256
|
}
|
351
257
|
|
352
|
-
if(
|
353
|
-
revert
|
354
|
-
}*/
|
355
|
-
|
356
|
-
|
357
|
-
if(info.objectType != objectType) {
|
358
|
-
revert InvalidType(info.objectType);
|
258
|
+
if(getRegistry().isRegistered(owner)) {
|
259
|
+
revert RegisterableOwnerIsRegistered();
|
359
260
|
}
|
360
|
-
|
361
|
-
/*NftId parentNftId = info.parentNftId;
|
362
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
363
|
-
|
364
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
365
|
-
revert InvalidParent(parentNftId);
|
366
|
-
}*/
|
367
261
|
}
|
368
|
-
}
|
262
|
+
}
|
@@ -1,38 +1,57 @@
|
|
1
1
|
// SPDX-License-Identifier: UNLICENSED
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
|
+
|
6
|
+
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
7
|
+
|
4
8
|
import {Registry} from "./Registry.sol";
|
5
9
|
import {IVersionable} from "../shared/IVersionable.sol";
|
6
10
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
7
11
|
import {RegistryService} from "./RegistryService.sol";
|
12
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
8
13
|
|
9
14
|
|
10
15
|
contract RegistryServiceManager is
|
11
16
|
ProxyManager
|
12
17
|
{
|
13
|
-
|
18
|
+
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
19
|
+
|
20
|
+
RegistryService private immutable _registryService;
|
14
21
|
|
15
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
16
23
|
constructor(
|
17
|
-
|
24
|
+
address initialAuthority, // used by implementation
|
25
|
+
address registry) // used by implementation
|
18
26
|
ProxyManager()
|
19
27
|
{
|
28
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
29
|
+
require(registry > address(0), "RegistryServiceManager: registry is 0");
|
30
|
+
|
31
|
+
// implementation's initializer func `data` argument
|
32
|
+
bytes memory initializationData = abi.encode(
|
33
|
+
initialAuthority,
|
34
|
+
registry);
|
35
|
+
|
20
36
|
IVersionable versionable = deploy(
|
21
37
|
address(new RegistryService()),
|
22
|
-
|
38
|
+
initializationData);
|
23
39
|
|
24
40
|
_registryService = RegistryService(address(versionable));
|
41
|
+
}
|
25
42
|
|
26
|
-
|
27
|
-
_linkToNftOwnable(
|
28
|
-
address(_registryService.getRegistry()),
|
29
|
-
address(_registryService));
|
43
|
+
// from IRegisterable
|
30
44
|
|
31
|
-
|
32
|
-
|
45
|
+
// IMPORTANT: registry here and in constructor MUST be the same
|
46
|
+
function linkToNftOwnable(address registry)
|
47
|
+
public
|
48
|
+
onlyOwner
|
49
|
+
{
|
50
|
+
_linkToNftOwnable(registry, address(_registryService));
|
33
51
|
}
|
34
52
|
|
35
53
|
//--- view functions ----------------------------------------------------//
|
54
|
+
|
36
55
|
function getRegistryService()
|
37
56
|
external
|
38
57
|
view
|