@etherisc/gif-next 0.0.2-7f39e38-904 → 0.0.2-804cdbf-724
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 +32 -3
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +36 -255
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +147 -96
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +86 -59
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +82 -151
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -17
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +149 -52
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +91 -132
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +230 -65
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -119
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +70 -51
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +260 -137
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -59
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +74 -43
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +18 -207
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +25 -315
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -40
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -37
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -53
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +24 -47
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -50
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +31 -165
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +59 -32
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +86 -74
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -184
- 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 +255 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -35
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +19 -11
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +96 -70
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +73 -54
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +24 -5
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +31 -65
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +14 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- 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/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +121 -118
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +222 -71
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +102 -44
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +186 -183
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +71 -58
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +263 -39
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +271 -135
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -47
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +734 -187
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -18
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/contracts/authorization/AccessAdmin.sol +591 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/distribution/Distribution.sol +126 -106
- package/contracts/distribution/DistributionService.sol +13 -9
- package/contracts/distribution/DistributionServiceManager.sol +0 -12
- package/contracts/distribution/IDistributionComponent.sol +17 -35
- package/contracts/distribution/IDistributionService.sol +5 -1
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +25 -16
- package/contracts/instance/IInstanceService.sol +36 -27
- package/contracts/instance/Instance.sol +113 -87
- package/contracts/instance/InstanceAdmin.sol +266 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +52 -13
- package/contracts/instance/InstanceService.sol +175 -99
- package/contracts/instance/InstanceStore.sol +38 -22
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +157 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +26 -26
- package/contracts/pool/IPoolComponent.sol +0 -60
- package/contracts/pool/IPoolService.sol +3 -0
- package/contracts/pool/Pool.sol +143 -131
- package/contracts/pool/PoolService.sol +38 -11
- package/contracts/product/ApplicationService.sol +5 -5
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/ClaimService.sol +11 -6
- package/contracts/product/IClaimService.sol +6 -0
- package/contracts/product/IProductComponent.sol +6 -9
- package/contracts/product/PolicyService.sol +8 -6
- package/contracts/product/PricingService.sol +7 -8
- package/contracts/product/Product.sol +103 -88
- package/contracts/product/ProductService.sol +5 -5
- package/contracts/registry/ChainNft.sol +1 -0
- package/contracts/registry/IRegistry.sol +33 -24
- package/contracts/registry/IRegistryService.sol +7 -6
- package/contracts/registry/Registry.sol +146 -148
- package/contracts/registry/RegistryAdmin.sol +365 -0
- package/contracts/registry/RegistryService.sol +8 -8
- package/contracts/registry/RegistryServiceManager.sol +0 -19
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +487 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +22 -61
- package/contracts/shared/Component.sol +8 -13
- package/contracts/shared/ComponentService.sol +50 -64
- package/contracts/shared/ComponentVerifyingService.sol +13 -7
- package/contracts/shared/IComponent.sol +3 -7
- package/contracts/shared/IComponentService.sol +11 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
- package/contracts/shared/IKeyValueStore.sol +2 -1
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IService.sol +7 -0
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +26 -20
- package/contracts/shared/KeyValueStore.sol +7 -6
- package/contracts/shared/Lifecycle.sol +16 -60
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -13
- package/contracts/shared/PolicyHolder.sol +2 -1
- package/contracts/shared/ProxyManager.sol +6 -3
- package/contracts/shared/Service.sol +27 -21
- package/contracts/shared/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/staking/IStaking.sol +40 -25
- package/contracts/staking/IStakingService.sol +42 -44
- package/contracts/staking/StakeManagerLib.sol +101 -26
- package/contracts/staking/Staking.sol +136 -127
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +10 -22
- package/contracts/staking/StakingReader.sol +75 -36
- package/contracts/staking/StakingService.sol +124 -88
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +401 -115
- package/contracts/staking/TargetManagerLib.sol +28 -0
- package/contracts/type/Amount.sol +15 -1
- package/contracts/type/NftId.sol +8 -8
- package/contracts/type/ObjectType.sol +171 -69
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RoleId.sol +103 -72
- package/contracts/type/Seconds.sol +10 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +12 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +6 -2
- package/contracts/type/UFixed.sol +6 -0
- package/contracts/type/Version.sol +3 -1
- package/package.json +8 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -322
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1151
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
- package/contracts/registry/RegistryAccessManager.sol +0 -196
- package/contracts/registry/ReleaseManager.sol +0 -563
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/staking/IStakingManager.sol +0 -15
- package/contracts/staking/IStakingStore.sol +0 -130
@@ -7,39 +7,37 @@ import {NftId} from "../type/NftId.sol";
|
|
7
7
|
import {ObjectType} from "../type/ObjectType.sol";
|
8
8
|
import {VersionPart} from "../type/Version.sol";
|
9
9
|
import {Timestamp} from "../type/Timestamp.sol";
|
10
|
-
import {RoleId} from "../type/RoleId.sol";
|
11
10
|
|
11
|
+
/// @title Chain Registry interface.
|
12
|
+
/// A chain registry holds all protocol relevant objects with basic metadata.
|
13
|
+
/// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
|
14
|
+
/// Registered objects are represented by NFTs.
|
12
15
|
interface IRegistry is IERC165 {
|
13
16
|
|
14
17
|
event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
|
15
18
|
event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
|
16
19
|
|
17
|
-
//
|
18
|
-
error
|
20
|
+
// register()
|
21
|
+
error ErrorRegistryCallerNotRegistryService();
|
22
|
+
error ErrorRegistryService(address service);
|
19
23
|
|
20
24
|
// registerService()
|
21
|
-
error
|
25
|
+
error ErrorRegistryCallerNotReleaseRegistry();
|
26
|
+
error ErrorRegistryServiceAddressZero();
|
27
|
+
error ErrorRegistryServiceVersionZero();
|
28
|
+
error ErrorRegistryNotService(address service, ObjectType objectType);
|
29
|
+
error ErrorRegistryServiceParentNotRegistry(NftId parentNftId);
|
22
30
|
error ErrorRegistryDomainZero(address service);
|
23
31
|
error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
|
24
32
|
|
25
|
-
// register()
|
26
|
-
error ErrorRegistryCallerNotRegistryService();
|
27
|
-
|
28
33
|
// registerWithCustomTypes()
|
29
34
|
error ErrorRegistryCoreTypeRegistration();
|
30
35
|
|
31
|
-
// setTokenRegistry()
|
32
|
-
error TokenRegistryZero();
|
33
|
-
error TokenRegistryAlreadySet(address tokenRegistry);
|
34
|
-
|
35
36
|
// _register()
|
36
37
|
error ErrorRegistryParentAddressZero();
|
37
38
|
error ErrorRegistryTypesCombinationInvalid(ObjectType objectType, ObjectType parentType);
|
38
39
|
error ErrorRegistryContractAlreadyRegistered(address objectAddress);
|
39
40
|
|
40
|
-
// _registerStaking()
|
41
|
-
error StakingAlreadyRegistered(address stakingAddress);
|
42
|
-
|
43
41
|
struct ObjectInfo {
|
44
42
|
NftId nftId;
|
45
43
|
NftId parentNftId;
|
@@ -52,22 +50,32 @@ interface IRegistry is IERC165 {
|
|
52
50
|
|
53
51
|
struct ReleaseInfo {
|
54
52
|
VersionPart version;
|
53
|
+
bytes32 salt;
|
55
54
|
address[] addresses;
|
56
|
-
|
57
|
-
RoleId[][] functionRoles;
|
58
|
-
bytes4[][][] selectors;
|
55
|
+
string[] names;
|
59
56
|
ObjectType[] domains;
|
60
57
|
Timestamp activatedAt;
|
58
|
+
Timestamp disabledAt;
|
61
59
|
}
|
62
60
|
|
61
|
+
/// @dev Register an object with a known core type.
|
62
|
+
/// The function returns a newly minted object NFT ID.
|
63
|
+
/// May not be used to register services.
|
64
|
+
function register(ObjectInfo memory info) external returns (NftId nftId);
|
65
|
+
|
66
|
+
/// @dev Register a service with using the provided domain and version.
|
67
|
+
/// The function returns a newly minted service NFT ID.
|
68
|
+
/// May only be used to register services.
|
63
69
|
function registerService(
|
64
70
|
ObjectInfo memory serviceInfo,
|
65
71
|
VersionPart serviceVersion,
|
66
72
|
ObjectType serviceDomain
|
67
73
|
) external returns(NftId nftId);
|
68
74
|
|
69
|
-
|
70
|
-
|
75
|
+
/// @dev Register an object with a custom type.
|
76
|
+
/// The function returns a newly minted object NFT ID.
|
77
|
+
/// This function is reserved for GIF releases > 3.
|
78
|
+
/// May not be used to register known core types.
|
71
79
|
function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
|
72
80
|
|
73
81
|
function getInitialVersion() external view returns (VersionPart);
|
@@ -98,7 +106,7 @@ interface IRegistry is IERC165 {
|
|
98
106
|
|
99
107
|
function isRegisteredComponent(address object) external view returns (bool);
|
100
108
|
|
101
|
-
function
|
109
|
+
function isActiveRelease(VersionPart version) external view returns (bool);
|
102
110
|
|
103
111
|
function getServiceAddress(
|
104
112
|
ObjectType serviceDomain,
|
@@ -114,12 +122,13 @@ interface IRegistry is IERC165 {
|
|
114
122
|
// TODO refactor the address getters below to contract getters
|
115
123
|
function getChainNftAddress() external view returns (address);
|
116
124
|
|
117
|
-
function
|
118
|
-
|
119
|
-
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
|
125
|
+
function getReleaseRegistryAddress() external view returns (address);
|
120
126
|
|
121
|
-
function getStakingAddress() external view returns (address
|
127
|
+
function getStakingAddress() external view returns (address);
|
122
128
|
|
123
129
|
function getTokenRegistryAddress() external view returns (address);
|
124
130
|
|
131
|
+
function getRegistryAdminAddress() external view returns (address);
|
132
|
+
|
133
|
+
function getAuthority() external view returns (address);
|
125
134
|
}
|
@@ -33,6 +33,7 @@ interface IRegistryService is
|
|
33
33
|
error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
|
34
34
|
error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
|
35
35
|
|
36
|
+
error ErrorRegistryServiceObjectAddressNotZero(ObjectType objectType);
|
36
37
|
error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
|
37
38
|
error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
|
38
39
|
error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
|
@@ -49,14 +50,14 @@ interface IRegistryService is
|
|
49
50
|
function registerComponent(IComponent component, ObjectType objectType, address owner)
|
50
51
|
external returns(IRegistry.ObjectInfo memory info);
|
51
52
|
|
52
|
-
function registerProduct(IComponent product, address owner)
|
53
|
-
|
53
|
+
// function registerProduct(IComponent product, address owner)
|
54
|
+
// external returns(IRegistry.ObjectInfo memory info);
|
54
55
|
|
55
|
-
function registerPool(IComponent pool, address owner)
|
56
|
-
|
56
|
+
// function registerPool(IComponent pool, address owner)
|
57
|
+
// external returns(IRegistry.ObjectInfo memory info);
|
57
58
|
|
58
|
-
function registerDistribution(IComponent distribution, address owner)
|
59
|
-
|
59
|
+
// function registerDistribution(IComponent distribution, address owner)
|
60
|
+
// external returns(IRegistry.ObjectInfo memory info);
|
60
61
|
|
61
62
|
function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
|
62
63
|
|
@@ -1,18 +1,21 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
5
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
|
+
|
7
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
6
8
|
|
7
9
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
8
10
|
import {VersionPart} from "../type/Version.sol";
|
9
|
-
import {ObjectType, PROTOCOL, REGISTRY,
|
11
|
+
import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
10
12
|
|
11
13
|
import {ChainNft} from "./ChainNft.sol";
|
12
14
|
import {IRegistry} from "./IRegistry.sol";
|
13
15
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
|
-
import {
|
16
|
+
import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
15
17
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
16
19
|
|
17
20
|
// IMPORTANT
|
18
21
|
// Each NFT minted by registry is accosiated with:
|
@@ -24,11 +27,13 @@ import {TokenRegistry} from "./TokenRegistry.sol";
|
|
24
27
|
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
25
28
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
26
29
|
|
30
|
+
/// @title Chain Registry contract implementing IRegistry.
|
31
|
+
/// @notice See IRegistry for method details.
|
27
32
|
contract Registry is
|
28
|
-
|
33
|
+
InitializableCustom,
|
29
34
|
IRegistry
|
30
35
|
{
|
31
|
-
address public
|
36
|
+
address public NFT_LOCK_ADDRESS = address(0x1);
|
32
37
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
33
38
|
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
34
39
|
string public constant EMPTY_URI = "";
|
@@ -46,167 +51,148 @@ contract Registry is
|
|
46
51
|
mapping(ObjectType objectType => mapping(
|
47
52
|
ObjectType parentType => bool)) private _coreObjectCombinations;
|
48
53
|
|
49
|
-
|
50
|
-
|
51
|
-
address private _initializeOwner;
|
52
|
-
address private _tokenRegistryAddress;
|
53
|
-
address private _stakingAddress;
|
54
|
-
ReleaseManager private _releaseManager;
|
54
|
+
RegistryAdmin public immutable _admin;
|
55
|
+
ChainNft public immutable _chainNft;
|
55
56
|
|
56
|
-
NftId
|
57
|
-
NftId
|
57
|
+
NftId public immutable _protocolNftId;
|
58
|
+
NftId public immutable _registryNftId;
|
59
|
+
NftId public _stakingNftId;
|
58
60
|
|
61
|
+
address public _tokenRegistryAddress;
|
62
|
+
address public _stakingAddress;
|
63
|
+
ReleaseRegistry public _releaseRegistry;
|
59
64
|
|
65
|
+
// TODO
|
66
|
+
// 1). Registry and ReleaseRegistry must be treated as whole single entity.
|
67
|
+
// But current limitations of EVM does not allow it -> require it to be splitted
|
68
|
+
// 2). Keep onlyReleaseRegistry modifier
|
69
|
+
// 3). Delete onlyRegistryService in favor of restricted
|
70
|
+
// 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
|
60
71
|
modifier onlyRegistryService() {
|
61
|
-
if(!
|
72
|
+
if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
|
62
73
|
revert ErrorRegistryCallerNotRegistryService();
|
63
74
|
}
|
64
75
|
_;
|
65
76
|
}
|
66
77
|
|
67
78
|
|
68
|
-
modifier
|
69
|
-
if(msg.sender != address(
|
70
|
-
revert
|
79
|
+
modifier onlyReleaseRegistry() {
|
80
|
+
if(msg.sender != address(_releaseRegistry)) {
|
81
|
+
revert ErrorRegistryCallerNotReleaseRegistry();
|
71
82
|
}
|
72
83
|
_;
|
73
84
|
}
|
74
85
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
86
|
+
/// @dev Creates the registry contract and populates it with the protocol and registry objects.
|
87
|
+
/// Internally deploys the ChainNft contract.
|
88
|
+
constructor(RegistryAdmin admin)
|
89
|
+
InitializableCustom()
|
90
|
+
{
|
91
|
+
_admin = admin;
|
80
92
|
// deploy NFT
|
81
93
|
_chainNft = new ChainNft(address(this));
|
82
94
|
|
83
95
|
// initial registry setup
|
84
|
-
_registerProtocol();
|
85
|
-
_registerRegistry();
|
96
|
+
_protocolNftId = _registerProtocol();
|
97
|
+
_registryNftId = _registerRegistry();
|
86
98
|
|
87
99
|
// set object types and object parent relations
|
88
100
|
_setupValidCoreTypesAndCombinations();
|
89
101
|
}
|
90
102
|
|
91
103
|
|
92
|
-
/// @dev
|
93
|
-
/// MUST be called by release
|
104
|
+
/// @dev Wires release registry and token to registry (this contract).
|
105
|
+
/// MUST be called by release registry.
|
94
106
|
function initialize(
|
95
|
-
address
|
96
|
-
address tokenRegistry
|
107
|
+
address releaseRegistry,
|
108
|
+
address tokenRegistry,
|
109
|
+
address staking
|
97
110
|
)
|
98
111
|
external
|
99
112
|
initializer()
|
100
113
|
{
|
101
|
-
|
102
|
-
revert ErrorRegistryCallerNotInitializeOwner(_initializeOwner, msg.sender);
|
103
|
-
}
|
104
|
-
|
105
|
-
_releaseManager = ReleaseManager(releaseManager);
|
114
|
+
_releaseRegistry = ReleaseRegistry(releaseRegistry);
|
106
115
|
_tokenRegistryAddress = tokenRegistry;
|
107
|
-
|
116
|
+
_stakingAddress = staking;
|
108
117
|
|
118
|
+
_stakingNftId = _registerStaking();
|
119
|
+
}
|
109
120
|
|
110
|
-
|
111
|
-
|
112
|
-
)
|
121
|
+
/// @inheritdoc IRegistry
|
122
|
+
function register(ObjectInfo memory info)
|
113
123
|
external
|
114
|
-
|
124
|
+
onlyRegistryService
|
125
|
+
returns(NftId nftId)
|
115
126
|
{
|
116
|
-
|
117
|
-
|
118
|
-
revert StakingAlreadyRegistered(_stakingAddress);
|
119
|
-
}
|
120
|
-
|
121
|
-
_stakingAddress = stakingAddress;
|
122
|
-
|
123
|
-
address stakingOwner = IRegisterable(stakingAddress).getOwner();
|
124
|
-
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
125
|
-
NftId stakingNftId = NftIdLib.toNftId(stakingId);
|
127
|
+
ObjectType objectType = info.objectType;
|
128
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
126
129
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
130
|
+
// check type combinations for core objects
|
131
|
+
if(info.objectAddress == address(0)) {
|
132
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
133
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
134
|
+
}
|
135
|
+
}
|
136
|
+
// check type combinations for contract objects
|
137
|
+
else {
|
138
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
139
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
140
|
+
}
|
141
|
+
}
|
137
142
|
|
138
|
-
|
143
|
+
nftId = _register(info);
|
139
144
|
}
|
140
145
|
|
141
146
|
|
147
|
+
/// @inheritdoc IRegistry
|
142
148
|
function registerService(
|
143
149
|
ObjectInfo memory info,
|
144
150
|
VersionPart version,
|
145
151
|
ObjectType domain
|
146
152
|
)
|
147
153
|
external
|
148
|
-
|
154
|
+
onlyReleaseRegistry
|
149
155
|
returns(NftId nftId)
|
150
156
|
{
|
157
|
+
// check service address is defined
|
151
158
|
address service = info.objectAddress;
|
152
|
-
/* must be guaranteed by release manager
|
153
159
|
if(service == address(0)) {
|
154
|
-
revert();
|
160
|
+
revert ErrorRegistryServiceAddressZero();
|
155
161
|
}
|
156
162
|
|
163
|
+
// check version is defined
|
157
164
|
if(version.eqz()) {
|
158
|
-
revert();
|
159
|
-
}
|
160
|
-
|
161
|
-
if(info.objectType != SERVICE()) {
|
162
|
-
revert();
|
165
|
+
revert ErrorRegistryServiceVersionZero();
|
163
166
|
}
|
164
|
-
if(info.parentType != REGISTRY()) {
|
165
|
-
revert();
|
166
|
-
}
|
167
|
-
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
168
|
-
*/
|
169
167
|
|
168
|
+
// check domain is defined
|
170
169
|
if(domain.eqz()) {
|
171
170
|
revert ErrorRegistryDomainZero(service);
|
172
171
|
}
|
173
172
|
|
174
|
-
|
173
|
+
// check contract has not already been registered
|
174
|
+
if(_service[version][domain] != address(0)) {
|
175
175
|
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
176
176
|
}
|
177
|
-
|
178
|
-
_service[version][domain] = service;
|
179
177
|
|
178
|
+
// check service has proper type
|
179
|
+
if(info.objectType != SERVICE()) {
|
180
|
+
revert ErrorRegistryNotService(service, info.objectType);
|
181
|
+
}
|
182
|
+
|
183
|
+
// check that parent has registry type
|
184
|
+
if(info.parentNftId != _registryNftId) {
|
185
|
+
revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
|
186
|
+
}
|
187
|
+
|
188
|
+
_service[version][domain] = service;
|
180
189
|
nftId = _register(info);
|
181
190
|
|
182
191
|
emit LogServiceRegistration(version, domain);
|
183
192
|
}
|
184
193
|
|
185
|
-
function register(ObjectInfo memory info)
|
186
|
-
external
|
187
|
-
onlyRegistryService
|
188
|
-
returns(NftId nftId)
|
189
|
-
{
|
190
|
-
ObjectType objectType = info.objectType;
|
191
|
-
ObjectType parentType = _info[info.parentNftId].objectType;
|
192
|
-
|
193
|
-
// only valid core types combinations
|
194
|
-
if(info.objectAddress == address(0))
|
195
|
-
{
|
196
|
-
if(_coreObjectCombinations[objectType][parentType] == false) {
|
197
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
198
|
-
}
|
199
|
-
}
|
200
|
-
else
|
201
|
-
{
|
202
|
-
if(_coreContractCombinations[objectType][parentType] == false) {
|
203
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
204
|
-
}
|
205
|
-
}
|
206
|
-
|
207
|
-
nftId = _register(info);
|
208
|
-
}
|
209
194
|
|
195
|
+
/// @inheritdoc IRegistry
|
210
196
|
function registerWithCustomType(ObjectInfo memory info)
|
211
197
|
external
|
212
198
|
onlyRegistryService
|
@@ -221,7 +207,6 @@ contract Registry is
|
|
221
207
|
|
222
208
|
if(
|
223
209
|
parentType == PROTOCOL() ||
|
224
|
-
parentType == REGISTRY() ||
|
225
210
|
parentType == SERVICE()
|
226
211
|
) {
|
227
212
|
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
@@ -233,27 +218,21 @@ contract Registry is
|
|
233
218
|
|
234
219
|
/// @dev earliest GIF major version
|
235
220
|
function getInitialVersion() external view returns (VersionPart) {
|
236
|
-
return
|
221
|
+
return _releaseRegistry.getInitialVersion();
|
237
222
|
}
|
238
223
|
|
239
|
-
|
240
|
-
// need to be thought trough, not yet clear if necessary
|
241
|
-
// need to answer question: what is the latest version during the upgrade process?
|
242
|
-
// likely setting up a new gif version does not fit into a single tx
|
243
|
-
// in this case we might want to have a period where the latest version is
|
244
|
-
// in the process of being set up while the latest active version is 1 major release smaller
|
245
|
-
/// @dev latest GIF major version (might not yet be active)
|
224
|
+
/// @dev next GIF release version to be released
|
246
225
|
function getNextVersion() external view returns (VersionPart) {
|
247
|
-
return
|
226
|
+
return _releaseRegistry.getNextVersion();
|
248
227
|
}
|
249
228
|
|
250
229
|
/// @dev latest active GIF release version
|
251
230
|
function getLatestVersion() external view returns (VersionPart) {
|
252
|
-
return
|
231
|
+
return _releaseRegistry.getLatestVersion();
|
253
232
|
}
|
254
233
|
|
255
234
|
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
256
|
-
return
|
235
|
+
return _releaseRegistry.getReleaseInfo(version);
|
257
236
|
}
|
258
237
|
|
259
238
|
function getObjectCount() external view returns (uint256) {
|
@@ -305,12 +284,14 @@ contract Registry is
|
|
305
284
|
return _info[objectParentNftId].objectType == INSTANCE();
|
306
285
|
}
|
307
286
|
|
308
|
-
function
|
287
|
+
function isActiveRelease(VersionPart version) external view returns (bool)
|
309
288
|
{
|
310
|
-
return
|
289
|
+
return _releaseRegistry.isActiveRelease(version);
|
311
290
|
}
|
312
291
|
|
313
292
|
function getStakingAddress() external view returns (address staking) {
|
293
|
+
//return getObjectInfo(_stakingNftId).objectAddress;
|
294
|
+
//return _info[_stakingNftId].objectAddress;
|
314
295
|
return _stakingAddress;
|
315
296
|
}
|
316
297
|
|
@@ -323,21 +304,25 @@ contract Registry is
|
|
323
304
|
VersionPart releaseVersion
|
324
305
|
) external view returns (address service)
|
325
306
|
{
|
326
|
-
|
307
|
+
service = _service[releaseVersion][serviceDomain];
|
327
308
|
}
|
328
309
|
|
329
|
-
function
|
330
|
-
return address(
|
331
|
-
}
|
332
|
-
|
333
|
-
function getReleaseManagerAddress() external view returns (address) {
|
334
|
-
return address(_releaseManager);
|
310
|
+
function getReleaseRegistryAddress() external view returns (address) {
|
311
|
+
return address(_releaseRegistry);
|
335
312
|
}
|
336
313
|
|
337
314
|
function getChainNftAddress() external view override returns (address) {
|
338
315
|
return address(_chainNft);
|
339
316
|
}
|
340
317
|
|
318
|
+
function getRegistryAdminAddress() external view returns (address) {
|
319
|
+
return address(_admin);
|
320
|
+
}
|
321
|
+
|
322
|
+
function getAuthority() external view returns (address) {
|
323
|
+
return _admin.authority();
|
324
|
+
}
|
325
|
+
|
341
326
|
function getOwner() public view returns (address owner) {
|
342
327
|
return ownerOf(address(this));
|
343
328
|
}
|
@@ -355,7 +340,6 @@ contract Registry is
|
|
355
340
|
// Internals
|
356
341
|
|
357
342
|
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
358
|
-
// TODO registration of precompile addresses
|
359
343
|
function _register(ObjectInfo memory info)
|
360
344
|
internal
|
361
345
|
returns(NftId nftId)
|
@@ -423,7 +407,7 @@ contract Registry is
|
|
423
407
|
address parentObjectAddress
|
424
408
|
)
|
425
409
|
internal
|
426
|
-
|
410
|
+
pure
|
427
411
|
returns (address interceptor)
|
428
412
|
{
|
429
413
|
// no intercepting calls for stakes
|
@@ -451,12 +435,13 @@ contract Registry is
|
|
451
435
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
452
436
|
function _registerProtocol()
|
453
437
|
private
|
438
|
+
returns (NftId protocolNftId)
|
454
439
|
{
|
455
440
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
456
|
-
|
441
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
457
442
|
|
458
|
-
_info[
|
459
|
-
nftId:
|
443
|
+
_info[protocolNftId] = ObjectInfo({
|
444
|
+
nftId: protocolNftId,
|
460
445
|
parentNftId: NftIdLib.zero(),
|
461
446
|
objectType: PROTOCOL(),
|
462
447
|
isInterceptor: false,
|
@@ -475,7 +460,7 @@ contract Registry is
|
|
475
460
|
returns (NftId registryNftId)
|
476
461
|
{
|
477
462
|
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
478
|
-
|
463
|
+
registryNftId = NftIdLib.toNftId(registryId);
|
479
464
|
NftId parentNftId;
|
480
465
|
|
481
466
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
@@ -488,8 +473,8 @@ contract Registry is
|
|
488
473
|
parentNftId = _protocolNftId;
|
489
474
|
}
|
490
475
|
|
491
|
-
_info[
|
492
|
-
nftId:
|
476
|
+
_info[registryNftId] = ObjectInfo({
|
477
|
+
nftId: registryNftId,
|
493
478
|
parentNftId: parentNftId,
|
494
479
|
objectType: REGISTRY(),
|
495
480
|
isInterceptor: false,
|
@@ -498,7 +483,7 @@ contract Registry is
|
|
498
483
|
data: ""
|
499
484
|
});
|
500
485
|
|
501
|
-
_nftIdByAddress[address(this)] =
|
486
|
+
_nftIdByAddress[address(this)] = registryNftId;
|
502
487
|
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
503
488
|
}
|
504
489
|
|
@@ -521,19 +506,38 @@ contract Registry is
|
|
521
506
|
|
522
507
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
523
508
|
}
|
509
|
+
// depends on _registryNftId and _stakingAddress
|
510
|
+
function _registerStaking()
|
511
|
+
private
|
512
|
+
returns (NftId stakingNftId)
|
513
|
+
{
|
514
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
515
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
516
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
517
|
+
|
518
|
+
_info[stakingNftId] = ObjectInfo({
|
519
|
+
nftId: stakingNftId,
|
520
|
+
parentNftId: _registryNftId,
|
521
|
+
objectType: STAKING(),
|
522
|
+
isInterceptor: false,
|
523
|
+
objectAddress: _stakingAddress,
|
524
|
+
initialOwner: stakingOwner,
|
525
|
+
data: ""
|
526
|
+
});
|
527
|
+
|
528
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
529
|
+
|
530
|
+
// reverts if nftId was already minted
|
531
|
+
_chainNft.mint(stakingOwner, stakingId);
|
532
|
+
}
|
524
533
|
|
525
534
|
/// @dev defines which object - parent types relations are allowed to register
|
526
|
-
|
527
|
-
// 1) EACH object type MUST have only one parent type across ALL mappings
|
528
|
-
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
529
|
-
// 3) DO NOT use REGISTRY as object type
|
530
|
-
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
535
|
+
/// EACH object type MUST have only one parent type across ALL mappings
|
531
536
|
function _setupValidCoreTypesAndCombinations()
|
532
537
|
private
|
533
538
|
{
|
534
539
|
_coreTypes[REGISTRY()] = true;
|
535
540
|
_coreTypes[SERVICE()] = true;
|
536
|
-
_coreTypes[TOKEN()] = true;
|
537
541
|
_coreTypes[INSTANCE()] = true;
|
538
542
|
_coreTypes[PRODUCT()] = true;
|
539
543
|
_coreTypes[POOL()] = true;
|
@@ -545,28 +549,22 @@ contract Registry is
|
|
545
549
|
_coreTypes[STAKING()] = true;
|
546
550
|
_coreTypes[STAKE()] = true;
|
547
551
|
|
548
|
-
|
549
|
-
if(
|
550
|
-
|
551
|
-
// object is registry from different chain
|
552
|
-
// parent is global registry, this contract
|
553
|
-
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
554
|
-
//_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
555
|
-
} else {
|
556
|
-
// we are not global registry
|
557
|
-
// object is local registry, this contract
|
558
|
-
// parent is global registry, object with 0 address or registry from mainnet???
|
552
|
+
// only global registry allowed to register registry (after initialization)
|
553
|
+
if(block.chainid == 1) {
|
554
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true;
|
559
555
|
}
|
556
|
+
|
557
|
+
// contracts with registry parent
|
560
558
|
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
561
|
-
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
562
|
-
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
563
559
|
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
564
560
|
|
561
|
+
// components with instance parent
|
565
562
|
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
566
563
|
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
567
564
|
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
568
565
|
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
569
566
|
|
567
|
+
// objects with coponent parents
|
570
568
|
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
571
569
|
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
572
570
|
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|