@etherisc/gif-next 0.0.2-9d3eab3-323 → 0.0.2-9dc4419-573
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +753 -168
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +233 -81
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +695 -258
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +529 -217
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1038 -395
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +293 -156
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +921 -1201
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +583 -193
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +481 -368
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +308 -127
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +246 -160
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +594 -286
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +360 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1359 -232
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +256 -266
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +204 -195
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +787 -143
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +192 -250
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +476 -131
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +73 -159
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +463 -342
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +329 -96
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +833 -301
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +311 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +287 -202
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +309 -76
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +189 -6
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +104 -214
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +202 -72
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +33 -23
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +214 -251
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +125 -113
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +151 -50
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +73 -159
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +179 -151
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +197 -201
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -185
- package/contracts/components/Product.sol +125 -124
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -14
- package/contracts/instance/IInstanceService.sol +42 -4
- package/contracts/instance/Instance.sol +125 -262
- package/contracts/instance/InstanceAccessManager.sol +414 -175
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +333 -137
- package/contracts/instance/InstanceServiceManager.sol +6 -10
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +121 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +36 -20
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +238 -67
- package/contracts/instance/service/BundleServiceManager.sol +6 -10
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +366 -45
- package/contracts/instance/service/DistributionServiceManager.sol +7 -11
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +67 -19
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +34 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +200 -341
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +222 -41
- package/contracts/instance/service/PoolServiceManager.sol +6 -10
- package/contracts/instance/service/ProductService.sol +92 -50
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +33 -9
- package/contracts/registry/IRegistryService.sol +23 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +168 -86
- package/contracts/registry/RegistryAccessManager.sol +58 -52
- package/contracts/registry/RegistryService.sol +93 -141
- package/contracts/registry/RegistryServiceManager.sol +15 -13
- package/contracts/registry/ReleaseManager.sol +140 -194
- package/contracts/registry/TokenRegistry.sol +21 -15
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +4 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +36 -22
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +25 -19
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -132
- package/contracts/components/IBaseComponent.sol +0 -31
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -4,42 +4,43 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
6
|
|
7
|
-
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
8
7
|
import {RoleId, RoleIdLib,
|
9
|
-
|
10
|
-
|
8
|
+
GIF_MANAGER_ROLE,
|
9
|
+
GIF_ADMIN_ROLE,
|
11
10
|
RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
|
12
11
|
|
13
|
-
import {Registry} from "./Registry.sol";
|
14
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
15
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
16
12
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
17
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
18
14
|
|
19
15
|
/*
|
20
|
-
|
21
|
-
1)
|
22
|
-
-
|
23
|
-
-
|
24
|
-
|
25
|
-
|
16
|
+
4 types of roles:
|
17
|
+
1) RELEASE_MANAGER_ROLE
|
18
|
+
- has only ReleaseManager as member
|
19
|
+
- responsible for setting and granting of REGISTRAR roles
|
20
|
+
1) REGISTRAR roles
|
21
|
+
- set and granted by RELEASE_MANAGER_ROLE
|
22
|
+
- each has 1 unique member (regular service ver.X) (subject to change)
|
23
|
+
- each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
|
24
|
+
2) GIF_MANAGER_ROLE
|
26
25
|
- can have arbitrary number of members
|
27
26
|
- responsible for services registrations
|
28
27
|
- responsible for token registration and activation
|
29
|
-
3)
|
30
|
-
- admin of
|
28
|
+
3) GIF_ADMIN_ROLE
|
29
|
+
- admin of GIF_MANAGER_ROLE
|
31
30
|
- MUST have 1 member at any time
|
32
31
|
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
33
|
-
- responsible for
|
34
|
-
- responsible for creation and activation of each release
|
32
|
+
- responsible for creation and activation of releases
|
35
33
|
|
36
34
|
*/
|
37
35
|
|
38
36
|
contract RegistryAccessManager is AccessManaged
|
39
37
|
{
|
40
|
-
|
38
|
+
error NotInitialized();
|
39
|
+
error AlreadyInitialized();
|
40
|
+
|
41
|
+
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
41
42
|
|
42
|
-
AccessManager private _accessManager;
|
43
|
+
AccessManager private immutable _accessManager;
|
43
44
|
address private _releaseManager;
|
44
45
|
address private _tokenRegistry;
|
45
46
|
|
@@ -48,15 +49,15 @@ contract RegistryAccessManager is AccessManaged
|
|
48
49
|
|
49
50
|
modifier onlyOnce() {
|
50
51
|
if(_isInitialized) {
|
51
|
-
revert();
|
52
|
-
}
|
52
|
+
revert AlreadyInitialized();
|
53
|
+
}
|
53
54
|
_;
|
54
55
|
_isInitialized = true;
|
55
56
|
}
|
56
57
|
|
57
58
|
modifier onlyInitialized() {
|
58
59
|
if(!_isInitialized) {
|
59
|
-
revert();
|
60
|
+
revert NotInitialized();
|
60
61
|
}
|
61
62
|
_;
|
62
63
|
}
|
@@ -67,25 +68,25 @@ contract RegistryAccessManager is AccessManaged
|
|
67
68
|
_accessManager = new AccessManager(address(this));
|
68
69
|
setAuthority(address(_accessManager));
|
69
70
|
|
70
|
-
_idNext =
|
71
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
71
72
|
|
72
73
|
_configureAdminRoleInitial();
|
73
74
|
|
74
75
|
address admin = msg.sender;
|
75
|
-
_grantRole(
|
76
|
-
_grantRole(
|
76
|
+
_grantRole(GIF_ADMIN_ROLE(), admin, 0);
|
77
|
+
_grantRole(GIF_MANAGER_ROLE(), manager, 0);
|
77
78
|
}
|
78
79
|
|
79
|
-
// TODO need release manager authorization to configure roles for service functions and to grant those roles
|
80
80
|
function initialize(address releaseManager, address tokenRegistry)
|
81
81
|
external
|
82
82
|
restricted // GIF_ADMIN_ROLE
|
83
83
|
onlyOnce
|
84
84
|
{
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
require(
|
86
|
+
ReleaseManager(releaseManager).authority() == address(_accessManager),
|
87
|
+
"RegistryAccessManager: release manager authority is invalid");
|
88
|
+
require(tokenRegistry > address(0), "RegistryAccessManager: token registry is 0");
|
89
|
+
//require(tokenRegistry.authority() == address(_accessManager));
|
89
90
|
|
90
91
|
_releaseManager = releaseManager;
|
91
92
|
_tokenRegistry = tokenRegistry;
|
@@ -108,13 +109,14 @@ contract RegistryAccessManager is AccessManaged
|
|
108
109
|
onlyInitialized
|
109
110
|
returns(RoleId)
|
110
111
|
{
|
112
|
+
// TODO questionable check...
|
111
113
|
// target is not part of `runtime`
|
112
|
-
if(
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
{
|
114
|
+
//if(
|
115
|
+
// target == address(this) ||
|
116
|
+
// target == address(_accessManager) ||
|
117
|
+
// target == _releaseManager ||
|
118
|
+
// target == _tokenRegistry)
|
119
|
+
//{ return TargetInvalid(); }
|
118
120
|
|
119
121
|
RoleId roleId = _getNextRoleId();
|
120
122
|
|
@@ -124,10 +126,10 @@ contract RegistryAccessManager is AccessManaged
|
|
124
126
|
|
125
127
|
/*function transferAdmin(address to)
|
126
128
|
external
|
127
|
-
restricted // only with
|
129
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
128
130
|
{
|
129
|
-
_accessManager.revoke(
|
130
|
-
_accesssManager.grant(
|
131
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
132
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
131
133
|
}*/
|
132
134
|
|
133
135
|
//--- view functions ----------------------------------------------------//
|
@@ -147,41 +149,45 @@ contract RegistryAccessManager is AccessManaged
|
|
147
149
|
bytes4[] memory functionSelector = new bytes4[](1);
|
148
150
|
|
149
151
|
functionSelector[0] = RegistryAccessManager.initialize.selector;
|
150
|
-
_setTargetFunctionRole(address(this), functionSelector,
|
152
|
+
_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
|
151
153
|
}
|
152
154
|
|
153
155
|
function _configureAdminRole() private
|
154
156
|
{
|
155
157
|
bytes4[] memory functionSelector = new bytes4[](1);
|
156
158
|
|
157
|
-
//
|
159
|
+
// for RegistryServiceProxyManager
|
158
160
|
// TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
|
159
161
|
//functionSelector[0] = RegistryServiceManager.upgrade.selector;
|
160
|
-
//_setTargetFunctionRole(address(this), functionSelector,
|
162
|
+
//_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
|
161
163
|
|
162
|
-
//
|
164
|
+
// for TokenRegistry
|
163
165
|
|
164
|
-
//
|
166
|
+
// for ReleaseManager
|
165
167
|
functionSelector[0] = ReleaseManager.createNextRelease.selector;
|
166
|
-
_setTargetFunctionRole(_releaseManager, functionSelector,
|
167
|
-
|
168
|
-
|
168
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
169
|
+
|
170
|
+
functionSelector[0] = ReleaseManager.activateNextRelease.selector;
|
171
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
169
172
|
}
|
170
173
|
|
171
174
|
function _configureManagerRole() private
|
172
175
|
{
|
173
176
|
bytes4[] memory functionSelector = new bytes4[](1);
|
174
177
|
|
175
|
-
//
|
178
|
+
// for TokenRegistry
|
176
179
|
functionSelector[0] = TokenRegistry.setActive.selector;
|
177
|
-
_setTargetFunctionRole(address(_tokenRegistry), functionSelector,
|
180
|
+
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
|
178
181
|
|
179
|
-
//
|
182
|
+
// for ReleaseManager
|
180
183
|
functionSelector[0] = ReleaseManager.registerService.selector;
|
181
|
-
_setTargetFunctionRole(_releaseManager, functionSelector,
|
184
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
185
|
+
|
186
|
+
functionSelector[0] = ReleaseManager.registerRegistryService.selector;
|
187
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
182
188
|
|
183
|
-
// set
|
184
|
-
_setRoleAdmin(
|
189
|
+
// set admin
|
190
|
+
_setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
|
185
191
|
}
|
186
192
|
|
187
193
|
function _configureReleaseManagerRole() private
|
@@ -2,13 +2,13 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
-
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
// import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
6
6
|
|
7
7
|
import {IRegistry} from "./IRegistry.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
|
10
10
|
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
11
|
-
import {
|
11
|
+
import {IComponent} from "../../contracts/components/IComponent.sol";
|
12
12
|
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
13
13
|
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
14
14
|
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
@@ -19,7 +19,7 @@ import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
|
19
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, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
22
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
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";
|
@@ -31,7 +31,6 @@ import {IRegistryService} from "./IRegistryService.sol";
|
|
31
31
|
import {Registry} from "./Registry.sol";
|
32
32
|
|
33
33
|
contract RegistryService is
|
34
|
-
AccessManagedUpgradeable,
|
35
34
|
Service,
|
36
35
|
IRegistryService
|
37
36
|
{
|
@@ -40,34 +39,54 @@ contract RegistryService is
|
|
40
39
|
// TODO update to real hash when registry is stable
|
41
40
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
42
41
|
|
43
|
-
|
42
|
+
// From IService
|
43
|
+
function getDomain() public pure override returns(ObjectType serviceDomain) {
|
44
|
+
return REGISTRY();
|
45
|
+
}
|
44
46
|
|
47
|
+
// from Versionable
|
48
|
+
|
49
|
+
/// @dev top level initializer
|
50
|
+
function _initialize(
|
51
|
+
address owner,
|
52
|
+
bytes memory data
|
53
|
+
)
|
54
|
+
internal
|
55
|
+
virtual override
|
56
|
+
initializer()
|
57
|
+
{
|
58
|
+
(
|
59
|
+
address registryAddress,
|
60
|
+
address initialAuthority
|
61
|
+
) = abi.decode(data, (address, address));
|
62
|
+
|
63
|
+
initializeService(registryAddress, initialAuthority, owner);
|
64
|
+
|
65
|
+
registerInterface(type(IRegistryService).interfaceId);
|
66
|
+
}
|
45
67
|
|
46
|
-
function registerInstance(IRegisterable instance)
|
68
|
+
function registerInstance(IRegisterable instance, address owner)
|
47
69
|
external
|
70
|
+
restricted
|
48
71
|
returns(
|
49
|
-
IRegistry.ObjectInfo memory info
|
50
|
-
bytes memory data
|
72
|
+
IRegistry.ObjectInfo memory info
|
51
73
|
)
|
52
74
|
{
|
53
75
|
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
54
76
|
revert NotInstance();
|
55
77
|
}
|
56
78
|
|
57
|
-
|
79
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
80
|
+
info.nftId = getRegistry().register(info);
|
58
81
|
|
59
|
-
info.nftId = _registry.register(info);
|
60
82
|
instance.linkToRegisteredNftId(); // asume safe
|
61
|
-
|
62
|
-
return (info, data);
|
63
83
|
}
|
64
84
|
|
65
|
-
function registerProduct(
|
85
|
+
function registerProduct(IComponent product, address owner)
|
66
86
|
external
|
67
87
|
restricted
|
68
88
|
returns(
|
69
|
-
IRegistry.ObjectInfo memory info
|
70
|
-
bytes memory data
|
89
|
+
IRegistry.ObjectInfo memory info
|
71
90
|
)
|
72
91
|
{
|
73
92
|
// CAN revert if no ERC165 support -> will revert with empty message
|
@@ -75,53 +94,47 @@ contract RegistryService is
|
|
75
94
|
revert NotProduct();
|
76
95
|
}
|
77
96
|
|
78
|
-
|
79
|
-
|
80
|
-
info.nftId = _registry.register(info);
|
81
|
-
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
82
|
-
product.linkToRegisteredNftId();
|
83
|
-
|
84
|
-
return (info, data);
|
97
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
98
|
+
info.nftId = getRegistry().register(info);
|
85
99
|
}
|
86
100
|
|
87
|
-
function registerPool(
|
101
|
+
function registerPool(IComponent pool, address owner)
|
88
102
|
external
|
89
103
|
restricted
|
90
104
|
returns(
|
91
|
-
IRegistry.ObjectInfo memory info
|
92
|
-
bytes memory data
|
105
|
+
IRegistry.ObjectInfo memory info
|
93
106
|
)
|
94
107
|
{
|
95
108
|
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
96
109
|
revert NotPool();
|
97
110
|
}
|
98
111
|
|
99
|
-
|
100
|
-
|
101
|
-
info.nftId = _registry.register(info);
|
102
|
-
pool.linkToRegisteredNftId();
|
103
|
-
|
104
|
-
return (info, data);
|
112
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
113
|
+
info.nftId = getRegistry().register(info);
|
105
114
|
}
|
106
115
|
|
107
|
-
function registerDistribution(
|
116
|
+
function registerDistribution(IComponent distribution, address owner)
|
108
117
|
external
|
109
118
|
restricted
|
110
119
|
returns(
|
111
|
-
IRegistry.ObjectInfo memory info
|
112
|
-
bytes memory data
|
120
|
+
IRegistry.ObjectInfo memory info
|
113
121
|
)
|
114
122
|
{
|
115
123
|
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
116
124
|
revert NotDistribution();
|
117
125
|
}
|
118
126
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
distribution.linkToRegisteredNftId();
|
127
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
128
|
+
info.nftId = getRegistry().register(info);
|
129
|
+
}
|
123
130
|
|
124
|
-
|
131
|
+
function registerDistributor(IRegistry.ObjectInfo memory info)
|
132
|
+
external
|
133
|
+
restricted
|
134
|
+
returns(NftId nftId)
|
135
|
+
{
|
136
|
+
_verifyObjectInfo(info, DISTRIBUTOR());
|
137
|
+
nftId = getRegistry().register(info);
|
125
138
|
}
|
126
139
|
|
127
140
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
@@ -131,7 +144,7 @@ contract RegistryService is
|
|
131
144
|
{
|
132
145
|
_verifyObjectInfo(info, POLICY());
|
133
146
|
|
134
|
-
nftId =
|
147
|
+
nftId = getRegistry().register(info);
|
135
148
|
}
|
136
149
|
|
137
150
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
@@ -141,7 +154,7 @@ contract RegistryService is
|
|
141
154
|
{
|
142
155
|
_verifyObjectInfo(info, BUNDLE());
|
143
156
|
|
144
|
-
nftId =
|
157
|
+
nftId = getRegistry().register(info);
|
145
158
|
}
|
146
159
|
|
147
160
|
function registerStake(IRegistry.ObjectInfo memory info)
|
@@ -151,79 +164,56 @@ contract RegistryService is
|
|
151
164
|
{
|
152
165
|
_verifyObjectInfo(info, STAKE());
|
153
166
|
|
154
|
-
nftId =
|
155
|
-
}
|
156
|
-
|
157
|
-
// From IService
|
158
|
-
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
159
|
-
return SERVICE();
|
160
|
-
}
|
161
|
-
|
162
|
-
// from Versionable
|
163
|
-
|
164
|
-
/// @dev top level initializer
|
165
|
-
function _initialize(
|
166
|
-
address owner,
|
167
|
-
bytes memory data
|
168
|
-
)
|
169
|
-
internal
|
170
|
-
initializer
|
171
|
-
virtual override
|
172
|
-
{
|
173
|
-
(
|
174
|
-
address initialAuthority,
|
175
|
-
address registry
|
176
|
-
) = abi.decode(data, (address, address));
|
177
|
-
|
178
|
-
__AccessManaged_init(initialAuthority);
|
179
|
-
|
180
|
-
_initializeService(address(registry), owner);
|
181
|
-
|
182
|
-
_registerInterface(type(IRegistryService).interfaceId);
|
167
|
+
nftId = getRegistry().register(info);
|
183
168
|
}
|
184
169
|
|
185
170
|
// from IRegisterable
|
186
171
|
|
187
|
-
function
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
172
|
+
function getFunctionConfigs()
|
173
|
+
external
|
174
|
+
pure
|
175
|
+
returns(
|
176
|
+
FunctionConfig[] memory config
|
177
|
+
)
|
192
178
|
{
|
193
|
-
|
179
|
+
config = new FunctionConfig[](8);
|
194
180
|
|
195
|
-
|
181
|
+
// order of service registrations MUST be reverse to this array
|
182
|
+
/*config[-1].serviceDomain = STAKE();
|
183
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
196
184
|
|
197
|
-
|
198
|
-
config[0].
|
199
|
-
config[0].selector = new bytes4[](1);
|
200
|
-
config[0].selector[0] = RegistryService.registerInstance.selector;
|
185
|
+
config[0].serviceDomain = POLICY();
|
186
|
+
config[0].selectors = new bytes4[](0);
|
201
187
|
|
202
|
-
config[1].serviceDomain =
|
203
|
-
config[1].
|
204
|
-
config[1].
|
188
|
+
config[1].serviceDomain = APPLICATION();
|
189
|
+
config[1].selectors = new bytes4[](1);
|
190
|
+
config[1].selectors[0] = RegistryService.registerPolicy.selector;
|
205
191
|
|
206
|
-
config[2].serviceDomain =
|
207
|
-
config[2].
|
208
|
-
config[2].selector[0] = RegistryService.registerDistribution.selector;
|
192
|
+
config[2].serviceDomain = CLAIM();
|
193
|
+
config[2].selectors = new bytes4[](0);
|
209
194
|
|
210
195
|
config[3].serviceDomain = PRODUCT();
|
211
|
-
config[3].
|
212
|
-
config[3].
|
196
|
+
config[3].selectors = new bytes4[](1);
|
197
|
+
config[3].selectors[0] = RegistryService.registerProduct.selector;
|
213
198
|
|
214
|
-
config[4].serviceDomain =
|
215
|
-
config[4].
|
216
|
-
config[4].
|
199
|
+
config[4].serviceDomain = POOL();
|
200
|
+
config[4].selectors = new bytes4[](1);
|
201
|
+
config[4].selectors[0] = RegistryService.registerPool.selector;
|
217
202
|
|
203
|
+
// registration of bundle service must preceed registration of pool service
|
218
204
|
config[5].serviceDomain = BUNDLE();
|
219
|
-
config[5].
|
220
|
-
config[5].
|
205
|
+
config[5].selectors = new bytes4[](1);
|
206
|
+
config[5].selectors[0] = RegistryService.registerBundle.selector;
|
221
207
|
|
222
|
-
|
223
|
-
config[6].
|
224
|
-
config[6].
|
208
|
+
config[6].serviceDomain = DISTRIBUTION();
|
209
|
+
config[6].selectors = new bytes4[](2);
|
210
|
+
config[6].selectors[0] = RegistryService.registerDistribution.selector;
|
211
|
+
config[6].selectors[1] = RegistryService.registerDistributor.selector;
|
225
212
|
|
226
|
-
|
213
|
+
// registerInstance() have no restriction
|
214
|
+
config[7].serviceDomain = INSTANCE();
|
215
|
+
config[7].selectors = new bytes4[](1);
|
216
|
+
config[7].selectors[0] = RegistryService.registerInstance.selector;
|
227
217
|
}
|
228
218
|
|
229
219
|
// Internal
|
@@ -234,16 +224,12 @@ contract RegistryService is
|
|
234
224
|
address expectedOwner // assume can be 0 when given by other service
|
235
225
|
)
|
236
226
|
internal
|
237
|
-
view
|
227
|
+
// view
|
238
228
|
returns(
|
239
|
-
IRegistry.ObjectInfo memory info
|
240
|
-
bytes memory data
|
229
|
+
IRegistry.ObjectInfo memory info
|
241
230
|
)
|
242
231
|
{
|
243
|
-
(
|
244
|
-
info,
|
245
|
-
data
|
246
|
-
) = registerable.getInitialInfo();
|
232
|
+
info = registerable.getInitialInfo();
|
247
233
|
info.objectAddress = address(registerable);
|
248
234
|
|
249
235
|
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
@@ -252,13 +238,8 @@ contract RegistryService is
|
|
252
238
|
|
253
239
|
address owner = info.initialOwner;
|
254
240
|
|
255
|
-
//
|
256
|
-
|
257
|
-
// any address may create a new instance via instance service
|
258
|
-
} else {
|
259
|
-
if(owner != expectedOwner) { // registerable owner protection
|
260
|
-
revert NotRegisterableOwner(expectedOwner);
|
261
|
-
}
|
241
|
+
if(owner != expectedOwner) { // registerable owner protection
|
242
|
+
revert NotRegisterableOwner(expectedOwner);
|
262
243
|
}
|
263
244
|
|
264
245
|
if(owner == address(registerable)) {
|
@@ -272,15 +253,6 @@ contract RegistryService is
|
|
272
253
|
if(getRegistry().isRegistered(owner)) {
|
273
254
|
revert RegisterableOwnerIsRegistered();
|
274
255
|
}
|
275
|
-
|
276
|
-
/*NftId parentNftId = info.parentNftId;
|
277
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
278
|
-
|
279
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
280
|
-
revert InvalidParent(parentNftId);
|
281
|
-
}*/
|
282
|
-
|
283
|
-
return(info, data);
|
284
256
|
}
|
285
257
|
|
286
258
|
function _verifyObjectInfo(
|
@@ -306,25 +278,5 @@ contract RegistryService is
|
|
306
278
|
if(getRegistry().isRegistered(owner)) {
|
307
279
|
revert RegisterableOwnerIsRegistered();
|
308
280
|
}
|
309
|
-
|
310
|
-
// can catch all 3 if check that initialOwner is not registered
|
311
|
-
/*if(info.initialOwner == msg.sender) {
|
312
|
-
revert InitialOwnerIsParent();
|
313
|
-
}
|
314
|
-
|
315
|
-
if(info.initialOwner == address(this)) {
|
316
|
-
revert InitialOwnerIsService();
|
317
|
-
}
|
318
|
-
|
319
|
-
if(info.initialOwner == address(getRegistry())) {
|
320
|
-
revert InitialOwnerIsRegistry();
|
321
|
-
}*/
|
322
|
-
|
323
|
-
/*NftId parentNftId = info.parentNftId;
|
324
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
325
|
-
|
326
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
327
|
-
revert InvalidParent(parentNftId);
|
328
|
-
}*/
|
329
281
|
}
|
330
282
|
}
|
@@ -17,35 +17,37 @@ contract RegistryServiceManager is
|
|
17
17
|
{
|
18
18
|
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
19
19
|
|
20
|
-
RegistryService private immutable _registryService;
|
20
|
+
RegistryService private immutable _registryService;
|
21
21
|
|
22
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
23
23
|
constructor(
|
24
24
|
address initialAuthority, // used by implementation
|
25
|
-
address
|
26
|
-
ProxyManager()
|
25
|
+
address registryAddress) // used by implementation
|
26
|
+
ProxyManager(registryAddress)
|
27
27
|
{
|
28
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
29
|
+
require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
|
30
|
+
|
28
31
|
// implementation's initializer func `data` argument
|
29
|
-
|
30
|
-
|
31
|
-
registry);
|
32
|
-
|
32
|
+
RegistryService srv = new RegistryService();
|
33
|
+
bytes memory data = abi.encode(registryAddress, initialAuthority);
|
33
34
|
IVersionable versionable = deploy(
|
34
|
-
address(
|
35
|
-
|
35
|
+
address(srv),
|
36
|
+
data);
|
36
37
|
|
37
38
|
_registryService = RegistryService(address(versionable));
|
38
39
|
|
40
|
+
// _linkToNftOwnable(address(_registryService));
|
39
41
|
}
|
40
42
|
|
41
|
-
// from IRegisterable
|
43
|
+
// // from IRegisterable
|
42
44
|
|
43
|
-
// IMPORTANT: registry here and in constructor MUST be the same
|
44
|
-
function
|
45
|
+
// // IMPORTANT: registry here and in constructor MUST be the same
|
46
|
+
function linkOwnershipToServiceNft()
|
45
47
|
public
|
46
48
|
onlyOwner
|
47
49
|
{
|
48
|
-
_linkToNftOwnable(
|
50
|
+
_linkToNftOwnable(address(_registryService));
|
49
51
|
}
|
50
52
|
|
51
53
|
//--- view functions ----------------------------------------------------//
|