@etherisc/gif-next 0.0.2-cd89a0b-062 → 0.0.2-cdac553-411
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 +108 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +116 -2
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +256 -31
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +106 -3
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +24 -163
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -225
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -216
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +336 -65
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +314 -41
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +325 -1744
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2300 -1340
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1388 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +891 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +492 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +95 -2
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- 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 +211 -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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +178 -41
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +156 -25
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +174 -27
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +448 -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 +294 -99
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +203 -18
- 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 +249 -137
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +395 -43
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +107 -42
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -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 +4 -0
- package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +76 -35
- 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 +32 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +137 -39
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +106 -94
- 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 +120 -6
- 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 +142 -14
- 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 +2 -2
- 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/BaseComponent.sol +16 -4
- package/contracts/components/Distribution.sol +23 -12
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +5 -6
- package/contracts/components/IPoolComponent.sol +1 -4
- package/contracts/components/IProductComponent.sol +3 -7
- package/contracts/components/Pool.sol +28 -27
- package/contracts/components/Product.sol +44 -46
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +115 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +32 -47
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +423 -65
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +306 -0
- package/contracts/instance/InstanceService.sol +180 -0
- package/contracts/instance/InstanceServiceManager.sol +56 -0
- package/contracts/instance/base/ComponentServiceBase.sol +4 -12
- 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 +38 -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 +44 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +145 -100
- package/contracts/instance/service/DistributionService.sol +66 -15
- package/contracts/instance/service/DistributionServiceManager.sol +53 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +1 -1
- package/contracts/instance/service/IProductService.sol +3 -3
- package/contracts/instance/service/PoolService.sol +108 -46
- package/contracts/instance/service/PoolServiceManager.sol +53 -0
- package/contracts/registry/ChainNft.sol +40 -25
- package/contracts/registry/IRegistry.sol +48 -27
- package/contracts/registry/IRegistryService.sol +16 -12
- package/contracts/registry/Registry.sol +167 -168
- package/contracts/registry/RegistryService.sol +160 -136
- package/contracts/registry/RegistryServiceManager.sol +38 -10
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +3 -8
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +83 -34
- package/contracts/shared/ProxyManager.sol +3 -12
- package/contracts/shared/Registerable.sol +15 -42
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +54 -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 +3 -5
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- 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 +60 -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/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- 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/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 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- 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/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
- 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/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -43
- 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/ProductService.sol +0 -509
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/IOwnable.sol +0 -6
- 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,14 +1,15 @@
|
|
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, IComponentModule} from "../../contracts/instance/module/component/IComponent.sol";
|
11
|
-
import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
|
11
|
+
// import {IComponent, IComponentModule} from "../../contracts/instance/module/component/IComponent.sol";
|
12
|
+
// import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
|
12
13
|
import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
|
13
14
|
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
14
15
|
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
@@ -19,152 +20,168 @@ import {Versionable} from "../../contracts/shared/Versionable.sol";
|
|
19
20
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
20
21
|
|
21
22
|
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
22
|
-
import {ObjectType, REGISTRY,
|
23
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE} from "../../contracts/types/ObjectType.sol";
|
23
24
|
import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
|
24
25
|
import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
|
25
26
|
import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
|
26
27
|
import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
|
27
28
|
|
28
|
-
import {
|
29
|
-
import {IService} from "
|
29
|
+
import {Service} from "../shared/Service.sol";
|
30
|
+
import {IService} from "../shared/IService.sol";
|
30
31
|
import {IRegistryService} from "./IRegistryService.sol";
|
31
|
-
import {Registry} from "
|
32
|
+
import {Registry} from "./Registry.sol";
|
33
|
+
import {ChainNft} from "./ChainNft.sol";
|
32
34
|
|
33
35
|
contract RegistryService is
|
34
|
-
|
36
|
+
AccessManagedUpgradeable,
|
37
|
+
Service,
|
35
38
|
IRegistryService
|
36
39
|
{
|
37
40
|
using NftIdLib for NftId;
|
38
41
|
|
42
|
+
// TODO move errors to interface contract
|
43
|
+
error SelfRegistration();
|
39
44
|
error NotRegistryOwner();
|
40
|
-
error MissingAllowance();
|
41
45
|
|
42
|
-
error NotToken();
|
43
46
|
error NotService();
|
44
|
-
error NotComponent();
|
45
47
|
error NotInstance();
|
46
|
-
|
47
|
-
error
|
48
|
+
error NotProduct();
|
49
|
+
error NotPool();
|
50
|
+
error NotDistribution();
|
51
|
+
|
52
|
+
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
53
|
+
error NotRegisterableOwner(address expectedOwner);
|
54
|
+
error RegisterableOwnerIsZero();
|
55
|
+
error RegisterableOwnerIsRegistered();
|
48
56
|
error InvalidInitialOwner(address initialOwner);
|
49
|
-
error
|
50
|
-
error InvalidType(ObjectType objectType);
|
57
|
+
error InvalidAddress(address registerableAddress);
|
51
58
|
|
59
|
+
// Initial value for constant variable has to be compile-time constant
|
60
|
+
// TODO define types as constants?
|
61
|
+
//ObjectType public constant SERVICE_TYPE = REGISTRY();
|
52
62
|
string public constant NAME = "RegistryService";
|
53
63
|
|
54
64
|
// TODO update to real hash when registry is stable
|
55
65
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
56
66
|
|
57
|
-
address constant
|
67
|
+
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
58
68
|
|
59
69
|
/// @dev
|
60
70
|
// msg.sender - ONLY registry owner
|
61
|
-
// CAN register ANY non IRegisterable address
|
62
|
-
// CAN register ONLY valid object-parent types combinations for TOKEN
|
63
71
|
// CAN NOT register itself
|
64
|
-
//
|
65
|
-
//
|
66
|
-
//
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
72
|
+
// CAN register ONLY valid object-parent types combinations for SERVICE
|
73
|
+
// CAN register ONLY IRegisterable address he owns
|
74
|
+
// IMPORTANT: MUST NOT check owner before calling external contract
|
75
|
+
function registerService(IService service)
|
76
|
+
external
|
77
|
+
// TODO restrict access - registryService.registerService must use accessmanager for checking permissions as
|
78
|
+
// services are not always owned by registry owner - actually only registry service is owned by registry owner
|
79
|
+
|
80
|
+
returns(
|
81
|
+
IRegistry.ObjectInfo memory info,
|
82
|
+
bytes memory data
|
83
|
+
)
|
71
84
|
{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
try registerable.supportsInterface(type(IRegisterable).interfaceId) returns(bool result) {
|
77
|
-
isRegisterable = result;
|
78
|
-
} catch {
|
79
|
-
isRegisterable = false;
|
85
|
+
|
86
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
87
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
88
|
+
revert NotService();
|
80
89
|
}
|
81
90
|
|
82
|
-
|
83
|
-
|
84
|
-
|
91
|
+
(
|
92
|
+
info,
|
93
|
+
data
|
94
|
+
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
85
95
|
|
86
|
-
|
96
|
+
info.nftId = _registry.register(info);
|
97
|
+
service.linkToRegisteredNftId();
|
98
|
+
return (
|
99
|
+
info,
|
100
|
+
data
|
101
|
+
);
|
102
|
+
}
|
87
103
|
|
88
|
-
|
89
|
-
|
104
|
+
// If msg.sender is approved service:
|
105
|
+
// 1) add owner arg (service MUST pass it's msg.sender as owner)
|
106
|
+
// 2) check service allowance
|
107
|
+
// 3) comment self registrstion check
|
108
|
+
//function registerInstance(IRegisterable instance, address owner)
|
109
|
+
function registerInstance(IRegisterable instance)
|
110
|
+
external
|
111
|
+
returns(
|
112
|
+
IRegistry.ObjectInfo memory info,
|
113
|
+
bytes memory data
|
114
|
+
)
|
115
|
+
{
|
116
|
+
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
117
|
+
revert NotInstance();
|
90
118
|
}
|
91
119
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
false, // isInterceptor
|
97
|
-
tokenAddress,
|
98
|
-
NFT_LOCK_ADDRESS,
|
99
|
-
"" // any value
|
100
|
-
);
|
120
|
+
(
|
121
|
+
info,
|
122
|
+
data
|
123
|
+
) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
|
101
124
|
|
102
|
-
nftId =
|
125
|
+
info.nftId = _registry.register(info);
|
126
|
+
instance.linkToRegisteredNftId(); // asume safe
|
127
|
+
|
128
|
+
return (
|
129
|
+
info,
|
130
|
+
data
|
131
|
+
);
|
103
132
|
}
|
104
133
|
|
105
|
-
|
106
|
-
// msg.sender - ONLY registry owner
|
107
|
-
// CAN register ONLY valid object-parent types combinations for SERVICE
|
108
|
-
// CAN register ONLY IRegisterable address he owns
|
109
|
-
// CAN NOT register itself
|
110
|
-
// IMPORTANT: MUST NOT check owner before calling external contract
|
111
|
-
function registerService(IService service)
|
134
|
+
function registerProduct(IBaseComponent product, address owner)
|
112
135
|
external
|
136
|
+
restricted
|
113
137
|
returns(
|
114
138
|
IRegistry.ObjectInfo memory info,
|
115
139
|
bytes memory data
|
116
140
|
)
|
117
141
|
{
|
118
|
-
if
|
119
|
-
|
120
|
-
|
142
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
143
|
+
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
144
|
+
revert NotProduct();
|
145
|
+
}
|
121
146
|
|
122
147
|
(
|
123
148
|
info,
|
124
149
|
data
|
125
|
-
) = _getAndVerifyContractInfo(
|
126
|
-
|
127
|
-
IRegistry registry = getRegistry();
|
150
|
+
) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
128
151
|
|
129
|
-
|
130
|
-
revert NotRegistryOwner();
|
131
|
-
}
|
152
|
+
NftId serviceNftId = _registry.getNftId(msg.sender);
|
132
153
|
|
133
|
-
info.
|
134
|
-
|
154
|
+
info.nftId = _registry.register(info);
|
155
|
+
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
156
|
+
product.linkToRegisteredNftId();
|
135
157
|
|
136
158
|
return (
|
137
159
|
info,
|
138
160
|
data
|
139
|
-
);
|
161
|
+
);
|
140
162
|
}
|
141
163
|
|
142
|
-
|
143
|
-
//function registerComponent(IBaseComponent component, ObjectType componentType)
|
144
|
-
function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
|
164
|
+
function registerPool(IBaseComponent pool, address owner)
|
145
165
|
external
|
166
|
+
restricted
|
146
167
|
returns(
|
147
168
|
IRegistry.ObjectInfo memory info,
|
148
169
|
bytes memory data
|
149
170
|
)
|
150
171
|
{
|
151
|
-
if(
|
152
|
-
revert
|
172
|
+
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
173
|
+
revert NotPool();
|
153
174
|
}
|
154
175
|
|
155
176
|
(
|
156
177
|
info,
|
157
178
|
data
|
158
|
-
) = _getAndVerifyContractInfo(
|
159
|
-
|
160
|
-
IRegistry registry = getRegistry();
|
161
|
-
NftId serviceNftId = registry.getNftId(msg.sender);
|
179
|
+
) = _getAndVerifyContractInfo(pool, POOL(), owner);
|
162
180
|
|
163
|
-
|
164
|
-
revert MissingAllowance();
|
165
|
-
}
|
181
|
+
NftId serviceNftId = _registry.getNftId(msg.sender);
|
166
182
|
|
167
|
-
info.nftId =
|
183
|
+
info.nftId = _registry.register(info);
|
184
|
+
pool.linkToRegisteredNftId();
|
168
185
|
|
169
186
|
return (
|
170
187
|
info,
|
@@ -172,75 +189,67 @@ contract RegistryService is
|
|
172
189
|
);
|
173
190
|
}
|
174
191
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
external
|
192
|
+
function registerDistribution(IBaseComponent distribution, address owner)
|
193
|
+
external
|
194
|
+
restricted
|
179
195
|
returns(
|
180
196
|
IRegistry.ObjectInfo memory info,
|
181
197
|
bytes memory data
|
182
198
|
)
|
183
199
|
{
|
184
|
-
if(
|
185
|
-
revert
|
200
|
+
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
201
|
+
revert NotDistribution();
|
186
202
|
}
|
187
203
|
|
188
204
|
(
|
189
205
|
info,
|
190
206
|
data
|
191
|
-
) = _getAndVerifyContractInfo(
|
207
|
+
) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
192
208
|
|
193
|
-
|
209
|
+
NftId serviceNftId = _registry.getNftId(msg.sender);
|
194
210
|
|
195
|
-
|
196
|
-
|
197
|
-
//}
|
211
|
+
info.nftId = _registry.register(info);
|
212
|
+
distribution.linkToRegisteredNftId();
|
198
213
|
|
199
|
-
info.nftId = registry.register(info);
|
200
|
-
|
201
214
|
return (
|
202
215
|
info,
|
203
|
-
data
|
204
|
-
);
|
216
|
+
data
|
217
|
+
);
|
205
218
|
}
|
206
219
|
|
207
220
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
208
|
-
external
|
221
|
+
external
|
222
|
+
restricted
|
209
223
|
returns(NftId nftId)
|
210
224
|
{
|
211
|
-
|
212
|
-
NftId senderNftId = registry.getNftId(msg.sender);
|
213
|
-
|
214
|
-
if(registry.allowance(senderNftId, POLICY()) == false) {
|
215
|
-
revert MissingAllowance();
|
216
|
-
}
|
225
|
+
NftId senderNftId = _registry.getNftId(msg.sender);
|
217
226
|
|
218
227
|
_verifyObjectInfo(info, POLICY());
|
219
228
|
|
220
|
-
nftId =
|
229
|
+
nftId = _registry.register(info);
|
221
230
|
}
|
222
231
|
|
223
232
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
224
|
-
external
|
233
|
+
external
|
234
|
+
restricted
|
225
235
|
returns(NftId nftId)
|
226
236
|
{
|
227
|
-
IRegistry registry = getRegistry();
|
228
|
-
NftId senderNftId = registry.getNftId(msg.sender);
|
229
237
|
|
230
|
-
|
231
|
-
revert MissingAllowance();
|
232
|
-
}
|
238
|
+
NftId senderNftId = _registry.getNftId(msg.sender);
|
233
239
|
|
234
240
|
_verifyObjectInfo(info, BUNDLE());
|
235
241
|
|
236
|
-
nftId =
|
242
|
+
nftId = _registry.register(info);
|
237
243
|
}
|
238
244
|
|
239
245
|
|
240
246
|
// From IService
|
241
|
-
function getName() public pure override(IService,
|
247
|
+
function getName() public pure override(IService, Service) returns(string memory) {
|
242
248
|
return NAME;
|
243
249
|
}
|
250
|
+
//function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
|
251
|
+
// return SERVICE_TYPE;
|
252
|
+
//}
|
244
253
|
|
245
254
|
|
246
255
|
// from Versionable
|
@@ -252,12 +261,19 @@ contract RegistryService is
|
|
252
261
|
// registry is getting instantiated and locked to registry service address forever
|
253
262
|
function _initialize(
|
254
263
|
address owner,
|
255
|
-
bytes memory
|
264
|
+
bytes memory data
|
256
265
|
)
|
257
266
|
internal
|
258
267
|
initializer
|
259
268
|
virtual override
|
260
269
|
{
|
270
|
+
(
|
271
|
+
address initialAuthority,
|
272
|
+
bytes memory registryByteCodeWithInitCode
|
273
|
+
) = abi.decode(data, (address, bytes));
|
274
|
+
|
275
|
+
__AccessManaged_init(initialAuthority);
|
276
|
+
|
261
277
|
bytes memory encodedConstructorArguments = abi.encode(
|
262
278
|
owner,
|
263
279
|
getMajorVersion());
|
@@ -266,25 +282,28 @@ contract RegistryService is
|
|
266
282
|
registryByteCodeWithInitCode,
|
267
283
|
encodedConstructorArguments);
|
268
284
|
|
269
|
-
|
285
|
+
IRegistry registry = IRegistry(ContractDeployerLib.deploy(
|
270
286
|
registryCreationCode,
|
271
|
-
REGISTRY_CREATION_CODE_HASH);
|
287
|
+
REGISTRY_CREATION_CODE_HASH));
|
272
288
|
|
273
|
-
|
274
|
-
NftId registryNftId = registry.getNftId(registryAddress);
|
289
|
+
NftId registryNftId = registry.getNftId(address(registry));
|
275
290
|
|
276
|
-
|
291
|
+
_initializeService(address(registry), owner);
|
277
292
|
|
293
|
+
// TODO why do registry service proxy need to keep its nftId??? -> no registryServiceNftId checks in implementation
|
294
|
+
// if they are -> use registry address to obtain owner of registry service nft (works the same with any registerable and(or) implementation)
|
295
|
+
linkToRegisteredNftId();
|
278
296
|
_registerInterface(type(IRegistryService).interfaceId);
|
279
297
|
}
|
280
298
|
|
281
299
|
// parent check done in registry because of approve()
|
282
300
|
function _getAndVerifyContractInfo(
|
283
301
|
IRegisterable registerable,
|
284
|
-
ObjectType
|
285
|
-
address
|
302
|
+
ObjectType expectedType, // assume can be valid only
|
303
|
+
address expectedOwner // assume can be 0
|
286
304
|
)
|
287
305
|
internal
|
306
|
+
view
|
288
307
|
returns(
|
289
308
|
IRegistry.ObjectInfo memory info,
|
290
309
|
bytes memory data
|
@@ -294,23 +313,33 @@ contract RegistryService is
|
|
294
313
|
info,
|
295
314
|
data
|
296
315
|
) = registerable.getInitialInfo();
|
316
|
+
info.objectAddress = address(registerable);
|
297
317
|
|
298
|
-
if(info.
|
299
|
-
revert
|
318
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
319
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
300
320
|
}
|
301
321
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
322
|
+
address owner = info.initialOwner;
|
323
|
+
|
324
|
+
// solhint-disable-next-line
|
325
|
+
if(expectedType == INSTANCE()) {
|
326
|
+
// any address may create a new instance via instance service
|
327
|
+
} else {
|
328
|
+
if(owner != expectedOwner) { // registerable owner protection
|
329
|
+
revert NotRegisterableOwner(expectedOwner);
|
330
|
+
}
|
306
331
|
}
|
307
332
|
|
308
|
-
if(
|
333
|
+
if(owner == address(registerable)) {
|
309
334
|
revert SelfRegistration();
|
310
335
|
}
|
336
|
+
|
337
|
+
if(owner == address(0)) {
|
338
|
+
revert RegisterableOwnerIsZero();
|
339
|
+
}
|
311
340
|
|
312
|
-
if(
|
313
|
-
revert
|
341
|
+
if(getRegistry().isRegistered(owner)) {
|
342
|
+
revert RegisterableOwnerIsRegistered();
|
314
343
|
}
|
315
344
|
|
316
345
|
/*NftId parentNftId = info.parentNftId;
|
@@ -360,11 +389,6 @@ contract RegistryService is
|
|
360
389
|
revert InitialOwnerIsRegistry();
|
361
390
|
}*/
|
362
391
|
|
363
|
-
|
364
|
-
if(info.objectType != objectType) {
|
365
|
-
revert InvalidType(info.objectType);
|
366
|
-
}
|
367
|
-
|
368
392
|
/*NftId parentNftId = info.parentNftId;
|
369
393
|
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
370
394
|
|
@@ -372,4 +396,4 @@ contract RegistryService is
|
|
372
396
|
revert InvalidParent(parentNftId);
|
373
397
|
}*/
|
374
398
|
}
|
375
|
-
}
|
399
|
+
}
|
@@ -1,47 +1,67 @@
|
|
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
|
-
import {IRegistry} from "./IRegistry.sol";
|
6
9
|
import {IVersionable} from "../shared/IVersionable.sol";
|
7
10
|
import {ProxyManager} from "../shared/ProxyManager.sol";
|
8
11
|
import {RegistryService} from "./RegistryService.sol";
|
12
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
9
13
|
|
10
14
|
|
11
15
|
contract RegistryServiceManager is
|
12
16
|
ProxyManager
|
13
17
|
{
|
14
|
-
|
18
|
+
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
15
19
|
|
16
|
-
|
20
|
+
AccessManager private _accessManager;
|
21
|
+
RegistryService private _registryService;
|
22
|
+
TokenRegistry private _tokenRegistry;
|
17
23
|
|
18
24
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
19
25
|
constructor(
|
20
|
-
|
21
|
-
// bytes memory registryBytecodeWithInitCode // type(Registry).creationCode
|
26
|
+
address accessManager
|
22
27
|
)
|
23
28
|
ProxyManager()
|
24
29
|
{
|
25
|
-
|
26
|
-
|
27
|
-
|
30
|
+
_accessManager = AccessManager(accessManager);
|
31
|
+
|
32
|
+
bytes memory initializationData = abi.encode(accessManager, type(Registry).creationCode);
|
28
33
|
|
29
34
|
IVersionable versionable = deploy(
|
30
35
|
address(new RegistryService()),
|
31
|
-
|
36
|
+
initializationData);
|
32
37
|
|
33
38
|
_registryService = RegistryService(address(versionable));
|
34
39
|
|
35
40
|
// link ownership of registry service manager ot nft owner of registry service
|
36
|
-
|
41
|
+
_linkToNftOwnable(
|
37
42
|
address(_registryService.getRegistry()),
|
38
43
|
address(_registryService));
|
39
44
|
|
45
|
+
// deploy token registry
|
46
|
+
|
47
|
+
// _tokenRegistry = new TokenRegistry(
|
48
|
+
// address(_registryService.getRegistry()),
|
49
|
+
// address(_registryService));
|
50
|
+
|
40
51
|
// implies that after this constructor call only upgrade functionality is available
|
41
52
|
_isDeployed = true;
|
42
53
|
}
|
43
54
|
|
44
55
|
//--- view functions ----------------------------------------------------//
|
56
|
+
|
57
|
+
function getAccessManager()
|
58
|
+
external
|
59
|
+
view
|
60
|
+
returns (AccessManager)
|
61
|
+
{
|
62
|
+
return _accessManager;
|
63
|
+
}
|
64
|
+
|
45
65
|
function getRegistryService()
|
46
66
|
external
|
47
67
|
view
|
@@ -49,4 +69,12 @@ contract RegistryServiceManager is
|
|
49
69
|
{
|
50
70
|
return _registryService;
|
51
71
|
}
|
72
|
+
|
73
|
+
function getTokenRegistry()
|
74
|
+
external
|
75
|
+
view
|
76
|
+
returns (TokenRegistry)
|
77
|
+
{
|
78
|
+
return _tokenRegistry;
|
79
|
+
}
|
52
80
|
}
|